LVS负载均衡概念+三种模式
1、LVS负载均衡概念剖解:
1)LVS技术全称:Linux virtual Server ,Linux虚拟机服务器集群,1998由章文嵩博士设计、并且开源的,是中国最早的开源软件项目之一。
2)LVS被称为负载均衡软件(软件级别),用户通过互联网访问LVS VIP地址,LVS根据转发方式和算法将用户,对于用户来讲,是无法看到或者感知后端集群的状态的。
- 转发方式:
- 算法:
3)在目前互联网IT企业中,主流的可伸缩网络架构,都有一个共同的特点:前端调度器,拥有前端调度器就可以实现网络架构的横向、纵向伸缩功能,无限扩容集群的量级。
4)在IP负载均衡技术中,主要是通过三种转发方式来实现请求的转发,三种方式:
- NAT:
- DR:
- TUN:
2、LVS负载均衡NAT方式实战:
1)LVS负载均衡NAT转发方式原理:
用户请求LVS VIP到达director(LVS服务器:LB),director(LVS)将请求的报文的目标IP地址改成后端的realserverIP地址,同时将报文的目标端口也改成后端选定的realserver相应端口,最后将报文发送到realserver,realserver将数据返给director,director再把数据发送给用户。(再次请求都经过director,所以访问大的话,director会成为瓶颈)。
2)LVS NAT模式注意事项:
- LVS服务器至少2块物理网卡,一块连接公网(VIP),一块连接内网;
- 后端Realserver机器的默认网关设置为LVS的内网IP地址;
- 保证LVS内网网卡通常跟Realserver在同一网段;
- LVS NAT模式后端Realserver机器数量不超过30台;
- 用户的请求进入和返回均会经过LVS,LVS会成为瓶颈。
3、LVS NAT模式架构部署:
ipvsadm装方式如下:(源码部署需要和内核整合)
wget -c http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz ln -s /usr/src/kernels/2.6.* /usr/src/linux tar xzvf ipvsadm-1.24.tar.gz cd ipvsadm-1.24 make make install
yum方式安装:(安装完即可,无需启服务)
yum install ipvsadm* -y
1)LVS NAT模式,要求至少两台服务器,一台作为LVS,另一台为Real server后端服务器,而且LVS至少2块网卡(一块为模拟公网,一块为内网网卡。)
2)192.168.1.21Real server后端服务器的网关设置为LVS服务器的内网网卡IP地址:192.168.1.20,如下图所示:


3) LVS外网网卡的IP地址为10.10.10.188,可以作为对外接收用户的访问请求,也可以自行添加其他的外网IP绑定在外网网卡上。
nodprode ip_vs
lsmod |grep -i ip_vs

#添加VIP 10.10.10.188虚拟集群:
ipvsadm -A -t 10.10.10.188:80 -s rr -A 添加虚拟服务器VIP -t TCP协议 -s 指定算法为RR轮询模式

#在虚拟集群10.10.10.188中,加入后端Real server服务器:
ipvsadm -a -t 10.10.10.188:80 -r 192.168.1.21:80 -m -w 100 -a 往虚拟服务器集群中添加真实后端服务器 -t TCP协议 -r 指定后端realserver服务器的IP和端口 -m 指定NAT转发模式 -w weight权重设置

4)LVS NAT模式能够实现数据转发,还要依靠Linux内核开启转发功能,所以需要如下设置:
echo 1 > /proc/sys/net/ipv4/ip_forward

5)查看LVS NAT模式集群配置信息。如图所示:
ipvsadm -L -n

6)查看LVS 参数使用帮助:
ipvsadm --help|more

7)访问效果:(需要关闭防火墙)


4、LVS负载均衡DR方式实战:
1)LVS DR原理:用户请求LVS VIP到达director(LB均衡器),director将请求的报文的目标MAC地址改成后端的realserverMAC地址,目标IP为VIP(不变),源IP为用户IP地址(保持不变),如果Director将报文发送到realserver,realserver检测到目标为自己本地VIP,如果在同一个网段,然后将请求直接返给用户。如果用户跟realserver不在一个网段,则通过网关返回用户,如下图所示:
2)LVS DR模式注意事项:
- LVS服务器和后端服务器realserver必须在同网段(内网、公网);
- LVS修改请亲报文的目标MAC,目标(VIP)不修改的;
- 目标IP(VIP)保持不变。在RS后端配置VIP,lo网卡上面配置(不冲突);
- RS后端服务器的网关指向路由器的下一跳,保证数据能够出去(访问外网);
- 在所有RS后端服务器,抑制ARP广播,禁止VIP响应解析,而且要保证真实网卡不能抑制ARP广播。
5、LVS DR模式架构部署:
1)Real server后端服务器的网关设路由器出口IP地址(正常设置,保持能够上网),另外配置拷贝lo网卡为lo:1,配置一个VIP地址(需要在同网段),掩码设置为4个255,否则网卡起不来(所有流量都会走ens33真实网卡的)配置在lo网卡是为了VIP地址不冲突:
#拷贝网卡: cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-srcipts/ifcfg-lo:1 #编辑 添加如下内容 vim /etc/sysconfig/network-srcipts/ifcfg-lo:1 DEVICE=lo IPADDR=192.168.1.188 NETMASK=255.255.255.255 ONBOOT=yes NAME=loopback #需要重启网卡: ifup lo:1 systemctl restart network

2)在客户端验证pingVIP地址能够通信,发现其MAC地址就是Real server后端服务器的MAC:


3) LVS服务器配置负载均衡,配置网卡IP 可以配置真实网卡的子接口上:(VIP地址需要同网段)添加realserver后端服务器的IP:


#添加VIP 192.168.1.188虚拟集群,加人后端服务器IP:
ipvsadm -A -t 192.168.1.188:80 -s rr ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.20 -g -w 100 ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.21 -g -w 100 #参数解释: -A 大A 添加虚拟集群 -t tcp协议 -s 指定算法rr模式 -a 在虚拟集群中添加后端真实IP -g 指定DR模式 -w 权重 #查看虚拟集群状态: ipvsadm -L -n #删除集群IP: ipvsadm -d -t 192.168.1.188:80 -r 192.168.1.20 ipvsadm -D -t 192.168.1.188:80

4)为了实现均衡,需要在后端服务器上配置抑制arp广播,禁止arp响应解析,而且要保证真实网卡能接受arp广播:
cat /proc/sys/net/ipv4/conf/lo/arp_ignore 默认是0需要运行如下命令: echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce #解释: arp ignore参数(1)含义:只响应目标IP配置在真实网卡; arp announce参数(2)含义:忽略报文得源IP地址,使用主机上能够跟用户通信的真实网卡发送数据。

6、LVS负载均衡TUN方式实战(基于DR,是DR的升级版):
LVS TUN原理:用户请求LVS到达director,director通过IP-TUN加密技术请求的报文的目标MAC地址改成后端的Real serverMAC地址,目标IP为VIP(不变),源IP为用户IP地址(保持不变),然后director将报文发送到realserver,realserver基于IP-TUN解密,然后检测到目标为自己本地VIP,如果在同一个网段,然后将请求直接返回给用户。如果用户跟realserver不在一个网段,则通过网关返回用户。如下图所示:
realserver配置DR脚本:
#!/bin/sh #LVS Client Server VIP=192.168.1.188 case $1 in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" exit 0 ;; stop) ifconfig lo:0 down route del $VIP >/dev/null 2>&1 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped OK" exit 1 ;; *) echo "Usage: $0 {start|stop}" ;; esac
浙公网安备 33010602011771号