LVS = Linux Virtual Server 是 Linux 内核里自带的、高性能、高可用的负载均衡软件,用来把用户请求均匀分给多台后端服务器。
NAT模式
调度器必须启用内核路由转发(net.ipv4.ip_forward=1),RS 网关必须指向 DIP

1、实验目的
实现 LVS NAT 模式的负载均衡调度,验证轮询(RR)、加权轮询(WRR)调度算法的效果,掌握 NAT 模式下 LVS 的核心配置步骤。
2、实验环境
|-------|---------------------|-----------------------------------|
| 服务器名称 | 作用 | IP地址 |
| VS | 调度器,双网卡,侨接外网和服务区 | 内:192.168.23.100 外:192.168.79.100 |
| RS1 | 真实服务器,内网,网关(23.100) | 内:192.168.23.10 |
| RS2 | 真实服务器,内网,网关(23.100) | 内:192.168.23.20 |
3、实验过程
先配置实验环境
在vs上面配置两张网卡,外网eth0:192.168.79.100;内网eth1:192.168.23.100(仅主机)

在RS1上配置单网卡(仅主机)内网:192.168.23.10;网关:192.168.23.100,并启动eth0

在RS2上配置单网卡(仅主机)内网:192.168.23.20;网关:192.168.23.100,并启动eth0

测试结果:可以成功访问

nat实现
VS上安装ipvsadm:
bash
[root@vsnode ~]# yum install ipvsadm -y
开启内核路由功能:
bash
[root@vsnode ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
[root@vsnode ~]# sysctl -p
net.ipv4.ip_forward = 1
编写策略
ipvsadm命令:
-
ipvsadm --C 清空
-
#ipvsadm --R 重载
-
ipvsadm -A -t(tcp)service-address(集群地址) -s scheduler(调度算法)
- -A 添加
- -s wrr (加权论调)
- -w 1 权重为1
- -r 指定真实服务器地址,端口(eg:192.168.23.10:80
- -m nat模式转发
bash
[root@vsnode ~]# ipvsadm -C
[root@vsnode ~]# ipvsadm -A -t 192.168.79.100:80 -s wrr
[root@vsnode ~]# ipvsadm -a -t 192.168.79.100:80 -r 192.168.23.10:80 -m -w 1
[root@vsnode ~]# ipvsadm -a -t 192.168.79.100:80 -r 192.168.23.20:80 -m -w 1

测试结果:

更改权重为2,并测试

规则持久化
利用自定义文件进行持久化
ipvsadm命令:
- ipvsadm -A -t(tcp)service-address(集群地址) -s scheduler(调度算法)
- -A 添加
- -s wrr (加权论调)
- -w 2 权重为2
- -r 指定真实服务器地址,端口(eg:192.168.23.10:80)
bash
#存入文件
[root@vsnode ~]# ipvsadm-save -n
-A -t 192.168.79.100:80 -s wrr
-a -t 192.168.79.100:80 -r 192.168.23.10:80 -m -w 2
-a -t 192.168.79.100:80 -r 192.168.23.20:80 -m -w 1
[root@vsnode ~]# ipvsadm-save -n > /mnt/ipvs.rule
#清除规则
[root@vsnode ~]# ipvsadm -C
#从文件中导入规则
[root@vsnode ~]# ipvsadm-restore < /mnt/ipvs.rule
结果:

利用守护进程进行规则持久化
bash
[root@vsnode ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
#清除规则
[root@vsnode ~]# ipvsadm -C
#重启后自动导入规则
[root@vsnode ~]# systemctl enable --now ipvsadm.service
Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.
结果:

DR模式

1、实验目的
部署 LVS 默认且应用最广泛的 DR 模式集群,解决 VIP 地址冲突问题,验证 DR 模式的调度特性及加权轮询算法的效果。
2、实验环境
|--------|---------|-------------------------------------------------|
| 服务器名称 | 作用 | IP地址 |
| router | 路由器,双网卡 | 内:192.168.23.100 外:192.168.79.100 |
| vsnode | 调度器 | vip:192.168.23.200(lo) dip:1912.168.23.50(eth0) |
| client | 客户端 | 外:192.168.79.99 |
| RS1 | 真实服务器 | 内:192.168.23.10 |
| RS2 | 真实服务器 | 内:192.168.23.20 |
*可将nat模式中的RS1、RS2沿用,将nat中的vsnode调度器的名称改为router为DR模式的路由器沿用
3、实验过程
配置ip
vsnode:配置文件,将lo(192.168.23.200)设为VIP;eth0(192.168.23.50)为dip,网关:192.168.23.100

配置结果:

client:

环境配置:
路由器router,设定内核路由功能,并数据转发策略

RS1:设置vip在lo上
配置:
bash
[root@RS1 ~]# cd /etc/NetworkManager/system-connections/
[root@RS1 system-connections]# cp -p eth0.nmconnection lo.nmconnection
[root@RS1 system-connections]# vim lo.nmconnection
[root@RS1 system-connections]# nmcli c reload
[root@RS1 system-connections]# nmcli c up lo

结果:

arp禁止响应

RS2:设置vip在lo上
配置:
bash
[root@RS2 ~]# cd /etc/NetworkManager/system-connections/
[root@RS2 system-connections]# cp -p eth0.nmconnection lo.nmconnection
[root@RS2 system-connections]# vim lo.nmconnection
[root@RS2 system-connections]# nmcli c reload
[root@RS2 system-connections]# nmcli c up lo

结果:

arp禁止响应

全网可达:

利用防火墙标记解决轮询错误
在RS1和RS2中开启https
bash
[root@RS1 ~]# dnf install mod_ssl -y
[root@RS1 ~]# systemctl restart httpd
[root@RS2 ~]# dnf install mod_ssl -y
[root@RS2 ~]# systemctl restart httpd
在vsnode中添加https的轮询策略

使用火墙标记访问vip的80和443的所有数据包,设定标记为6666,然后对此标记进行负载
bash
[root@vsnode ~]# iptables -t mangle -A PREROUTING -d 192.168.23.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6666
[root@vsnode ~]# ipvsadm -A -f 6666 -s rr
[root@vsnode ~]# ipvsadm -a -f 6666 -r 192.168.23.10 -g
[root@vsnode ~]# ipvsadm -a -f 6666 -r 192.168.23.20 -g
在用户端测试结果:
