nat模式
数据逻辑:
1、客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口(9000port)
2、VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口
3、RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口(9000port)
4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)
5.VS服务器把修改过报文的响应数据包回传给客户端
6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞
注:因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。
nat实战
1、实验环境
Client:单网卡,nat模式
VS服务器:双网卡,vip为nat模式,ip为仅主机模式
RS真实服务器:都为单网卡,仅主机模式
主机名 | ip | vip | 角色 |
Client | 172.25.254.111 | - | 客户端 |
VS | 192.168.0.100 | 172.25.254.100 | LVS服务器 |
RS1 | 192.268.0.101, GW 192.168.0.100 |
- | RS真实服务器1 |
RS2 | 192.168.0.102, GW 192.168.0.100 |
- | RS真实服务器2 |
2、实验步骤
在RS真实服务器上
开启路由转发
安装http
#在RS1下
[root@localhost ~]# dnf install httpd
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# echo rs1 - 192.168.0.101 >/var/www/html/index.html
[root@localhost ~]# curl 192.168.0.101
RS1 - 192.168.0.101
#在RS2下
[root@localhost ~]# dnf install httpd
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# echo rs1 - 192.168.0.102 >/var/www/html/index.html
[root@localhost ~]# curl 192.168.0.102
RS2 - 192.168.0.102
检测网关和防火墙
如果防火墙是开的,会导致实验出现问题(80端口访问不到等)所以省事情可以关掉防火墙(也可以在防火墙设置开通端口)
在LVS服务器上
在LVS上对RS进行检测
开启路由转发模式
[root@work-node1 ~]# echo net.ipv4.ip_forward=1 >/etc/sysctl.conf
[root@work-node1 ~]# sysctl -p
net.ipv4.ip_forward = 1
安装ipvsadm
[root@work-node1 ~]# dnf install ipvsadm
建立ipvsadm集群
在客户机上测试
出现这个错误最终查出原因就是因为lvs调度服务器和客户机防火墙没关导致这种问题!!!所以一定记得关防火墙。
关后:
DR模式
Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行
转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
数据逻辑
1、客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIP的MAC
2、VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC,此时帧中的数据为客户端IP+客户端的MAC+VIP+RS1的MAC
3、RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1的MAC+客户端IP+客户端IP的MAC
特点:
1、Director和各RS都配置有VIP
2、确保前端路由器将目标IP为VIP的请求报文发往Director
3、在前端网关做静态绑定VIP和Director的MAC地址
DR实战
1、实验环境
主机名 | ip | vip | 角色 |
Client | 172.25.254.111 | - | 客户端 |
router | 192.168.0.100 | 172.25.254.100 | 路由器 |
lvs | 192.168.0.200 GW 192.168.0.100 |
lo:192.168.0.100 | 调度器 |
RS1 | 192.268.0.101, GW 192.168.0.100 |
lo:192.168.0.100 | web服务器1 |
RS2 | 192.168.0.102, GW 192.168.0.100 |
lo:192.168.0.100 | web服务器2 |
DR中的配置中,router路由器跟nat配置里面的lvs调度服务器一样是双网卡,第二个仅主机;
lvs调度器是单网卡,仅主机
2、实验步骤
设置回环
RS1
里面id=ens160错了;应该是id=lo
设定主机lo不对外响应
[root@work-node1 system-connections]# echo net.ipv4.conf.lo.arp_ignore = 1 >>/etc/sysctl.conf
[root@work-node1 system-connections]# echo net.ipv4.conf.lo.arp_announce = 2 >>/etc/sysctl.conf
[root@work-node1 system-connections]# echo net.ipv4.conf.all.arp_ignore = 1 >>/etc/sysctl.conf
[root@work-node1 system-connections]# echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf
[root@work-node1 system-connections]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
RS2
lvs-DR
网络配置及建立ipvsadm集群
router
双网卡ip配置
开启内核路由功能
测试
当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题,当第一次访问80被轮询到RS1后,下次访问443仍然可能会被轮询到RS1上。
解决方法:安装mod_ssl并重启httpd
了解内容
除了以上两种集群方式以外还有TUN模式和fullnet模式,读者感兴趣可以查阅了解