LVS-DR 负载均衡群集

目录

一、LVS-DR集群

[1、LVS-DR 工作原理](#1、LVS-DR 工作原理)

2、数据包流向分析

[3、LVS-DR 模式特点](#3、LVS-DR 模式特点)

二、直接路由模式(LVS-DR)

1、准备案例环境

2、配置负载调度器(101)

[(1)配置虚拟IP 地址(VIP)](#(1)配置虚拟IP 地址(VIP))

(2)配置负载分配策略

3、配置节点服务器(102/103)

[(1)配置虚拟IP地址(VIP)](#(1)配置虚拟IP地址(VIP))

[(2)调整proc 响应参数](#(2)调整proc 响应参数)

(3)安装httpd,创建测试网页

4、测试LVS群集


一、LVS-DR集群

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的工作模式之一。

1、LVS-DR 工作原理

LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用,节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。为了响应对整个群集的访问,DirectorServer 与 Real Server 都需要配置 VIP 地址。

2、数据包流向分析

以下为数据包流向分析步骤:

(1)客户端发送请求到 Director Server,请求的数据报文(源 IP 是 CIP,目标IP 是 VIP) 到达内核空间。

(2)Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。

(3)内核空间判断数据包的目标IP是本机 VIP,此时 IPVS 比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAC地址为Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP地址没有改变,然后将数据包发送给 Real Server。

(4)到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过 lo 接口传送给物理网卡然后向外发出。

(5)Real Server 直接将响应报文传送到客户端。

3、LVS-DR 模式特点

  • Director Server 和 Real Server 必须在同一个物理网络中。
  • Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址可以通过互联网对 RIP 进行直接访问。
  • 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
  • Real Server 的网关不允许指向 Director Server IP,即不允许数据包经d Director Server.
  • Real Server 上的 lo 接口配置 VIP 的 IP 地址。

二、直接路由模式(LVS-DR)

1、准备案例环境

在 DR 模式的群集中,LVS 负载调度器作为群集的访问入口,但不作为网关使用;服务器池中的所有节点都各自接入 Internet,发送给客户机的 Web 响应数据包不需要经过 LVS 负载调度器。

这种方式入站、出站访问数据被分别处理,因此LVS负载调度器和所有的节点服务器都需要配置 VIP地址,以便响应对整个群集的访问。考虑到数据存储的安全性,共享存储设备会放在内部的专用网络中。

|-----------|-----------------|-----------------------------------------------------|---------|
| 主机 | 操作系统 | IP地址 | 应用 |
| lvs(101) | openEuler 24.03 | ens160:192.168.10.101/24 ens160:0:192.168.10.172/24 | ipvsadm |
| web1(102) | openEuler 24.03 | ens160:192.168.10.102/24 lo:0:192.168.10.172/32 | httpd |
| web2(103) | openEuler 24.03 | ens160:192.168.10.103/24 lo:0:192.168.10.172/32 | httpd |
| 客户机(105) | openEuler 24.03 | 192.168.10.105 | |

注:LVS-DR也可以使用NFS共享功能,可在上一章的文章中查看,本文不再赘述

2、配置负载调度器(101)

(1)配置虚拟IP 地址(VIP)

采用虚接口的方式(ens160:0),为网卡ens33绑定VIP地址,以便响应群集访问。

复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens160 ifcfg-ens160:0

vim ifcfg-ens160:0
NAME=ens160:0
DEVICE=ens160:0
IPADDR=192.168.10.172

nmcli c reload
nmcli c up ens160

(2)配置负载分配策略

复制代码
ipvsadm -C    #清除原有策略
ipvsadm -A -t 192.168.10.172:80 -s wrr
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2
ipvsadm-save -n

ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

systemctl enable ipvsadm

3、配置节点服务器(102/103)

使用 DR 模式时,节点服务器也需要配置 VIP 地址,并调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突。除此以外,Web 服务的配置与 NAT 方式类似。

(1)配置虚拟IP地址(VIP)

在每个节点服务器,同样需要具有 VIP 地址 192.168.10.172,但此地址仅用作发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。

复制代码
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
或
vim /etc/rc.local    #在文件中添加
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo


chmod +x /etc/rc.local    #给权限

reboot    #重启
ifconfig    #查看是否已有lo:0

(2)调整proc 响应参数

复制代码
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

sysctl -p    #重新加载sysctl.conf文件,查看是否有错误

(3)安装httpd,创建测试网页

复制代码
dnf -y install httpd

echo "test1/2" >/var/www/html/index.html    #修改102/103的网页内容
systemctl start httpd    #启动httpd服务程序
systemclt enable httpd


systemctl stop firewalld
setenforce 0
systemctl disable firewalld

4、测试LVS群集

复制代码
[root@bogon ~]# curl 192.168.10.172
test1
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test1
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test2

然后可以在101负载调度器中,查看节点状态观察当前的负载分配情况。

复制代码
[root@bogon ~]# 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.172:80 wrr
  -> 192.168.10.102:80            Route   1      0          6         
  -> 192.168.10.103:80            Route   2      0          10        
相关推荐
鬼手点金23 分钟前
ReAct 循环
linux·服务器·前端·javascript·react.js·前端框架
l1t1 小时前
修改两处,让SQLite求解数独SQL在datafusion上运行
服务器·数据库·sql
派小心.2 小时前
DAU和MAU怎么计算?先确定活跃事件、用户键和统计窗口
大数据·服务器·前端·人工智能·数据分析
data analyse 4563 小时前
Session数怎么计算?明确会话切分、超时与跨页规则
java·服务器·数据库
先知后行。3 小时前
各种文件系统
linux·服务器·数据库
修船大队长4 小时前
启动阶段 KL15 未接通时触发报文超时监控
运维·服务器·网络
xiaoye-duck4 小时前
《C++ 项目:手写大模型接入 SDK》项目背景、目标及名词解释
服务器·网络·c++·语言模型
RD_daoyi4 小时前
外贸独立站从0到1:平台选择 + 建站流程 + 新手避坑
大数据·服务器·网络·人工智能·搜索引擎·职场和发展
我不会起名字3224 小时前
负载均衡选错:轮询在长连接下的偏斜问题
微服务·负载均衡·grpc·长连接