千家信息网

Centos 7基于DR(直接路由)模式的负载均衡配置详解

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,DR(直接路由)是三种负载均衡模式其中之一,也是使用最多的一种模式,关于该模式的介绍,可以参考博文:LVS负载均衡群集详解。DR的工作模式示意图如下:该模式的原理已经在上面链接的博文中写了下来。现在直
千家信息网最后更新 2025年01月22日Centos 7基于DR(直接路由)模式的负载均衡配置详解

DR(直接路由)是三种负载均衡模式其中之一,也是使用最多的一种模式,关于该模式的介绍,可以参考博文:LVS负载均衡群集详解。

DR的工作模式示意图如下:

该模式的原理已经在上面链接的博文中写了下来。现在直接搭建一个基于DR模式的负载均衡群集。

环境如下:

在上面这个环境中,需要解决的问题有下面几点:

1、所有web节点和调度器都配置上VIP:客户端访问VIP(群集的虚拟IP地址)时,若是

调度器将请求转发给web节点,然后由web节点直接去响应客户端,那么客户端在收到

数据包后,发现收到的数据包源地址不是200.0.0.254,那么就会直接丢弃web服务器返回

的数据包,为了解决这一问题,所以需要在所有web节点和调度器的虚接口上配置上200.0.0.254

这个地址,并且通过添加一条路由,将访问VIP的数据限制在本地,以避免通信紊乱。

2、解决关于web节点ARP响应的问题:在所有web节点和调度器上配置上200.0.0.254

这个地址后,当client访问200.0.0.254这个地址时,所有的web节点都有这个地址,所以

都会去进行ARP响应,那么这样一来,可能就造成了client略过调度器直接去访问web节点

了,这样一来,调度器就没有存在的意义了,自然也就达不到负载均衡的效果了,所以需要

关闭web节点的部分ARP应答,在广播200.0.0.254这个地址时,只让调度器去响应,web

节点不响应该广播。

3、解决调度器内核自带的ICMP的重定向优化问题:Linux内核有一个ICMP优化功能,

就是在client第一次访问调度器时,调度器会将请求转发给某一个web节点,在这时,Linux

自带的ICMP优化功能会发现,客户端可以直接和web节点通信,然后就会发送一个数据

包,告诉client,之后所有访问200.0.0.254的数据包,直接发给那个web节点即可,这样之

后所有的访问请求都将直接发送给某一个web节点,而不再经过调度器,这样肯定也是不可

以的,无法达到负载均衡的效果了。所以需要关闭Linux内核的ICMP重定向参数响应。

配置过程如下:

一、配置负载调度器(自行配置环境中除VIP以外的IP地址):

1、配置虚拟IP地址(VIP)

