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

栏目: 服务器 · 发布时间: 5年前

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

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

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

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

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

环境如下:

Centos 7基于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.254
NETMASK=255.255.255.0           #必须写子网掩码信息
NAME=ens33:0              #注意改网卡名称
DEVICE=ens33:0
ONBOOT=yes
[root@LVS network-scripts]# systemctl restart network            #重启网卡使更改生效
[root@LVS network-scripts]# ifconfig        #查询相关IP是否配置正确
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  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<link>
                           ...........................

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  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 = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@LVS ~]# sysctl -p              #刷新一下配置
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.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 InActConn
TCP  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      #编辑该文件,只保留以下四行,并配置VIP
DEVICE=lo:0
IPADDR=200.0.0.254
NETMASK=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<UP,LOOPBACK,RUNNING>  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 ~]#                  #调整/proc响应参数,写入下面六行
                    ...................
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@web1 ~]# sysctl -p                #刷新一下
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

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

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

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

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

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

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

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

四、配置NFS共享存储:

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Is Parallel Programming Hard, And, If So, What Can You Do About

Is Parallel Programming Hard, And, If So, What Can You Do About

Paul E. McKenney

The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the pa......一起来看看 《Is Parallel Programming Hard, And, If So, What Can You Do About 》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具