LVS-DR群集

1、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、数据包流向分析

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

  • 客户端发送请求到 Director Server,请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP) 到达内核空间。
  • Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。
  • 内核空间判断数据包的目标 IP 是本机 VIP,此时 IPVS 比对数据包请求的服务是否 是集群服务,是集群服务就重新封装数据包。修改源 MAC 地址为 Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP 地址没有改 变,然后将数据包发送给 Real Server。
  • 到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数 据包重新封装报文(源 IP 地址为 VIP,目标 IP 为 CIP),将响应报文通过 lo 接口传送给物理网卡然后向外发出。
  • Real Server 直接将响应报文传送到客户端。

1.3、LVS-DR模式特点

下面是 LVS-DR 模式的特点:

  • Director Server 和 Real Server 必须在同一个物理网络中。

  • Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。

  • 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。

  • Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。

  • Real Server 上的 lo 接口配置 VIP 的 IP 地址。


2、案例:直接路由模式(LVS-DR)

2.1、准备案例环境

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

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

2.2、配置负载调度器

下面是配置负载调度器的具体步骤。

  • 配置虚拟IP地址(VIP)

采用虚接口的方式(ens33∶0),为网卡 ens32 绑定 VIP 地址,以便响应群集访问。 配置结果为 ens32 192.168.23.203/24、ens32∶0 192.168.23.199/24。

bash 复制代码
[root@centos7-3 ~]# cd /etc/sysconfig/network-scripts/
[root@centos7-3 network-scripts]# cp ifcfg-ens32 ifcfg-ens32:0
[root@centos7-3 network-scripts]# vim ifcfg-ens32:0
......//省略部分内容
NAME=ens32:0
UUID=51e34ac2-b084-4383-b85e-3986a2ae6982
DEVICE=ens32:0
ONBOOT=yes
IPADDR=192.168.23.199
PREFIX=24
#GATEWAY=192.168.23.2
#DNS1=202.96.128.86
[root@centos7-3 network-scripts]# ifup ens32:0
[root@centos7-3 network-scripts]# ifconfig ens32:0
ens32:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.23.199  netmask 255.255.255.0  broadcast 192.168.23.255
        ether 00:0c:29:bb:17:b8  txqueuelen 1000  (Ethernet)
  • 调整proc响应参数

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

bash 复制代码
[root@centos7-3 ~]# vim /etc/sysctl.conf
......//省略部分内容
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens32.send_redirects = 0
[root@centos7-3 ~]# sysctl -p
  • 配置负载分担策略

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

bash 复制代码
[root@centos7-3 ~]# yum -y install ipvsadm
[root@centos7-3 ~]# ipvsadm -C  //清除原有策略
[root@centos7-3 ~]# ipvsadm -A -t 192.168.23.199:80 -s rr
[root@centos7-3 ~]# ipvsadm -a -t 192.168.23.199:80 -r 192.168.23.204 -g -w 1
[root@centos7-3 ~]# ipvsadm -a -t 192.168.23.199:80 -r 192.168.23.205 -g -w 1
[root@centos7-3 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm  //保存策略
[root@centos7-3 ~]# systemctl enable ipvsadm
[root@centos7-3 ~]# systemctl start ipvsadm

2.3、配置NFS共享存储服务器

  • 安装nfs-utils、rpcbind软件包
bash 复制代码
[root@centos7-6 ~]# yum -y install nfs-utils rpcbind
[root@centos7-6 ~]# systemctl enable rpcbind
[root@centos7-6 ~]# systemctl enable nfs
  • 设置共享目录
bash 复制代码
[root@centos7-6 ~]# mkdir -pv /opt/wwwroot
mkdir: 已创建目录 "/opt/wwwroot"
[root@centos7-6 ~]# vim /etc/exports
/opt/wwwroot 192.168.23.0/24(rw,sync,no_root_squash)
  • 启动NFS服务程序
bash 复制代码
[root@centos7-6 ~]# systemctl start rpcbind
[root@centos7-6 ~]# systemctl start nfs
[root@centos7-6 ~]# netstat -anpt | grep rpc
tcp        0      0 0.0.0.0:34445           0.0.0.0:*               LISTEN      66888/rpc.statd     
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      66889/rpc.mountd    
tcp6       0      0 :::20048                :::*                    LISTEN      66889/rpc.mountd    
tcp6       0      0 :::50337                :::*                    LISTEN      66888/rpc.statd   
  • 查看本机发布的NFS共享目录
bash 复制代码
[root@centos7-6 ~]# showmount -e
Export list for centos7-6:
/opt/wwwroot 192.168.23.0/24

2.4、配置节点服务器

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

  • 配置虚拟IP地址(VIP)

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

bash 复制代码
[root@centos7-4 ~]# cd /etc/sysconfig/network-scripts/
[root@centos7-4 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@centos7-4 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.23.199
NETMASK=255.255.255.255
......//省略部分内容
[root@centos7-4 network-scripts]# ifup lo:0
[root@centos7-4 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.23.199  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

[root@centos7-4 ~]# vi /etc/rc.local   //添加VIP本地访问路由
......//省略部分内容
/sbin/route add -host 192.168.23.199 dev lo:0
[root@centos7-4 ~]# route add -host 192.168.23.199 dev lo:0
  • 调整proc响应参数
bash 复制代码
[root@centos7-4 ~]# 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
[root@centos7-4 ~]# sysctl -p
  • 安装httpd,创建测试网页
bash 复制代码
[root@centos7-4 ~]# yum -y install httpd
[root@centos7-4 ~]# mount 192.168.23.206:/opt/wwwroot /var/www/html/
[root@centos7-4 ~]# vim /var/www/html/index.html
www.aa.com
  • 启动httpd服务程序
bash 复制代码
[root@centos7-4 ~]# systemctl start httpd
[root@centos7-4 ~]# systemctl enable httpd

重复以上步骤,配置节点服务器2。

2.5、测试LVS群集

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

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

  • 查看客户端访问详细信息及状态,便于排查问题
bash 复制代码
[root@centos7-3 ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:47  FIN_WAIT    192.168.23.10:55291 192.168.23.199:80  192.168.23.205:80
TCP 14:59  ESTABLISHED 192.168.23.10:55299 192.168.23.199:80  192.168.23.204:80
TCP 01:57  FIN_WAIT    192.168.23.10:55292 192.168.23.199:80  192.168.23.204:80
TCP 14:59  ESTABLISHED 192.168.23.10:55296 192.168.23.199:80  192.168.23.205:80
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言