1-LVS

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

在用户端测试结果:

相关推荐
雾时之林22 分钟前
Linux--软件管理、源码包安装
linux·服务器·数据库
sxstj4 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
Sylvia33.4 小时前
从轮询到推送:足球数据API架构演进与火星数据技术拆解
java·服务器·网络·python·websocket·架构
天疆说4 小时前
Ubuntu 26.04 下 Intel Meteor Lake 核显 + NPU 驱动配置与 PyTorch NPU 推理实测
linux·pytorch·ubuntu
mounter6255 小时前
突破单点限制:BPF 多跟踪点高效附加机制与新 ftrace 架构解析
linux·ebpf·linux kernel·kernel·ftrace
刘某的Cloud5 小时前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
小此方5 小时前
Re:Linux系统篇(五十四)线程篇 · 七:互斥锁的底层实现原理:从硬件上下文、原子交换指令(Swap)到并发封装实战
linux·运维·驱动开发
郭涤生5 小时前
rootfs 详解与裁剪优化记录
linux·c++·bsp
铁锚6 小时前
解决Ubuntu执行sudo时 unable to resolve host 报错问题
linux·数据库·ubuntu
二宝哥7 小时前
CentOS 7.9 离线安装 Nginx 并配置openssl1.1.1
linux·nginx·centos