LVS-NAT 负载均衡实验从环境搭建到规则持久化
NAT模式环境设定LVS-NAT是一种基于网络地址转换NAT的负载均衡技术主要用于将客户端请求分发到后端多台真实服务器。其核心是通过修改数据包的源或目标IP地址和端口实现请求转发和响应回传。 请求转发过程 客户端请求到达负载均衡器客户端发送请求到负载均衡器的公网IPVIP。 NAT转换负载均衡器将请求包的目标IP从VIP修改为选定的后端真实服务器IPRIP同时记录连接跟踪信息。 转发至真实服务器修改后的数据包被发送到后端服务器服务器处理请求并生成响应。 响应返回过程 服务器响应负载均衡器后端服务器将响应包发送回负载均衡器的本地IP而非客户端IP。 反向NAT转换负载均衡器根据连接跟踪表将响应包的源IP从RIP改回VIP目标IP改为客户端IP。 返回客户端转换后的响应包通过负载均衡器发送回客户端客户端感知不到后端服务器的存在。VS主机中#使用脚本快速设定网络[rootvsnode ~]# vmset.sh eth0 172.25.254.100 vsnode[rootvsnode ~]# vmset.sh eth1 192.168.0.100 vsnode norouteRS1#设定网络[rootRS1 ~]# vmset.sh eth0 192.168.0.10 RS1 noroute[rootRS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100[rootRS1 ~]# nmcli connection reload[rootRS1 ~]# nmcli connection up eth0[rootRS1 ~]# route -nKernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0192.168.0.1000.0.0.0 UG10000eth0192.168.0.00.0.0.0255.255.255.0 U10000eth0#设定访问业务真实数据[rootRS1 ~]# dnf install httpd -y[rootRS1 ~]# systemctl enable --now httpd[rootRS1 ~]# echo RS1 - 192.168.0.10 /var/www/html/index.htmlRS2#设定网络[rootRS1 ~]# vmset.sh eth0 192.168.0.20 RS1 noroute[rootRS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100[rootRS1 ~]# nmcli connection reload[rootRS1 ~]# nmcli connection up eth0[rootRS1 ~]# route -nKernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0192.168.0.1000.0.0.0 UG10000eth0192.168.0.00.0.0.0255.255.255.0 U10000eth0#设定访问业务真实数据[rootRS1 ~]# dnf install httpd -y[rootRS1 ~]# systemctl enable --now httpd[rootRS1 ~]# echo RS2 - 192.168.0.20 /var/www/html/index.html在vs主机中测试环境[rootvsnode ~]# curl 192.168.0.10RS1 -192.168.0.10[rootvsnode ~]# curl 192.168.0.20RS2 -192.168.0.20NAT模式实现方法1.vs#1开启内核路由功能[rootvsnode ~]# echo net.ipv4.ip_forward1 /etc/sysctl.conf[rootvsnode ~]# sysctl -pnet.ipv4.ip_forward1#2.编写策略[rootvsnode ~]# ipvsadm -C#清除所有策略[rootvsnode ~]# ipvsadm -A -t 172.25.254.100:80 -s wrr[rootvsnode ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1[rootvsnode ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1[rootvsnode ~]# ipvsadm -LnIP Virtual Server version1.2.1(size4096)Prot LocalAddress:Port Scheduler Flags -RemoteAddress:Port Forward Weight ActiveConn InActConn TCP172.25.254.100:80 wrr -192.168.0.10:80 Masq100-192.168.0.20:80 Masq100#测试[rootvsnode ~]# for i in {1..10};do curl 172.25.254.100;doneRS2 -192.168.0.20 RS1 -192.168.0.10 RS2 -192.168.0.20 RS1 -192.168.0.10 RS2 -192.168.0.20 RS1 -192.168.0.10 RS2 -192.168.0.20 RS1 -192.168.0.10 RS2 -192.168.0.20 RS1 -192.168.0.10#更改权重[rootvsnode ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 2[rootvsnode ~]# ipvsadm -LnIP Virtual Server version1.2.1(size4096)Prot LocalAddress:Port Scheduler Flags -RemoteAddress:Port Forward Weight ActiveConn InActConn TCP172.25.254.100:80 wrr -192.168.0.10:80 Masq205-192.168.0.20:80 Masq105#测试[rootvsnode ~]# for i in {1..10};do curl 172.25.254.100;doneRS2 -192.168.0.20 RS1 -192.168.0.10 RS1 -192.168.0.10 RS2 -192.168.0.20 RS1 -192.168.0.10 RS1 -192.168.0.10 RS2 -192.168.0.20 RS1 -192.168.0.10 RS1 -192.168.0.10 RS2 -192.168.0.20规则持久化实验过程可以用过打开另外一个shell的并执行监控命令的方式进行观察[rootvsnode ~]# watch -n 1 ipvsadm -Ln#利用自定义文件进行持久化[rootvsnode ~]# ipvsadm-save -n-A-t172.25.254.100:80-swrr-a-t172.25.254.100:80-r192.168.0.10:80-m-w2-a-t172.25.254.100:80-r192.168.0.20:80-m-w1[rootvsnode ~]# ipvsadm-save -n /mnt/ipvs.rule[rootvsnode ~]# ipvsadm -C[rootvsnode ~]# ipvsadm-restore /mnt/ipvs.rule#利用守护进程进行规则持久化[rootvsnode ~]# ipvsadm-save -n /etc/sysconfig/ipvsadm[rootvsnode ~]# ipvsadm -C[rootvsnode ~]# systemctl enable --now ipvsadm.serviceCreated symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.