【RHCE】LVS-NAT模式负载均衡实验

发布于:2025-03-28 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

题目

IP规划

配置IP

RS1

RS2

RS3

LVS

client

配置RS

配置LVS

安装lvs软件

启动ipvsadm服务

lvs规则匹配

ipvsadm部分选项

客户端测试 

总结


题目

使用LVS的 NAT 模式实现 3 台RS的轮询访问,IP地址和主机自己规划。

IP规划

主机 IP地址
RS1-nat模式 192.168.239.11/24
RS2-nat模式 192.168.239.12/24
RS3-nat模式 192.168.239.13/24
LVS-仅主机模式 192.168.10.100/24
LVS-nat模式 192.168.239.8/24
client-仅主机模式 192.168.10.200/24
LVS服务器需要有两块网卡,一块用于虚拟IP,便于用户访问;另一块作为后端真实主机的网关。

配置IP

RS1

[root@localhost ~]# hostnamectl hostname RS1

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.11/24 ipv4.gateway 192.168.239.8 connection.autoconnect yes

[root@localhost ~]# nmcli connection up ens160

RS2

[root@localhost ~]# hostnamectl hostname RS2

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.12/24 ipv4.gateway 192.168.239.8 connection.autoconnect yes

[root@localhost ~]# nmcli connection up ens160

RS3

[root@localhost ~]# hostnamectl hostname RS3

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.13/24 ipv4.gateway 192.168.239.8 connection.autoconnect yes

[root@localhost ~]# nmcli connection up ens160

LVS

[root@localhost ~]# hostnamectl hostname LVS

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.8/24 ipv4.gateway 192.168.239.2 connection.autoconnect yes

[root@localhost ~]# nmcli connection up ens160

//修改网卡名称
[root@localhost ~]# nmcli connection modify 'Wired connection 1' connection.id ens224
[root@LVS ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
ens224  389e5c71-ccd0-3095-8fcc-9fbdf9afd8b9  ethernet  ens224 
ens160  19f573ea-ea7b-3615-841c-ddab4be8eced  ethernet  ens160 
lo      e51ecc39-bd6f-4ffd-8918-61dc2c967574  loopback  lo    

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.10.100/24 ipv4.gateway 192.168.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes

[root@localhost ~]# nmcli connection up ens224

client

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.10.200/24 ipv4.gateway 192.168.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes

[root@localhost ~]# nmcli connection up ens160

[root@localhost ~]# hostnamectl hostname client

配置RS

安装并配置nginx服务(每台RS配置均一致)

//挂载
[root@RS1 ~]# mount /dev/sr0 /mnt

[root@RS1 ~]# dnf install -y nginx

[root@RS1 ~]# echo $(hostname;hostname -I) > /usr/share/nginx/html/index.html 

[root@RS1 ~]# systemctl start nginx

[root@RS1 ~]# systemctl stop firewalld

在LVS上测试nginx服务

配置LVS

安装lvs软件

[root@LVS ~]# mount /dev/sr0 /mnt

[root@LVS ~]# dnf install -y ipvsadm

启动ipvsadm服务

[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm

[root@LVS ~]# systemctl start ipvsadm

lvs规则匹配

[root@LVS ~]# ipvsadm -A -t 192.168.10.100:80 -s rr

[root@LVS ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.239.11:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.239.12:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.239.13:80 -m -w 1

[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.100:80 rr
  -> 192.168.239.11:80            Masq    1      0          3         
  -> 192.168.239.12:80            Masq    1      0          2         
  -> 192.168.239.13:80            Masq    1      0          2        

[root@LVS ~]# systemctl stop firewalld
[root@LVS ~]# systemctl restart ipvsadm

ipvsadm部分选项

选项 含义
-A 添加虚拟服务
-E 修改已有虚拟服务
-D 删除虚拟服务
-a 向虚拟服务添加真实服务器(Real Server)
-e 修改真实服务器配置
-d 从虚拟服务中删除真实服务器
-L 查看当前规则列表(-Ln :数字格式显示)
-t/-u/-f 指定协议类型
-t:TCP服务(例如:-t 192.168.10.100:80)
-u: UDP服务
-f: 防火墙标记(FWM)
-s 指定标度算法(rr轮询、wrr加权轮询、lc最好连接)
-r 指定真实服务器地址
-m/-g/-i 指定转发方式

-m: NAT模式

-g: DR模式(直接路由)
-i: TUN模式
-w 设置权重
-p 启用持久化连接
-C 清空所有规则

配置完成后重启,此时客户端测试发现,不报错了,但却没有响应

[root@client ~]# curl 192.168.10.100
^C

 原因是还需要配置内核转发参数 net.ipv4.ip_forward=1

root@LVS ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

//使修改生效
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1

客户端测试 

总结

1.防火墙firewalld和selinux最好都关了,不然实验会比较麻烦

2.在配置规则时,通过-m参数指定lvs为nat模式

3.需要在LVS服务器上配置内核转发参数