[root@LVS network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0               #在虚接口配置VIP[root@LVS network-scripts]# vim ifcfg-ens33:0           #改动以下配置项           .............IPADDR=200.0.0.254NETMASK=255.255.255.0           #必须写子网掩码信息NAME=ens33:0              #注意改网卡名称DEVICE=ens33:0ONBOOT=yes[root@LVS network-scripts]# systemctl restart network            #重启网卡使更改生效[root@LVS network-scripts]# ifconfig        #查询相关IP是否配置正确ens33: flags=4163  mtu 1500        inet 200.0.0.1  netmask 255.255.255.0  broadcast 200.0.0.255        inet6 fe80::2e1e:d068:9c41:c688  prefixlen 64  scopeid 0x20                           ...........................ens33:0: flags=4163  mtu 1500        inet 200.0.0.254  netmask 255.255.255.0  broadcast 200.0.0.255        ether 00:0c:29:77:2c:03  txqueuelen 1000  (Ethernet)

2、调整/proc相应参数:

[root@LVS ~]# vim /etc/sysctl.conf             #写入下面三行                 ................net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0[root@LVS ~]# sysctl -p              #刷新一下配置net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0

3、配置负载分配策略:

[root@LVS ~]# modprobe ip_vs         #加载ip_vs模块[root@LVS ~]# yum -y install ipvsadm           #安装ipvsadm工具[root@LVS ~]# ipvsadm -C              #清除原有策略[root@LVS ~]# ipvsadm -A -t 200.0.0.254:80 -s rr        #配置群集VIP及添加相关节点[root@LVS ~]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.2:80 -g -w 1[root@LVS ~]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.3:80 -g -w 1[root@LVS ~]# ipvsadm-save                        #保存策略[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm           #导出策略备份[root@LVS ~]# ipvsadm -ln             #确认群集当前策略IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  200.0.0.254:80 rr  -> 200.0.0.2:80                 Route   1      0          0           -> 200.0.0.3:80                 Route   1      0          0         

二、配置web节点服务器:

web节点服务器的VIP地址仅用来发送web响应数据包的源地址,并不需要监听客户机的访问请求(由调度器监听并分发)。因此使用虚接口lo:0来承载VIP地址,并添加一条路由记录,将访问VIP的数据包限制在本地。

1、配置虚拟IP地址(VIP):

[root@web1 ~]# cd /etc/sysconfig/network-scripts/[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0[root@web1 network-scripts]# vim ifcfg-lo:0      #编辑该文件,只保留以下四行,并配置VIPDEVICE=lo:0IPADDR=200.0.0.254NETMASK=255.255.255.255               #注意:子网掩码必须是全为1。也就是4个255。ONBOOT=yes[root@LVS network-scripts]# systemctl restart network            #重启网卡使更改生效[root@LVS network-scripts]# ifconfig        #查询VIP是否配置正确                 ............................lo:0: flags=73  mtu 65536        inet 200.0.0.254  netmask 255.255.255.255        loop  txqueuelen 1000  (Local Loopback)[root@web1 ~]# route add -host 200.0.0.254 dev lo:0              #添加VIP本地访问路由记录[root@web1 ~]# vim /etc/rc.local               #设置开机自动添加这条路由记录                              ................................/sbin/route add -host 200.0.0.254 dev lo:0

2、调整/proc响应参数:

[root@web1 ~]# vim /etc/sysctl.conf                  #调整/proc响应参数,写入下面六行                    ...................net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2[root@web1 ~]# sysctl -p                #刷新一下net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2

3、安装并启动httpd服务(可根据需求选择搭建Nginx还是apache):

[root@web1 ~]# yum -y install httpd             #安装http服务[root@web1 ~]# echo 1111111111111 > /var/www/html/index.html          #准备测试网页,等看到负载均衡的效果后,再挂载共享存储设备。[root@web1 ~]# systemctl start httpd               #启动http服务[root@web1 ~]# systemctl enable httpd           #设置为开机自启动

重复以上三个步骤,配置其他web节点服务器(我这里将另一个web节点的首页文件改为了:2222222222222222)。

三、client访问VIP,以便测试LVS群集:

若访问到的是同一页面,在排除配置上错误的情况下,可以打开多个网页,或者稍等一会再刷新,因为它可能有一个保持连接的时间,所以会存在延迟。

四、配置NFS共享存储:

测试出群集效果后,就需要部署共享存储,以便所有的web节点可以向客户机提供同样的网页文件,具体配置过程已经写在了这篇博文的末尾:Centos 7基于NAT(地址转换)模式的负载均衡配置详解。

配置 节点 地址 调度 数据 均衡 模式 服务 客户 路由 策略 参数 客户端 效果 服务器 问题 内核 接口 文件 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电脑称重管理系统服务器不通 k8s部署超大容量数据库的存储 银行发的网络安全短信 长春市佳路软件开发有限公司 win平板做网站服务器 网络安全我践行的手抄报 rman数据库备份 成都宝拓软件开发公司 服务器端口被关闭不能上网 网络安全知识竞赛测试卷 路由器FTP服务器和客户端配置 网络安全论文1500字大学 在线质谱仪 数据库 宁夏银川中小学生网络安全微视频 新旧数据库数据迁移 db2 数据库clob导出 软件开发与技术服务费税率 绝地大逃杀服务器排名 sql查询数据库关联查询 网络安全 中职组 解析 内蒙古通讯软件开发过程有哪些 苏州软件开发培训学校哪里有 数据库设置自动增长语句 金融软件开发公司宣传语 什么是关系数据库的标准语言 如何连接外部数据库 数据库日志上下文切换 提取数组中不重复的数据库 raw格式实验数据库 8k手抄报网络安全
0