部署 LVS-DR 群集

发布时间:2024年01月13日

本章内容:

  • 了解 LVS-DR 群集的工作原理
  • 会构建LVS-DR 负载均衡群集

1.1 LVS-DR 群集

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

1.1.1 LVS-DR工作原理

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

1.1.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 直接将响应报文传送到客户端。

1.1.3 LVS-DR 模式特点

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

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

2.1?案例:直接路由模式(LVS-DR)

2.1.1 准备案例环境

????????在 DR 模式的群集中, LVS 负载调度器作为群集的访问入口,但不作为网关使用;服务器池中的所有节点都各自接入 Internet ,发送给客户机的 Web 响应数据包不需要经过 LVS 负载调度器,如图 2.2 所示。
????????这种方式入站、出站访问数据被分别处理,因此 LVS 负载调度器和所有的节点服务器都需要配置 VIP 地址,以便响应对整个群集的访问。考虑到数据存储的安全性,共享存储设备会放在内部的专用网络中。

2.1.2 配置负载调度器

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

服务器如下

1.配置虚拟IP地址(VIP)
????????采用虚接口的方式(ens33 0 ),为网卡 ens33 绑定 VIP 地址,以便响应群集访问。配置结果为 ens33 192.168.182.100/24 ens33 0 192.168.182.11/24
[root@LVS network-scripts]# cd
[root@LVS ~]# cd /etc/sysconfig/network-scripts/
[root@LVS network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@LVS network-scripts]# cat ifcfg-ens33:0
NAME="ens33:0"
DEVICE="ens33:0"
ONBOOT="yes"
IPADDR="192.168.182.11"
NETMASK=255.255.255.255
[root@LVS network-scripts]# ifup ens33:0
[root@LVS network-scripts]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.182.11  netmask 255.255.255.255  broadcast 192.168.182.11
        ether 00:0c:29:e8:c0:2b  txqueuelen 1000  (Ethernet)

[root@LVS network-scripts]# 
2.调整 proc 响应参数
????????对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应。
[root@LVS network-scripts]# vim /etc/sysctl.conf 
[root@LVS network-scripts]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@LVS network-scripts]# cat /etc/sysctl.conf | grep net
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@LVS network-scripts]# 
3.配置负载分配策略
[root@LVS ~]# yum -y install ipvsadm
[root@LVS ~]# ipvsadm -C    //清除原有策略
[root@LVS ~]# ipvsadm -A -t 192.168.182.11:80 -s rr
[root@LVS ~]# ipvsadm -a -t 192.168.182.11:80 -r 192.168.182.101 -g -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.182.11:80 -r 192.168.182.102 -g -w 1
[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm    //保存策略
[root@LVS ~]# systemctl enable ipvsadm.service 

2.1.3 配置节点服务器

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

1.配置虚拟IP地址(VIP)
????????在每个节点服务器,同样需要具有 VIP 地址 172.16.16.172 ,但此地址仅用作发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo 0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。
[root@node01 ~]# cd /etc/sysconfig/network-scripts/
[root@node01 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@node01 network-scripts]# vim ifcfg-lo:0
[root@node01 network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.182.11
NETMASK=255.255.255.255    //注意:子网掩码必须全为1
ONBOOT=yes
[root@node01 network-scripts]# ifup lo:0
[root@node01 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.182.11  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

[root@node01 network-scripts]# vim /etc/rc.local     //添加本地 VIP 访问路由
/sbin/route add -host 192.168.182.11 dev lo:0
[root@node01 network-scripts]# route add -host 192.168.182.11 dev lo:0

2.调整 proc 响应参数

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

[root@node01 ~]# 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@node01 ~]# sysctl -p

3.1 配置NFS共享存储

? ? ? ? NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。

1)安装 nfs-utils,rpcbind 软件包

????????提供 RPC 支持的服务为 rpcbind,提供 NFS 共享的服务为 nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

[root@NFS ~]# yum -y install nfs-utils rpcbind
[root@NFS ~]# systemctl enable nfs
[root@NFS ~]# systemctl enable rpcbind
2)设置共享目录

? ? ? ? NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为“目录位置客户机地址(权限选项)”。例如,若要将文件夹/opt/wwwroot 共享给 192.168.182.0/24 网段使用,允许读写操作,具体配置如下所示
?

[root@NFS ~]# mkdir /aaa
[root@NFS ~]# vim /etc/exports
[root@NFS ~]# cat /etc/exports
/aaa 192.168.182.0/24(rw,sync,no_root_squash)
[root@NFS ~]#
3)启动 NFS 服务程序
[root@NFS ~]# systemctl start rpcbind
[root@NFS ~]# systemctl start nfs
[root@NFS ~]# netstat -anpt | grep rpc
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      64110/rpcbind       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      64297/rpc.mountd    
tcp        0      0 0.0.0.0:51284           0.0.0.0:*               LISTEN      64293/rpc.statd     
tcp6       0      0 :::111                  :::*                    LISTEN      64110/rpcbind       
tcp6       0      0 :::20048                :::*                    LISTEN      64297/rpc.mountd    
tcp6       0      0 :::54240                :::*                    LISTEN      64293/rpc.statd     
[root@NFS ~]# 
4)查看本机发布的 NFS 共享目录
[root@NFS ~]# showmount -e
Export list for NFS:
/aaa 192.168.182.0/24
[root@NFS ~]# 

