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

DR(直接路由)是三种负载均衡模式其中之一,也是使用最多的一种模式,关于该模式的介绍,可以参考博文:https://blog.51cto.com/14227204/2436891
环境如下:

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重定向参数响应。
准备工作:
1、自行配置除 VIP 以外的地址
2、准备相关软件包
配置如下:
一、配置负载调度器:
采用虚接口的方式为网卡 ens33 绑定 VIP 地址,以便响应群集访问。

[[email protected] /]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[[email protected] network-scripts]# vim ifcfg-ens33:0              # 修改ens33:0,配置VIP
....................
IPADDR=200.0.0.254                                # 修改如下四条,注意网卡名称一致
NETMASK=255.255.255.0
NAME=ens33:0
DEVICE=ens33:0
....................
[[email protected] network-scripts]# ifup ens33:0                 # 启动虚接口
[[email protected] network-scripts]# ifconfig ens33:0                 # 查看相关配置是否成功
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:f1:61:28  txqueuelen 1000  (Ethernet)
[email protected] network-scripts]# ifconfig
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::595f:84d:a379:7b6e  prefixlen 64  scopeid 0x20<link>

调整/proc响应参数(关闭 Linux 内核的重定向参数响应):

[[email protected] /]# 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
[[email protected] /]# sysctl -p                      # 刷新配置使之生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

配置负载均衡策略:

[[email protected] /]# modprobe ip_vs                         # 加载 ip_vs 模块
[[email protected] /]# yum -y install ipvsadm                # 安装 ipvsadm 工具
[[email protected] /]# ipvsadm -C                                  # 清除原有策略
[[email protected] /]# ipvsadm -A -t 200.0.0.254:80 -s rr           # 配置群集VIP及添加相关节点
[[email protected] /]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.2:80 -g -w 1
[[email protected] /]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.3:80 -g -w 1
[[email protected] /]# ipvsadm-save                             # 保存策略
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 200.0.0.2:http -g -w 1
-a -t localhost.localdomain:http -r 200.0.0.3:http -g -w 1
[[email protected] /]# ipvsadm-save > /etc/sysconfig/ipvsadm             # 导出以备份
[[email protected] /]# 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节点服务器:
y因为 web 节点服务器的VIP地址仅用来发送web响应数据包的源地址,并不需要监听客户机的访问请求(由调度器监听并分发)。因此使用虚接口lo:0来承载VIP地址,并添加一条路由记录,将访问VIP的数据包限制在本地。

[[email protected] /]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-lo ifcfg-lo:0
[[email protected] network-scripts]# vim ifcfg-lo:0              # 编辑此文件
.................
DEVICE=lo:0                             # 切记修改网卡名称
IPADDR=200.0.0.254               # 配置 VIP
NETMASK=255.255.255.255                  # 子网掩码需全为1
ONBOOT=yes
[[email protected] network-scripts]# ifup lo:0                # 启动虚接口
[[email protected] network-scripts]# ifconfig lo:0           # 确认以生效
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 200.0.0.254  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[[email protected] /]# route add -host 200.0.0.254 dev lo:0               # 添加 VIP 本地访问路由
[[email protected] /]# route -n
200.0.0.254     0.0.0.0         255.255.255.255 UH    0      0        0 lo
[[email protected] /]# vim /etc/rc.local                         #设置为开机自动添加此条路由
/sbin/route add -host 200.0.0.254 dev lo:0

调整 /proc 响应参数:

[[email protected] /]# 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
[[email protected] /]# 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

安装 httpd 并创建测试网页:

[[email protected] /]# yum -y install httpd              # 安装httpd
[[email protected] /]# echo test1.com > /var/www/html/index.html         # 创建测试文件
[[email protected] /]# systemctl start httpd
[[email protected] /]# systemctl enable httpd

重复以上步骤,配置其他节点服务器,一样的虚接口,一样的/proc,一样的httpd(为了方便验证是否成功,这里我将另一个首页文件改为了test2.com)


若访问到的是同一页面,在排除配置上错误的情况下,可以打开多个网页,或者稍等一会再刷新,因为它可能有一个保持连接的时间,所以会存在延迟
四、配置NFS共享存储:
测试出群集效果后,就需要部署共享存储,以便所有的web节点可以向客户机提供同样的网页文件,具体配置过程已经写在了这篇博文的末:https://blog.51cto.com/14227204/2437018

原文地址:https://blog.51cto.com/14227204/2437934

