您的位置:首页 > 其它

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

2017-11-05 20:41 946 查看
lvs-DR模式介绍

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



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是和桥接模式的网卡在同一网段)【注意:此命令配置的vip是临时的,在机器重启之后就没有了】2.routeadd−hostvip 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(配置vip到本地回环网卡lo上,并只广播自己)2.routeadd−hostvip 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负载均衡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压力测试工具,测试经过负载均衡后的服务器容量

测试结果:



注意:测试的时候客户机的httpd服务或nginx服务的80端口要是打开的

这里先介绍两种lvs的工作模式及用法,LVS还可以实现持久连接和健康状态监测功能,这也是企业中经常会用到的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: