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  $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

 

posted on 2020-10-15 12:16  蜂蜜log  阅读(300)  评论(0)    收藏  举报

导航