本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

LVS负载均衡(2)LVS工作模式介绍及部署教程

发布:TangLu2020-1-28 14:37分类: 负载均衡 标签: 负载均衡 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的存在。

lvs1.jpg


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。 

lvs2.jpg


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 可以检查一下配置结果

lvsdr.png


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的规则是否有清空

ba93775b133922394baa8c1bbcd2a15b.gif


四、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


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《LVS负载均衡(2)LVS工作模式介绍及部署教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-181.html  [生成短网址]

已有 0/15549 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~