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

在用户端测试结果:

相关推荐
The️1 小时前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
fengtangjiang1 小时前
国产操作系统安装tomcat
linux·运维·tomcat
尘似鹤2 小时前
linux驱动学习---竞争与并发(原子操作与各种锁)
linux·学习
盐焗西兰花2 小时前
鸿蒙学习实战之路-STG系列(4/11)-应用选择页功能详解
服务器·学习·harmonyos
Starry_hello world2 小时前
Linux 信号量
linux·运维
再战300年2 小时前
Samba在ubuntu上安装部署
linux·运维·ubuntu
昱宸星光2 小时前
spring cloud gateway内置网关filter
java·服务器·前端
雨落花开3232 小时前
服务器集群,负载均衡,CDN简介
运维·服务器·负载均衡
晚秋大魔王2 小时前
ubutnu 服务器配置openclaw 使用阿里云百炼模型
运维·服务器·阿里云