目录
题目
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服务器上配置内核转发参数