文章目录
目录
概要
LVS/NAT
lvs/nat网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址)--利用三层功能
++原理++:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
IP规划与题目分析
|--------|-------|------------|---------|---------------------------------------------|
| 主机 | 角色 | 系统 | 网络 | IP |
| client | 客户端 | redhat 9.5 | 仅主机 | 172.25.250.129/24 |
| lvs | lvs | rocky | NAT/仅主机 | 172.25.250.131/24 DIP 172.35.100.200/24 VIP |
| rs1 | nginx | rocky | NAT | 172.25.250.129/24 |
| rs2 | nginx | rocky | NAT | 172.25.250.128/24 |
| rs3 | nginx | rocky | NAT | 172.25.250.127/24 |
RS:Real Server #后端请求处理服务器
VIP:Director Virtual IP #负载均衡器虚拟IP
DIP:Director IP #负载均衡器IP
RIP:Real Server IP #后端请求处理服务器IP
实验步骤
修改ip和主机名就不展示了,可以看我前面的文章
一、nginx配置(rs1、rs2、rs3)
++首先下载nginx++,防止等下修改网关后无法连接外网
[root@rs1 ~]# yum install nginx -y
[root@rs2 ~]# yum install nginx -y
[root@rs3 ~]# yum install nginx -y
第二步启动nginx并进行配置(写入的内容为本机的ip地址,也可自行更改)
systemctl start nginx
echo $(hostname -I) > /usr/share/nginx/html/index.html
第三步重启并检验
systemctl restart nginx
curl 本机IP
++第四步修改网关++ (一定要修改,不然最后客户端拒绝)
nmcli c modify ens160 ipv4.method manual ipv4.addresses 172.25.250.127/24 ipv4.gateway 172.25.250.131 connection.autoconnect yes
nmcli c modify ens160 ipv4.method manual ipv4.addresses 172.25.250.128/24 ipv4.gateway 172.25.250.131 connection.autoconnect yes
nmcli c modify ens160 ipv4.method manual ipv4.addresses 172.25.250.129/24 ipv4.gateway 172.25.250.131 connection.autoconnect yes
二、LVS配置
++首先++ 由于lvs上有仅主机的网卡,所以我们先添加一块网卡。进入虚拟机设置点击添加,添加后选择仅主机(++注意,由于新添加的网卡分配ip的方式是dhcp,若虚拟机在添加网卡之后没有分配ip地址,请启动dhcp,或者后面直接更改,没有仅主机网络先在虚拟机网络中添加++)

第二步下载ipvsadm(先确保虚拟机联网,可以看我前面的文章)
yum install ipvsadm -y
第三步查看网卡配置并修改(如果NAME不一样则修改)
[root@lvs ~]# nmcli c modify 'Wired connection 1' connection.id ens224
[root@lvs ~]# nmcli c show
NAME UUID TYPE DEVICE
ens160 448cc681-b549-35ff-979a-2b57220d864c ethernet ens160
ens224 9cdf1af9-86ab-3318-a810-680d4bee4027 ethernet ens224
lo 9f4232f5-ae88-49d5-8402-a30098bb5317 loopback lo
第四步修改网关(172.35.100为仅主机网段,172.25.250为NAT网段)
nmcli c modify ens160 ipv4.method manual ipv4.addresses 172.25.250.131/24 ipv4.gateway 172.25.250.9 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c modify ens160 ipv4.method manual ipv4.addresses 172.35.100.200/24 ipv4.gateway 172.35.100.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
nmcli c up ens224
++修改后如图++
第五步配置IPVSADM
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl start ipvsadm
[root@lvs ~]# ipvsadm -A -t 172.35.100.200:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.35.100.200:80 -r 172.25.250.127 -m -w 2
[root@lvs ~]# ipvsadm -a -t 172.35.100.200:80 -r 172.25.250.128 -m -w 2
[root@lvs ~]# ipvsadm -a -t 172.35.100.200:80 -r 172.25.250.129 -m -w 2
[root@lvs ~]# systemctl restart ipvsadm
[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@lvs ~]# sysctl -p
++tip:使用ipvsadm -Ln可以查看规则匹配++

++结果如图++
三、客户端配置
客户端只需要修改ip和网关
[root@localhost ~]# hostnamectl hostname client
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 172.35.100.129/24 ipv4.gateway 172.35.100.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@localhost ~]# nmcli c up ens160
[root@client ~]# nmcli d show ens160
四、防火墙和selinux配置
在每台主机上都要进行
[root@lvs ~]# setenforce 0
[root@lvs ~]# systemctl stop firewalld.service
实验结果
++在客户端上curl 172.25.100.200出现不同的结果++

痛点解答
1.若在客户端上curl时出现连接超时,请检查您的lvs的NAT的网卡的IP地址是否为nginx服务器的网关。
2.若配置与步骤都没有问题,在客户端出现拒绝连接,请重启您的虚拟机。
3.若添加网卡后没有出现ip地址请检查虚拟机网络的仅主机网络,或者虚拟机是否为动态路由。
4.请下载服务之前不要修改网关,这回导致虚拟机丢失网络。
5.若虚拟机没有网络可以查看我之前的博客。
6.请将NAT与仅主机网段区分清楚,NAT的网关须在虚拟机网络配置查看,文中172.25.250.2的网关是我自己的,nginx三台服务器的网关一定要与NAT的ip地址一致。
++最后感谢阅览,谢谢您顺手三连,有问题可以留言++