3.2在客户机中访问 NFS 共享资源

? ? ? ? NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载,对应的文件系统类型为 nfs。既可以手动挂载,也可以加入/etc/fstab 配置文件来实现开机自动挂载。考虑到群集系统中的网络稳定性,NFS 服务器与客户机之间最好使用专有网络进行连接。

1)安装 rpcbind 软件包,并启动 rpcbind 服务

????????若要正常访问 NFS 共享资源,客户机中也需要安装 rpcbind 软件包,并启动 rpcbind 系统服务。另外,为了使用 showmount 查询工具,建议将 nfs-utils 软件包也一并装上

[root@node01 ~]# yum -y install rpcbind nfs-utils
[root@node01 ~]# systemctl enable rpcbind
[root@node01 ~]# systemctl start rpcbind


[root@node02 ~]# yum -y install rpcbind nfs-utils
[root@node02 ~]# systemctl enable rpcbind
[root@node02 ~]# systemctl start rpcbind

????????如果已经安装了 nfs-utils 软件包,则客户机也可以使用 showmount 查看 NFS 服务器端共享了哪些目录,查询格式为“showmount -e 服务器地址”

[root@node01 ~]# showmount -e 192.168.182.105
Export list for 192.168.182.105:
/aaa 192.168.182.0/24
[root@node01 ~]# 

3.3?安装 httpd 创建测试网页

1)安装 httpd,创建测试网页的命令如下:

[root@node01 ~]# yum -y install httpd
[root@node01 ~]# mount 192.168.182.105:/aaa /var/www/html/
[root@node01 ~]# vim /var/www/html/index.html
[root@node01 ~]# cat /var/www/html/index.html 
<h1>Hello Word</h1>
[root@node01 ~]# 

[root@node02 ~]# mount 192.168.182.105:/aaa /var/www/html

2)启用 httpd服务程序

[root@node01 ~]# systemctl start httpd
[root@node01 ~]# systemctl enable httpd

[root@node02 ~]# systemctl start httpd
[root@node02 ~]# systemctl enable httpd

4.1 测试 LVS 群集

????????安排多台测试机,从 Internet 中直接访问 http://192.168.182.11/ ,将能够看到由真实服务器提供的网页内容。如果各节点的网页不同,则不同客户机看到的网页可能也不一样(可以多刷新几次)。
????????在 LVS 负载调度器中,通过查看节点状态可以观察当前的负载分配情况,对于轮询算法来说,每个节点所获得的连接负载应大致相当。

查看那些用户访问了那台机器?

[root@LVS ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:20  FIN_WAIT    192.168.182.1:63834 192.168.182.11:80  192.168.182.102:80
TCP 01:56  FIN_WAIT    192.168.182.1:63835 192.168.182.11:80  192.168.182.101:80
[root@LVS ~]# 

文章来源:https://blog.csdn.net/ls041224/article/details/135566470
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。