LVS集群NAT模式

LVS/NAT

LVS/NAT模式原理:(重点理解数据包的改变)

NAT工作模式,简单来说就是传统的NAT,进出流量都需要经过调度器,调度器会选择一个目的服务器,将进入流量的目标IP改写为负载均衡到的目标服务器,同时源IP地址也会改为调度器IP地址。机制简单,但限制大,IPVS需要维护每个映射关系,而且进出入流量都需要经过调度器,实际上这个会成为瓶颈。

LVS集群NAT模式_第1张图片

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模式特性:

  • RS应该使用私有地址,RS的网关必须指向DIP

  • DIP和RIP必须在同一个网段内

  • 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈

  • 支持端口映射

  • RS可以使用任意操作系统

  • 缺陷:对Director Server压力会比较大,请求和响应都需经过director server

LVS-NAT模式部署

实验环境:
一台Director:server1
版本:Red Hat Enterprise Linux Server release 6.5
双网卡:
eth0:172.25.81.1/24 (DIP:内网IP)
eth1:172.25.254.1/24(VIP:外网IP)
两台RealServer:
Server2:172.25.81.2/24(网关必须指向Director的DIP)
Server3:172.25.81.3/24(网关必须执行Director的DIP)
一台Client: 172.25.81.250

server1配置:

<1>添加网卡

LVS集群NAT模式_第2张图片

<2>配置网络

[root@server1 ~]# cd /etc/sysconfig/network-scripts

[root@server1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1

[root@server1 network-scripts]# vim ifcfg-eth1

[root@server1 network-scripts]# /etc/init.d/network restart

LVS集群NAT模式_第3张图片

<3>添加ipvsadm策略

[root@server1 network-scripts]# ipvsadm -C   ##清空之前的所有策略

[root@server1 network-scripts]# ipvsadm -A -t 172.25.254.1:80 -s rr  ##添加地址为172.25.254.1:80的虚拟服务,指定调度算法为轮循

[root@server1 network-scripts]# ipvsadm -a -t 172.25.254.1:80 -r 172.25.81.3:80 -m  ##添加真实服务器,指定传输模式为NAT

[root@server1 network-scripts]# ipvsadm -a -t 172.25.254.1:80 -r 172.25.81.2:80 -m  ##添加真实服务器,指定传输模式为NAT

[root@server1 network-scripts]# /etc/init.d/ipvsadm save  ##保存策略

LVS集群NAT模式_第4张图片

<4>开启路由机制

永久开启:

[root@server1 ~]# vim /etc/sysctl.conf

[root@server1 ~]# sysctl -p

临时开启:

[root@server1 ~]# sysctl -a | grep ip_forward

[root@server1 ~]# sysctl -w net.ipv4.ip_forward=1

[root@server1 ~]# sysctl -p

<5>加载NAT模块

[root@server1 ~]# modprobe iptable_nat

真实服务器server2配置:

<1>添加网关

临时添加:

[root@server2 ~]# route add default gw 172.25.81.1           ##网关指向server1

LVS集群NAT模式_第5张图片

<2>开启httpd服务

真实服务器server3配置:

<1>添加网关

临时添加:

[root@server3 ~]# route add default gw 172.25.81.1           ##网关指向server1

LVS集群NAT模式_第6张图片

<2>开启httpd服务

测试:
客户端测试:

LVS集群NAT模式_第7张图片

调度器调度情况显示:

LVS集群NAT模式_第8张图片

你可能感兴趣的:(LVS集群NAT模式)