部署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 负载调度器中,通过查看节点状态可以观察当前的负载分配情况,对于轮询算法来说, 每个节点所获得的连接负载应大致相当。

相关推荐
康熙38bdc6 分钟前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert21 分钟前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
hakesashou1 小时前
python如何比较字符串
linux·开发语言·python
Ljubim.te1 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
cooldream20091 小时前
Linux性能调优技巧
linux
长天一色1 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
醉颜凉2 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
QMCY_jason2 小时前
Ubuntu 安装RUST
linux·ubuntu·rust
慕雪华年2 小时前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
苦逼IT运维2 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops