LVS-DR模式搭建负载均衡群集(群集)

一、LVS-DR集群概述

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

1、LVS-DR 工作原理

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

工作原理如下图所示:

2、LVS-DR数据包流量分析(同一局域网)

客户端向目标VIP发送请求,负载均衡器接收。

负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送

后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理这个报文。随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出

客户端将收到回复报文。客户端认为得到正常的服务,而不会知道是哪一台服务器处理的

如果跨网段,则报文通过路由器经由 internet 返回给用户

3、LVS-DR中的ARP问题

问题一

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地址。势必会造成各服务器ARP通信的紊乱

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播

只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。

问题二

问题说明:RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。

路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

解决方法:

对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

4、LVS-DR处理问题后的流量分析

客户端发送请求到Director server (负载均衡器),请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间。

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

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

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

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

5、LVS-DR 特性

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

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

Director Server作为群集的访问入口,但不作为网关使用。

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

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

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

实验图:针对同网段内的用户访问;(如果是真实环境,那么还有一个路由器设备;)

先为调度器101设置子接口;即VIP;

设置成vip的地址;

然后保存退出,重启网络查看;

修改该主机的内核配置文件;

再末尾添加以下语句;

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

调整内核参数,禁止转发重定向报文。

由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向。

然后让该语句生效;

然后安装调度器所需的工具;

补充:lvs调度器是针对第四层的;传输层;

配置负载分配策略;

ipvsadm -v

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

配置web节点服务器;此时就可以开启会话同步了,只针对102&&103;

然后设置VIP给lo网卡的子接口;

DR模式配置中有个关键点是将真实主机上的VIP配置在环回接口上,且掩码必须配置成4个255。

解释掩码为255.255.255.255;即192.168.10.172/32;该地址充当了多重角色;网端是192.168.10.172;主机也是192.168.10.172;广播地址也是192.168.10.172;

然后重启网络;查看;

添加路由条目;因为接收是有真实IP地址192.168.10.102接受的,那么就要路由到192.168.10.172vip地址;

因为此语句是临时生效的,需要写入到文件中实现永久生效;

vim /etc/rc.local

将语句写入即可;

调整web服务器的内核参数;

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

安装web服务;

然后分别写网页文件;取消会话同步功能;

102:

103:

然后将两个web服务启动起来;

用客户端进行一个简单的测试;

补充:因为lvs没有健康检查的功能所以;此时节点中的任何一个服务器宕机;那么就会显示以下情况;

那么就要手动把该节点从lvs集群中移除掉;

以下语句作为参考;

ipvsadm -d -t 192.168.10.172:80 -r 192.168.10.102

搭建nfs服务器;105

然后两个web服务器也安装nfs-utils

编辑nfs服务器的配置文件;

首先创建共享目录;

然后进入到两个web服务器进行挂载共享目录;

102同理;

再回到nfs服务器在共享目录下创建测试文件;

再用客户端进行测试;

此时可能会有疑问,就是原来的网页文件去哪里了?

因为挂载了共享目录到首页文件的站点目录下,这时的文件就被盖住了,而不是覆盖了,也不是删除了;如果取消挂载就会再次显形;

先取消挂载然后再进入到站点目录下查看,原来的文件就显形了;

相关推荐
嗨丶王哪跑6 分钟前
网络安全审计技术原理与应用
运维·网络·安全·web安全
斯普信专业组7 分钟前
Skywalking从部署集成到动态调优(上)
运维·skywalking·动态调优
斯普信专业组8 分钟前
Skywalking从部署集成到动态调优(下)
运维·skywalking·动态调优
zrande23 分钟前
Nginx 负载均衡通用方案
nginx·负载均衡
卓小帅的博客1 小时前
跨服务器快速传输数据
运维·服务器
朝阳5811 小时前
nuxt2 发布到线上
运维·服务器
芒果作者2 小时前
cursor注册无需手机号
运维·服务器·ai·cursor
拾光Ծ2 小时前
【Linux】入门指南:基础指令详解Part Two
linux·运维·服务器
峰顶听歌的鲸鱼3 小时前
38.Shell脚本编程2
linux·运维·服务器·笔记·学习方法