部署LVS-DR 群集

一:LVS-DR 集群

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

1.1:LVS-DR工作原理

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

1.2:数据包流向分析

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

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

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

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

  4. Real Server 直接将响应报文传送到客户端。

1.3:LVS-DR模式的特点

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

二:案例分析

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

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

2.1:配置负载调度器

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

采用虚接口的方式(ens33: 0 ) , 为网卡ens33 绑定VIP 地址, 以便响应群集访问。配置结果为ens33 172. 16. 16. 173/24、ens33: O 1 72. 16. 16. 172/24 。

复制代码
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vi ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.172
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network

2 调整proc 响应参数

对于DR 群集模式来说,由千LVS 负载调度器和各节点需要共用VI P 地址, 应该关闭Linux 内核的重定向参数响应。

复制代码
[root@localhost ~]# vi /etc/sysctl.conf
在末尾添加:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p
  1. 配置负载分配策略

配置负载分配策略的命令如下:

复制代码
[root@localhost ~]#yum -y install ipvsadm
[root@localhost ~]#ipvsadm -v           \\查看版本
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 192.168.10.172:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1
[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.10.102:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.10.103:http -g -w 1
[root@localhost ~]# systemctl enable ipvsadm

2.2:配置WEB节点服务器

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

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

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

复制代码
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
修改
DEVICE=lo:0
NETMASK=255.255.255.255           \\子网掩码必须为255.255.255.255
IPADDR=192.168.10.172
ONBOOT=yes
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig
[root@localhost network-scripts]# cd 
[root@localhost ~]# vi /etc/rc.local
添加
/sbin/route add -host 192.168.10.172 dev lo:0
[root@localhost ~]# route add -host 192.168.10.172 dev lo:0

2 调整proc 响应参数。

调整proc 响应参数的命令如下:

复制代码
[root@localhost ~]# vi /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
[root@localhost ~]# sysctl -p

>>>arp_ignore =1

当收到arp请求时,只有ARP请求数据包所请求的IP地址属于当前网卡的IP地址,才会回应ARP响应数据包。

>>>arp_announce = 2

当发送arp请求时,忽略IP数据包的源IP地址,总是选择网卡所配置的首选IP地址作为ARP请求数据包的发送方IP地址

目的:因为lo:0的ip地址和调度器的ens33:0的ip地址是一样的,为了不造成ip冲突,要禁止更新VIP的mac地址。

3 安装httpd , 创建测试网页。

安装httpd , 创建测试网页

4 . 启用httpd 服务程序。

2.3:测试LVS群集

安排多台测试机,从Internet 中直接访问http:/11 72 . 1 6 . 16 . 1 72/, 将能够看到由真实服务器提供的网页内容。如果各节点的网页不同,则不同客户机看到的网页可能也不一样( 可以多刷新几次)。

在LVS 负载调度器中,通过查看节点状态可以观察当前的负载分配情况,对于轮询算法来说, 每个节点所获得的连接负载应大致相当。

相关推荐
大树889 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush49 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5209 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz9 小时前
Maven依赖冲突
java·服务器·maven
不会C语言的男孩11 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈11 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟11 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
凡人叶枫12 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
AC赳赳老秦12 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw