LVS模式二:NAT(Network Address Translation)网络地址转换模式

NAT模式的体系结构如图,在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。
这里写图片描述

一.NAT模式的数据走向:

client–>vs–>rs–>vs–>clent(原路返回)

用户请求为客户端IP到调度器的虚拟IP,(CIP-VIP)—->LVS调度DIRECTOR,在此处调度器会将报文再次封装一个RS的IP头,即此时的数据包是((CIPVIP)+RIP),调度器将再次封装后的数据发到RS,—>用户请求到达RS,
RS解包数据相应处理再发回调度器,由调度器返回客户端。此阶段RS也会在本地LO回环接口上绑定VIP别名并抑制ARP相应,因此RS发送到调度器DIRECTOR的数据包是VIP-CIP,不会是RIP-CIP。
NAT模式下,RS响应后的数据包封装成(VIP-CIP),为什么调度器能收到?是因为NAT模式下,调度器IP必须是RS的网关,RS响应后的数据包必须通过调度器返回客户端。该模式调度器负载较大,一般不用。

二.配置NAT模式的LVS:

1.在server1上加一块网卡eth1,给该网卡加上外网ip,激活网卡

 ip addr add 172.25.254.177/24 dev eth1
 ip link set up eth1

这里写图片描述
3.在server2和server3,添加网关,因为NAT模式下数据包的走向是原路返回,要带着返回的数据包经过调度器回到客户端。

route add default gw 172.25.1.1   #给server2和servere3添加网关
ping 172.25.1.1                   #测试与网关之间是否相通
/etc/init.d/httpd start           #打开server2和server3后端服务器的httpd

4.在server1中打开ip转换功能

sysctl -a | grep ip_forward
查看得到是net.ipv4.ip_forward=0的,我们应该将其改为1

这里写图片描述

这是为什么呢:
sever1收到客户端请求后,得到一个公网的ip,跟目的主机server2和server3不在一个网段,所以如果想要将客户端来的数据包转发给后端服务器,那么必须对这个数据包进行ip转换,再进行数据包转发。出于安全考虑,Linux系统默认是禁止数据包转发的。配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能.

5.在server1上添加调度策略:
ipvsadm -A -t 172.25.254.177:80 -s rr
ipvsadm -a -t 192.168.2.1:80 -r 172.25.1.2:80 -m
ipvsadm -a -t 192.168.2.1:80 -r 172.25.1.3:80 -m

6.在测试端测试curl 172.25.254.177
这里写图片描述
调度器处的情况:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/jay_youth/article/details/81319755