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服务器在共享目录下创建测试文件;

再用客户端进行测试;

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

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

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

相关推荐
山东布谷科技官方几秒前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
One_Blanks1 分钟前
渗透测试-Linux基础(1)
linux·运维·安全
爱吃喵的鲤鱼5 分钟前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler17 分钟前
Linux系统-ubuntu系统安装
linux·运维·云计算
向阳121824 分钟前
Dubbo负载均衡
java·运维·负载均衡·dubbo
荒Huang1 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能1 小时前
气爪在自动化装配线中是如何应用的?
运维·自动化
€☞扫地僧☜€3 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
其乐无涯3 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器