时间: 2024-12-27 02:04:15

基于DR(直接路由)模式的负载均衡配置详解的相关文章

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

DR(直接路由)是三种负载均衡模式其中之一,也是使用最多的一种模式,关于该模式的介绍,可以参考博文:LVS负载均衡群集详解. DR的工作模式示意图如下: 该模式的原理已经在上面链接的博文中写了下来.现在直接搭建一个基于DR模式的负载均衡群集. 环境如下: 在上面这个环境中,需要解决的问题有下面几点: 1.所有web节点和调度器都配置上VIP:客户端访问VIP(群集的虚拟IP地址)时,若是 调度器将请求转发给web节点,然后由web节点直接去响应客户端,那么客户端在收到 数据包后,发现收到的数据包

CentOS下LVS DR模式负载均衡配置详解

一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Master Director) 对外提供服务的VIP为192.168.1.180 192.168.1.114 LVS从调度器(Backup Director) 平时可以作为RS(真实服务器使用) 192.168.1.104 RS1(真实服务器)   192.168.1.103 RS2(真实服务器)  

Nginx + Tomcat 负载均衡配置详解

Nginx作为反向代理服务器,实现负载均衡.首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器. 在这过程中,对于浏览器来说,并不知道后端的存在, 相对于Tomact来说,当前的客户端是Nginx服务器.这就完成了一个代理的过程. 首先准备三台Linux服务器:IP地址分别为 192.168.1.61  192.168.1.62  192.168.1.63 其中61安装nginx服

nginx负载均衡配置详解

使用负载均衡的话,修改配置http节点如下: #设定http服务器,利用它的反向代理功能提供负载均衡支持http {     #设定mime类型,类型由mime.type文件定义     include             /etc/nginx/mime.types;     default_type    application/octet-stream;     #设定日志格式     access_log        /var/log/nginx/access.log;     #省

apache负载均衡配置详解

准备东西 tomcat Apache server mod_jk-1.2.31-httpd-2.2.3.so 没有可以去网上下载  一搜一大把  这里就不讲怎么下载了 首先安装apache 一. 找到安装目录  modules,把下载的 mod_jk-1.2.31-httpd-2.2.3.so 改名 mod_jk.so 例如:D:\Program Files\apache\modules 然后把mod_jk.so放进modules文件夹里 二. 找到 conf 文件夹 添加文件:workers.

centos 7部署Tomcat及其负载均衡配置详解

Tomcat服务器是一个免费的开源web应用服务器,属于轻量级应用服务器,在中小型系统和并发用户不是很多的场合中被普遍使用,是开发和测试JSP程序的首选.一般来说,Tomcat虽然和apache或者Nginx这些web服务器一样,具有处理HTML页面的功能,然而由于其处理静态页面的能力远不如apache或者Nginx,所以Tomcat一般是作为一个servlet和JSP容器,单独运行在后端,Tomcat应用场景如下: 用户访问的永远是apache/Nginx服务器,然后由apache/Nginx

Nginx的负载均衡方案详解

Nginx的负载均衡方案详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Nginx的负载均衡方案有: 1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 配置的例子如下: http{ upstream sampleapp { server <<dns entry or IP Address(optional with port)>>; server <&l

LVS负载均衡使用详解

一.基本概览介绍 二.LVS的类型及原理 三.LVS调度算法 四.利用DR及NAT实现web负载均衡 一.基本概览介绍 LVS是一个工作在传输层面上的一个负载均衡软件,它是由用户空间的ipvsadm和内核空间的ipvs两个组件组成.其中ipvsadm是用户空间的命令行工具,主要是用于管理集群服务及集群服务上的RS.ipvs是工作与内核上的netfilter的INPUT链上的程序,可以根据用户事先定义的集群实现转发. 二.LVS的类型及原理 LVS的类型可以分为:NAT.DR.TUN.FULLNA

集群之LVS(负载均衡)详解

提高服务器响应能力的方法 scale on  在原有服务器的基础上进行升级或者直接换一台新的性能更高的服务器. scale out  横向扩展,将多台服务器并发向外响应客户端的请求.优点:成本低,扩展架构比较简单. 集群(Cluster),通俗地讲就是按照某种组织方式将几台电脑组织起来完成某种特定任务的这样一种架构. 三种集群类型: LB,Load Balancing 负载均衡:在一定程度上能够实现高可用的目的. HA,High Availability 高可用:实时在线,能够及时响应客户端请求