1. NAT模式原理图
NAT(Network Address Translation)网络地址转换模式
当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
POSTROUTING链通过选路,将数据包发送给Real Server
Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP
2. LVS-NAT模型的特性
RS应该使用私有地址,RS的网关必须指向DIP
DIP和RIP必须在同一个网段内
请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
支持端口映射
RS可以使用任意操作系统
缺陷:对Director Server压力会比较大,请求和响应都需经过director server
3. 配置NAT模式的LVS
1.在server1上加一块网卡eth1,给该网卡加上外网ip,激活网卡
其中,172.25.254.1 作为内网地址,与真实服务器交流
172.25.8.110 作为对外的地址,接收客户端的请求
[root@server1 ~]# ip addr add 172.25.8.110/24 dev eth1
[root@server1 ~]# ip link set up eth1
[root@server1 ~]# ip addr show
2.在server1添加ipvsadm策略
[root@server1 ~]# ipvsadm -A -t 172.25.8.110:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.8.110:80 -r 172.25.254.2:80 -m
[root@server1 ~]# ipvsadm -a -t 172.25.8.110:80 -r 172.25.254.3:80 -m
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP server1:http rr
-> server2:http Masq 1 0 0
-> server3:http Masq 1 0 0
[root@server1 ~]#
3.在server1开启路由机制
[root@server1 ~]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
[root@server1 ~]# vim /etc/sysctl.conf
[root@server1 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@server1 ~]#
4.在server1加载NAT模块开启服务
[root@server1 ~]# modprobe iptable_nat
[root@server1 ~]#
5.server2,server3作为后端服务器,需要安装httpd服务,设定网关为调度器的对内ip
[root@server2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.25.254.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.25.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
[root@server2 ~]# cat /var/www/html/index.html
i am server2
[root@server2 ~]#
[root@server3 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.25.254.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.25.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
[root@server3 ~]# cat /var/www/html/index.html
i am server3
[root@server3 ~]#
真机测试:
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server3
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server2
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server3
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server2
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server3
[kiosk@foundation8 ~]$ curl 172.25.8.110
i am server2
[kiosk@foundation8 ~]$