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

在用户端测试结果:

相关推荐
独小乐1 分钟前
007.GNU C内联汇编杂谈|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·汇编·单片机·嵌入式硬件·arm·gnu
笨笨饿5 分钟前
42_C语言查找算法
linux·服务器·c语言·人工智能·mcu·学习方法·嵌入式软件
嵌入式×边缘AI:打怪升级日志8 分钟前
Linux 常用命令学习笔记(续):查找、压缩、vi 编辑器与其他命令
linux·笔记·学习
萧行之15 分钟前
Linux 下 Miniconda3 清华源极速安装教程(含报错解决、一键复制)
linux·运维·服务器
ZzzZZzzzZZZzzzz…23 分钟前
MySQL备份还原方法2----LVM
linux·运维·数据库·mysql·备份还原
不会写DN28 分钟前
SQL 单表操作全解
java·服务器·开发语言·数据库·sql
x²+(y-√³x²)²=130 分钟前
Linux 或者 Ubuntu 离线使用 vllm启动大模型
linux·ubuntu·vllm
沉鱼.4435 分钟前
第十五届题目
linux·运维·算法
凤年徐37 分钟前
Linux权限详解:从入门到掌握
linux·运维·服务器
zzzyyy53838 分钟前
进程优先级
linux·运维·服务器