ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

LVS(Linux 虚拟服务器)与keepalived的搭建

2021-04-30 21:58:59  阅读:224  来源: 互联网

标签:负载 LB LVS -- keepalived ipvsadm 192.168 Linux 服务器


LVS/NAT:网络地址转换方式

1、客户端请求数据,目标IP为VIP

2、请求数据达到LB负载均衡服务器,LB根据自己的调度算法将目的地址修改为RIP地址及对应端口,并连接HASH表中记录下这个连接

3、数据报从LB负载均衡服务器到达RS服务器RS3

4、然后RS3进行响应。RS3的网关必须是LB负载均衡服务器的内网IP也就是DIP,然后将数据返回给LB服务器

5、LB收到RS的返回后的数据,根据连接HASH表修改源地址VIP和目的地址DIP

缺点:NAT模式中请求的报文和响应报文都需要通过LB负载均衡服务器,造成LB负载均衡服务器的IO大量增加,

优点:NAT模式中只需要给LB负载均衡服务器配置一个公网IP地址,但是RS服务器得跟LB负载均衡服务器在同一个内网

 

LVS/TUN:隧道方式

工作方式不再是变换地址了,而是将请求包作为数据报进行打包,发给WS服务器,WS服务器进行两次解包,再以此次响应数据包打包直接返回客户端,不再通过LB负载均衡服务器,解决了WS服务器跟LB负载均衡服务器必须在一个内网中的问题,且效率有所提高。

LVS/DR:直接路由方式

1、DR模式将报文直接路由给目标LB负载均衡服务器

2、LB负载均衡服务器根据各个真实服务器的负载情况,连接数多少等,动态选在一台服务器,不修改目标IP和目标端口,不封装IP报文,而是将请求报文的数据帧的目标MAC改为真实服务器的MAC地址

3、然后将修改后的数据帧在服务器组的局域网上发送。因为数据帧的MAC地址是真实服务器的MAC地址,并且又在同一局域网。那么根据局域网的通信原理,真实服务器一定能够收到由LB发出的数据报。真实服务器接收到请求数据包时,解开包头发现目标IP是VIP不是自己的(需要将WS服务器的本地回环接口上面配置为VIP,且为了防止ARP响应冲突,需要将WS服务器VIP的lo接口上的ARP响应关闭掉,这里使用arptables)

4、然后真实服务器做成请求响应,之后根据自己的路由信息将这个响应数据报发回给客户

 

实现DR模式的LVs

首先在node01上运行:

ifconfig  eth0:3 192.168.88.60/24

echo "1" > /proc/sys/net/ipv4/ip_forward 

防止mac不对,但是IP地址正确的情况下,将数据报错误的扔掉。

yum install ipvsadm -y

 

 

在node2 和node 3都需要进行一下操作:

ifconfig  lo:8 192.168.88.60 netmask 255.255.255.255

cd /proc/sys/net/ipv4/conf/eth0/

对arp_ignore和arp_announce文件修改,让虚拟机接收mac地址为自己的数据报

echo 2 > arp_announce

echo 1 > arp_ignore

cd /proc/sys/net/ipv4/conf/all

echo 1 > arp_ignore

echo 2 > arp_announce

安装httpd

yum install httpd -y

在/var/www/html 下创建有标志的文件

service httpd start

 

在node1上运行:

ipvsadm -A -t 192.168.88.60:80 -s rr

ipvsadm -a -t 192.168.88.60:80 -r 192.168.88.62 -g

ipvsadm -a -t 192.168.88.60:80 -r 192.168.88.63 -g

ipvsadm 参数详解:
-C 清除表中所有的记录
-A --add-service在服务器列表中新添加一条新的虚拟服务器记录
-t 表示为tcp服务
-u 表示为udp服务
-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
ipvsadm -A -t 192.168.20.100:80 -s rr

-a --add-server 在服务器表中添加一条新的真实主机记录
-t --tcp-service 说明虚拟服务器提供tcp服务
-u --udp-service 说明虚拟服务器提供udp服务
-r --real-server 真实服务器地址
-m --masquerading 指定LVS工作模式为NAT模式
-w --weight 真实服务器的权值
-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ipip 指定LVS的工作模式为隧道模式
-p 会话保持时间,定义流量呗转到同一个realserver的会话存留时间
ipvsadm -a -t 192.168.20.100:80 -r 192.168.20.102 -g

即可通过访问node1来调度到node2或node3

——————————————————当node1宕机的时候整个集群将无法使用,所以引用keepalived来确保node1宕机后有结点机来替换——————————————————

在node1上运行:

ifconfig eth0:3 down 

ipvsadm -C

yum install keepalived -y

在node4上运行:

yum install keepalived  ipvsadm -y 

在node1上打开/etc/keepalived/keepalived.conf文件

将virtual_ipaddress改为

virtual_ipaddress {

         #label相当于给网卡eth0起别名eth0:3
        192.168.88.60/24 dev eth0 label eth0:3
}

virtual service改为:

virtual_server 192.168.88.60 80 {
    delay_loop 6

    real_server 192.168.88.62 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.88.63 80 {
        weight 1
        HTTP_GET {
            url {
              path / 
              status_code 200
            }
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

}

修改完之后输入scp keepalived.conf node4:`pwd` 将文件传给node4 

最后打开keepalived服务即可


 

 

 

 

 

标签:负载,LB,LVS,--,keepalived,ipvsadm,192.168,Linux,服务器
来源: https://blog.csdn.net/qq_38107043/article/details/115460619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有