LVS的 NAT 模式实验

文章目录

目录

文章目录

概要

IP规划与题目分析

实验步骤

一、nginx配置(rs1、rs2、rs3)

二、LVS配置

三、客户端配置

四、防火墙和selinux配置

实验结果

痛点解答


概要

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地址一致。


++最后感谢阅览,谢谢您顺手三连,有问题可以留言++

相关推荐
碧海银沙音频科技研究院2 小时前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法
EasyDSS6 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS音视频云平台打通门店全流程数字化
网络·音视频·easydss
像风一样自由20207 小时前
52.Docker部署大模型应用从本地开发到服务化运行
运维·人工智能·docker·容器·大模型·智能体
sxgzzn7 小时前
如何利用电缆故障定位在线监测系统提升供电安全?
运维·重构·无人机·开关柜局放在线监测·gis局放在线监测
曦夜日长7 小时前
Git系统篇,Git本地使用(一):从“究极进化版“到三个区域的底层原理
大数据·linux·git·elasticsearch
mengchanmian8 小时前
VSFTP 服务器搭建(Centos)
运维·服务器·centos
shimly1234568 小时前
给断网无 sudo ubuntu22.04 机器安装 nodejs
linux
比兔代理8 小时前
游戏、直播、远程办公遇到动态IP怎么办?
网络
Lzg_na8 小时前
ARP 地址解析协议详解
网络·网络协议
上海广测检测科技有限公司9 小时前
消费类智能联网设备安全分级国标征求意见要点解析:三级五维框架与跨境对标逻辑
网络·经验分享