lvs集群服务的DR模式和NAT模式详解及实验

lvs-DR模式介绍
下图清晰的描述了lvs-DR模型的工作流程,VIP是桥接模式,DIP是仅主机模式,后端服务器(real-server)的网关指向DIP

lvs集群服务的DR模式和NAT模式详解及实验_第1张图片

DR模式不同于NAT模式,DR模式在返回客户端请求的时候不再经过LVS而是直接通过RealServer返回给客户端,这里涉及到一个问题,需要设置网卡别名1

LVS负载均衡DR工作流程
(a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c) IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
(d) 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
(e) RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
(f) 响应报文最终送达至客户端
特点:
1、保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
2、RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
3、RS跟Director Server必须在同一个物理网络中
4、所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
5、不支持地址转换,也不支持端口映射
6、RS可以是大多数常见的操作系统
7、RS的网关绝不允许指向DIP(因为我们不允许他经过director)
8、RS上的lo接口配置VIP的IP地址
lvs-DR模型的实验
实验准备:
1.在lvs-server上:yum install ipvsadm -y
2.grep -i -C 10 “ipvs” /boot/config-version-release.x86_64,查看内核是否支持ipvs模块
3.iptables -F && setenforing 清空防火墙策略,关闭selinux
第一大步:在lvs-server上
1.配置VIP到本地网卡别名(eth0:0),并只广播自己
ifconfig eth0:0 vipnetmask255.255.255.255up(vip)vip2.routeaddhost vip dev eth0:0 (配置vip路由)
3.ipvsadm -A -t 172.17.251.207:80 -s wrr 开启一个基于80端口的虚拟服务,调度方式为wrr(这里的172.17.251.207就是vip的地址,是我们自己手动配上去的)
4.ipvsadm -a -t 172.17.251.207:80 -r 172.17.251.209 -g -w 1 配置web服务后端real server为DR工作方式,权重为1
5..ipvsadm -a -t 172.17.251.207:80 -r 172.17.254.169 -g -w 1 配置web服务后端real server为DR工作方式,权重为1 (注意:-r后面跟的就是real server的地址并且这个地址和lvs-server的dip必须在同一物理网段)
6.vim /etc/sysctl.conf 修改net.ipv4.ip_forward=1
sysctl -p 使其生效
第二大步:
在real-server上配置
1.ifconfig lo:0 vipnetmask255.255.255.255up(viplo,广)2.routeaddhost vip lo:0 配置本地回环网卡路由
3.echo “1” > /proc/sys/net/ipv4/conf/lo/arp_ignore 只回答目标ip地址是来访网络接口本地地址的arp查询请求
echo “2” > /proc/sys/net/ipv4/conf/lo/arp_announce 对查询目标使用最适当的本地地址,在此模式下将忽略这个ip数据包的源地址,并尝试选择能与该地址通信的本地地址
4.关闭arp应答
echo “1” > /proc/sys/net/ipv4/conf/all/arp_ignore 仅在请求的目标ip配置在本地主机的接收到请求报文的接口上时,才给予响应
echo “2” > /proc/sys/net/ipv4/conf/all/arp_announce 避免将接口信息向非本网络进行通告
第三大步:开启web(nginx或apache),php-fpm, mysql 服务
第四大步:
事先建立测试文件并且把httpd或者nginx配置文件中的默认页面改为本测试文件
1、可分别在rs1和rs2建立2个不同内容,统一路径的test.php测试文件,测试负载均衡功能
2、打开http://VIP/index.php ,并在director上用ipvsadm -L -n观察访问连接
3、用另外一台测试机,用ab压力测试工具,测试经过负载均衡后的服务器容量

NAT模式
Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器
NAT模式的数据包流向图示:
lvs集群服务的DR模式和NAT模式详解及实验_第2张图片
LVS负载均衡NAT工作流程
(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
(d). POSTROUTING链通过选路,将数据包发送给Real Server
(e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
(f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP
实验:基于lvs-NAT模式的负载均衡
一,环境准备:一台centos系统做DR,三台实现过基于LNMP的电子商务网站
这里我们使用lvs-serve主机的172.17.251.208(桥接模式的地址)来做vip,192.168.159.129是lvs-server的dip地址
real-server1机器的ip地址为192.168.159.130
real-server1机器的ip地址为192.168.159.128
【特别注意:做real-server的主机只能有一个仅主机的地址,否则当你实验做好时在客户机上curl是curl不到的,也就是说大前提是客户端的主机是不能和real-server主机相连通的,是ping不通的,客户端是在外网中的,服务器是在内网,客户端是不能直接去访问服务器的,如果客户机可以ping 通服务器那这个lvs-server就没有它存在的意义了】
二,安装步骤
在lvs-server 上
1.域名yum install ipvsadm -y 安装lvs管理软件
2.grep -i -C 10 “ipvs” /boot/config-version-release.x86_64 查看是否支持ipvs模块
3.iptables -F && setenforing 清空防火墙策略,关闭selinux
三,配置基于NAT模式的LVS负载均衡集群:
在lvs-server上:
1、ipvsadm -A -t 172.17.251.208:80 -s wrr

开启一个基于80端口的虚拟服务,调度方式为wrr

2、ipvsadm -a -t 172.17.251.208:80 -r 192.168.159.130:80 -m -w 1

配置web服务后端real server 为nat工作方式 权重为1

3、ipvsadm -a -t 172.16.100.1:80 -r 192.168.159.128:80 -m -w 1

配置web服务后端real server 为nat工作方式 权重为1

4、修改内核配置,开启路由转发

vim /etc/sysctl.conf 修改 net.ipv4.ip_forward=1 #sysctl -p 使其生效

特别配置:
在real server上配置指向lvs-server上的 dip的网关
route add default gw 192.168.159.129
开启web、php-fpm、mysql服务
四、LVS集群部署和验证
1、可分别在rs1和rs2建立2个不同内容,统一路径的test.php测试文件,测试负载均衡功能
2、打开http://VIP/index.php ,并在director上用ipvsadm -L -n观察访问连接
3、用另外一台测试机,用ab压力测试工具,测试经过负载均衡后的服务器容量
测试结果:
lvs集群服务的DR模式和NAT模式详解及实验_第3张图片
注意:测试的时候客户机的httpd服务或nginx服务的80端口要是打开的
这里先介绍两种lvs的工作模式及用法,LVS还可以实现持久连接和健康状态监测功能,这也是企业中经常会用到的

你可能感兴趣的:(linux,运维)