1.NAT模式工作原理(在三层)
多目标的DNAT:通过修改请求报文的目标IP地址(同时可能会修改目标端口),至挑选出某RS的RIP地址实现转发
1.RS和DIP应该使用私网地址,且RS的网关要指向DIP
2.请求和响应报文都要经由director转发,极高负载的场景中,director可能会成为系统瓶颈
3.RS可以使用任意OS
4.RS的RIP和Director的DIP必须要在同一IP网络:RS的网关要指向DIP
工作流程:
(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
©. 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
NAT模式负载均衡搭建
准备工作:
准备三台虚拟机server1,2,3,并配置好yum源,并且安装好ipvsadm套件
将server1上有两块网卡将其作为lvs调度器,server2,3作为后台服务器
为server1两块网卡分别配置ip 172.25.24.1 和172.25.254.124
server2,3 分别为 172.25.24.2和172.25.24.3
在调度器server1上
1)开启路由机制
[root@server1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@server1 ~]# sysctl -p
2)加载nat模块
##如果不加载此模块,也可以在第一次访问时成功,但是会在再次访问时出现延迟过长,或访问超时现象
[root@server1 ~]# modprobe iptable_nat
3)加载rule
[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -A -t 172.25.254.124:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.254.124:80 -r 172.25.24.2:80 -m
[root@server1 ~]# ipvsadm -a -t 172.25.254.124:80 -r 172.25.24.3:80 -m
[root@server1 ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
在后台服务器server2,3上
1)添加网关
因为NAT模式下数据包的走向是原路返回,要带着返回的数据包经过调度器会到客户端
[root@server2 ~]# route add default gw 172.25.24.1 ##添加网关
[root@server2 ~]# ping 172.25.254.24 ##查看能否和测试机连通
2)下载httpd服务,并分别设置默认发布页内容为server2,3
[root@server2 ~]# yum install httpd -y
[root@server2 ~]# vim /var/www/html/index.html
server2
[root@server2 ~]# /etc/init.d/httpd start
测试:
在测试机172.25.254.24上尝试访问172.25.254.124