NAT方式原理图

- 当用户请求到达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
LVS-NAT模型的特性
- RS应该使用私有地址,RS的网关必须指向DIP
- DIP和RIP必须在同一个网段内
- 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
- 支持端口映射
- RS可以使用任意操作系统
- 缺陷:对Director Server压力会比较大,请求和响应都需经过director server
以下实验在7.3主机上进行
调度器设置:
1、设置两个不同网段的ip,一个用来接收客户端的请求,另一个作为真实服务器的网关。
[root@lucky2 ~]# ip addr add 172.25.254.100/24 dev eth0
[root@lucky2 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:93:3f:10 brd ff:ff:ff:ff:ff:ff
inet 172.25.35.2/24 brd 172.25.35.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.25.254.100/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe93:3f10/64 scope link
valid_lft forever preferred_lft forever
2 安装lvs管理工具——ipvsadm服务
[root@lucky2 ~]# yum install ipvsadm -y
3 添加vip以及真实服务器到调度器
[root@lucky2 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
#-A: 添加vip。 -t: tcp协议 。-s: lvs调度算法 rr 轮叫调度
[root@lucky2 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.35.3:80 -m
[root@lucky2 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.35.4:80 -m
添加真实服务器,使用nat模式的时候,后面的参数为 -m
[root@lucky2 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP lucky2:http rr
-> lucky3:http Masq 1 0 0
-> lucky4:http Masq 1 0 0
4 开启调度器的内核路由功能
[root@lucky5 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
[root@lucky5 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
5 加载模块
modprobe iptable_nat
如果不加载此模块,也可以在第一次访问时成功,但是会在再次访问时出现延迟过长,或访问超时现象
真实服务器设置:
两台真实服务器需要安装httpd服务并设置号资源,设定网关为调度器的对内ip
[root@lucky3 ~]# yum install httpd -y
[root@lucky3 ~]# cd /var/www/html/
[root@lucky3 html]# vim index.html
[root@lucky3 html]# cat index.html
lucky3
[root@lucky3 html]# systemctl start httpd
[root@lucky3 html]# systemctl enable httpd 需要注意的是两台服务器所作的操作都是一样的,在这里是为了实验明显才将两个后端服务器index.html文件内容不一样的
测试:
[root@foundation35 ~]# curl 172.25.254.100
lucky3
[root@foundation35 ~]# curl 172.25.254.100
lucky4
[root@foundation35 ~]# curl 172.25.254.100
lucky3
[root@foundation35 ~]# curl 172.25.254.100
lucky4
本文深入解析了LVS-NAT模型的工作原理,包括数据包如何在DirectorServer和RealServer间流转,以及该模型的特性与缺陷。实验部分展示了如何在具体环境中配置LVS-NAT,实现负载均衡。
1326

被折叠的 条评论
为什么被折叠?



