使用LVS的 NAT 模式实现 3 台RS的轮询访问

架构图,需要三台RS进行轮询访问,则架构图会和下图有点差距。

节点规划

主机 角色 系统 网络 IP

client client redhat 9.5 NAT 192.168.19.100/24

lvs lvs redhat 9.5 NAT、仅主机 192.168.111.111.27/24

nginx rs1 redhat 9.5 NAT 192.168.111.111.7/24

nginx rs2 redhat 9.5 NAT 192.168.111.111.17/24

nginx rs3 redhat 9.5 NAT 192.168.111.111.27/24

注意:本实验所有防火墙均关闭。setenforce 均为0

配置nginx

默认rs三台主机都下载nginx。

rs1

1.写入页面

root@rs1 \~# echo $(hostname -I) > /usr/share/nginx/html/index.html

2.重启服务

root@rs1 \~# systemctl restart nginx

3.测试nginx

root@rs1 \~# curl 192.168.111.17

192.168.111.17

注:其他两台均相同操作

配置lvs

修改虚拟网络

lvs服务器有两块网卡,第一块网卡采用仅主机模式,IP 地址为 192.168.19.200,第二块网卡
采用 NAT 模式,IP 地址为192.168.111.8

root@localhost \~ # hostnamectl hostname lvs
root@localhost \~ # nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.19.200/24 ipv4.gateway 192.168.19.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
root@localhost \~ # nmcli c up ens160

安装软件

为了防止等会不能上外网先把 ipvsamd 软件安装。
root@lvs \~ # dnf install ipvsadm -y

配置 NAT模式的网卡

root@lvs \~ # nmcli c modify ens224 ipv4.method manual ipv4.addresses
192.168.111.8/24 ipv4.gateway 192.168.111.2 connection.autoconnect yes
root@lvs \~ # nmcli c up ens224
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/5)

做 LVS 规则匹配

root@lvs \~ # ipvsadm -A -t 192.168.19.200:80 -s rr

为规则增加 RS

root@lvs \~ # ipvsadm -a -t 192.168.19.200:80 -r 192.168.111.7:80 -m -w 2
root@lvs \~ # ipvsadm -a -t 192.168.19.200:80 -r 192.168.111.17:80 -m - w 2
root@lvs \~ # ipvsadm -a -t 192.168.19.200:80 -r 192.168.111.17:80 -m - w 2
root@lvs \~ # ipvsadm -Ln
IP Virtual Server version 1 .2.1 (size = 4096 )
Prot LocalAddress:Port Scheduler Flags

  • > RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP 192 .168.10.200:80 rr
  • > 192 .168.111.7:80 Masq 2 0 0
  • > 192 .168.72.111:80 Masq 2 0 0
    -> 192.168.72.111:80 Masq 2 0 0

配置内核参数

root@lvs \~ # echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
配置好后执行如下的命令来生效。
root@lvs \~ # sysctl -p

配置客户端

root@localhost \~ # hostnamectl hostname client
root@localhost \~ # nmcli c modify ens160 ipv4.method manual
ipv4.addresses 192.168.19.100/24 ipv4.gateway 192.168.19.2 ipv4.dns
223.5.5.5 connection.autoconnect yes
root@localhost \~ # nmcli c up ens160

功能测试

启动ipvsadm来测试服务

root@lvs \~# ipvsadm-save > /etc/sysconfig/ipvsadm

root@lvs \~# systemctl start ipvsadm

在客户端测试

root@client \~# curl 192.168.19.200
192 .168.111.7
root@client \~ # curl 192.168.19.200
192 .168.111.17
root@client \~ # curl 192.168.19.200
192 .168.111.27
root@client \~ # curl 192.168.19.200
192 .168.111.7
root@client \~ # curl 192.168.19.200
192 .168.111.17
root@client \~ # curl 192.168.19.200
192 .168.111.27
root@client \~ # curl 192.168.19.200
192 .168.111.7

相关推荐
骑上单车去旅行19 分钟前
openEuler 22.03 离线源码编译 Zabbix 7.0.27 完整最终整合手册
linux·运维·服务器·zabbix
AC赳赳老秦35 分钟前
OpenClaw + 云数据库运维:自动备份、扩容、迁移 RDS/MySQL 云数据库
运维·开发语言·数据库·人工智能·python·mysql·openclaw
向日葵.37 分钟前
linux & qnx & git 命令 1
linux·运维·服务器
MXsoft6181 小时前
**非Agent部署:网络设备分钟级纳管的技术解析**
运维·自动化
XLYcmy1 小时前
一个基于 Python 的轻量级 LLM(大语言模型)API 客户端程序:从API交互到LLM应用架构
服务器·python·ai·llm·prompt·agent·token
艾德金的溪1 小时前
windows安装CC Switch
运维·ai
极客先躯1 小时前
高级java每日一道面试题-2026年02月09日-实战篇[Docker]-Docker 容器有哪些安全风险?如何缓解?
java·运维·网络·安全·docker·容器
yuanzhengme1 小时前
Ollama【部署 07】搭建本地智能体的简单说明(局域网离线部署Ollama+模型迁移+Docker部署AnythingLLM)
运维·docker·容器·大模型·ollama·本地智能体
似水এ᭄往昔1 小时前
【Linux系统编程】--虚拟地址空间
linux·服务器
不会C语言的男孩1 小时前
Linux 系统编程 · 第 3 章:文件 I/O 基础
linux·服务器