【负载均衡】负载均衡组件LVS的工作模式介绍及部署教程
一、LVS的三种工作模式
1、NAT(网络地址转换)模式
NAT(Network Address Translation)是一种外网和内网地址映射的技术。每台Real Server的网关将是LVS服务器的地址,用户请求的数据进出都要经过LVS(所以它容易成为瓶颈)。当LVS服务器收到用户请求时会进行目标地址转换(DNAT),将请求IP修改为后端Real Server的IP,此时客户端IP不变,目标IP是VIP。Real Server响应用户请求时,需要再让LVS做源地址转换(SNAT),将返回的数据包源地址改为VIP。此时目标IP是客户端IP,而源IP是VIP,可以正常响应客户端请求。而对客户端来说仿佛是LVS进行的响应,无法感知到后端Real Server的存在。
2、DR(直接路由)模式
客户端请求依然由LVS接受,但是最终数据包由Real Server传输给用户,不再经过LVS转发,避免了NAT模式的瓶颈问题。DR模式的工作过程比较复杂:
当用户发起请求时,源地址是客户端IP,目标地址是VIP;而LVS调度器将请求转发给Real Server处理后再发送给用户,这个时候源IP是RIP,目标地址是客户端IP,但是客户端一开始并没有请求RIP,而用RIP去响应请求时CIP是不会接受的,所以就需要用VIP响应请求。在DR模式下LVS和Real server都需要配备一样的VIP(VIP的MAC地址和物理网卡是一样的)(Real Server通过将VIP绑定在loopback实现)。由于一个网段内多台服务器出现同样IP地址会引起冲突,所以要在LVS服务器上设置一个VIP一个DIP,而每个Real Server也有一个RIP和一个VIP,并且将Real Server的VIP地址做了隐藏和ARP抑制,不会应答广播,只在响应CIP时作为源地址使用。当产生请求时LVS将目标MAC地址修改为某台Real Server的MAC,该包就会被转发到相应的Real Server处理,此时源IP和目标IP都没变。Real Server收到LVS转发来的包时发现MAC是自己的,IP也是自己的,于是这个包被合法地接受。当Real Server返回响应时,只要直接向CIP返回即可,不再经过LVS。
3、TUN隧道模式
使用较少,暂略
二、安装LVS工具——ipvsadm
1、使用yum安装LVS是最好的实现方式
编译安装参考本站文章:《LVS负载均衡(3)编译安装ipvsadm1.26教程》,对于LVS这种功能性软件,在生产中用yum安装也是没有问题的。yum install ipvsadmin -y
2、安装好以后就可以使用ipvsadm进行管理了,该命令用法和iptables很像ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
#命令示例
ipvsadm -A -t 207.175.44.110:80 -s rr #给LVS服务器增加一个VIP,算法为rr模式
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m -w 1 #为VIP增加一个真实服务器的ip地址,并采用nat工作模式,权重为1
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m -w 2 #为VIP增加一个真实服务器的ip地址,并采用nat工作模式,权重为2
3、ipvsadm命令常用选项释义
-A:增加LVS的VIP记录
-a:增加real server记录
-E:修改LVS记录
-e:修改real server列表信息
-D:删除一条LVS记录
-d:删除real server列表信息
-R:恢复虚拟服务器规则
-S:保存虚拟服务器规则,或者server ipvsadm save,和iptables一样
ipvsadm -Sn > /root/lvsrules.txt #保存规则
cat /root/lvsrules.txt | ipvsadm -R #恢复规则
-C:清除虚拟服务器列表所有记录
-L:显示列表信息,和iptables一样
-t | u:指定LVS提供tcp或者是udp服务,后面常跟选项 real-server-ip:port或者virtual-server-ip:port
-s:指定LVS的负载调度算法,后面接详细的调度算法,如-s rr | wrr | lc | wlc,不指定的话默认是wlc
-p [timeout]:指定一个服务持续时间,用于会话保持,当同个用户重复请求时,给同一个real server处理,默认是300秒
-r:指定real server的ip地址
-i:LVS工作在隧道模式下
-m:LVS工作在NAT模式下
-g:LVS工作在DR模式下
-w:指定real server的权重
-n:不进行dns解析
三、LVS DR模式搭建流程
模拟环境如下:
DIP:192.168.36.10
VIP:192.168.36.100
RIP:192.168.36.15、192.168.36.16
1、LVS服务器需要配置的部分:
首先在LVS服务器外网卡上新增一个VIP,并且添加一个路由条目,指明接收到该VIP的请求后交给谁处理
ifconfig eth0:1 192.168.36.100 broadcast 192.168.36.100 netmask 255.255.255.255 up #添加VIP,广播地址和VIP一样,子网掩码不要写错
route add -host 192.168.36.100 dev eth0:1 #如果要请求192.168.36.100需要经过eth0:1这个网卡
ping 192.168.36.100 #验证
使用ipvsadm工具添加LVS规则ipvsadm -A -t 192.168.36.100:80 -s rr #指定LVS调度器的地址以及算法,-t代表tcp协议
ipvsadm -a -t 192.168.36.100:80 -r 192.168.36.15:80 -g #指定Real Server的地址以及工作模式,-g代表DR模式
ipvsadm -a -t 192.168.36.100:80 -r 192.168.36.16:80 -g
使用ipvsadm -L 可以检查一下配置结果
2、每台后端服务器需要配置的部分:
在每台Real Server上绑定VIP到回环网卡上,并增加路由条目
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up route add -host $VIP dev lo:0
在每台Real Server上做ARP抑制,其中2个参数为arp_ignore、arp_announce。
arp_ignore(接收到ARP请求后的响应级别):
0:本地所有网卡中,如果有对应的IP地址就会响应请求
1:只会响应目标IP为接收网卡所配置的IP地址的请求。以此实现后端服务器回环地址上的IP不去响应广播
arp_announce(向外回应自己网络地址):
0:本地所有网卡上的IP地址都可以向外响应
1:尽量使用与本地网卡所匹配的地址向外响应
2:只使用与本地接口匹配的网络地址向外响应,效果和arp_ignore类似也实现了避免响应
ARP抑制的配置方法(也可以配置在/etc/sysctl.conf中):echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
访问VIP地址测试,可以看到分别访问到了两台不同的服务器,实际生产环境中两个服务器上文件应该是一致的,这里为了测试效果,所以放了不同的文件区分,如果无法正常打开页面,查看下iptables的规则是否有清空
四、LVS NAT模式部署
使用LVS NAT模式需要保证集群中的服务器处于NAT网络中,下面是Centos部署NAT的方法
1、在每台Real Server上将网关设置为LVS服务器地址,因为数据需要从LVS服务器经过route add default gw 192.168.36.10
2、在LVS服务器上开启网络转发echo net.ipv4.ip_forward =1 > /etc/sysctl.conf
sysctl -p
3、使用iptables转发iptables -t nat -A POSTROUTING -s 192.168.36.0/24 -o ens33 -j MASQUERADE
4、NAT模式下无需配置ARP抑制ifconfig ens33:1 192.168.36.100 netmask 255.255.255.0 up
ipvsadm -A -t 192.168.36.100 -s rr
ipvsadm -a -t 192.168.36.100 -r 192.168.36.110 -m
ipvsadm -a -t 192.168.36.100 -r 192.168.36.120 -m
评论