负载均衡集群之——LVS-DR的部署

Posted 丁CCCCC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡集群之——LVS-DR的部署相关的知识,希望对你有一定的参考价值。

一、DR模式的特点

  • Director Server 和 Real Server 必须在同一个物理网络中
  • RealServer可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问
  • Director Server 作为群集的访问入口,但不作为网关使用
  • 所有的请求报文经由Director Server, 但回复响应报文不能经过Director Server
  • Real Server 的网关不允许指向Director Server IP, 即Real Server发送的数据包不允许经过Director Server
  • Real Server 上的lo接口配置VIP的IP地址

二、LVS-DR中的ARP问题

2.1 问题一

在局域网中有相同的IP地址,会造成各服务器ARP通信的紊乱

解决方法:
-对节点服务器进行处理,使其不响应针对VIP的ARP请求

  • 使用虚接口 lo:0 承载VIP地址
  • 设置内核参数 arp_ignore=1 :系统只响应目的IP为本地的ARP请求

2.2 问题二

RealServer 返回报文经路由器转发,重新封装报文需要先获取路由器的Mac地址
发送ARP请求时,Linux 默认使用IP包的源IP地址作为ARP请求包中的源IP地址,而不适用发送接口的IP地址
路由器收到ARP请求后更新ARP表,原有的VRP对应Director的MAC地址会被更新为VIP对应 RealServer 的MAC地址

解决方法:

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

三、LVS-DR部署

3.1 准备工作

IP分配

DR 负载调度服务器:192.168.253.11

web1 服务器:192.168.253.22

web2 服务器:192.168.253.33

客户机:192.168.253.44

3.2 配置负载调度器

准备工作

关闭防火墙

systemctl stop firewalld
setenforce 0

查看模块信息

modprobe ip_vs

cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

安装软件

yum -y install ipvsadm

在这里插入图片描述

配置虚拟IP地址

配置

# 复制虚拟网卡配置文件
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0

# 修改
vim ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255

开启

# 开启
ifup ens33:0

# 查看
ifconfig ens33:0

在这里插入图片描述

调整 proc 响应参数

由于LVS负载调度器和各个节点公用VIP地址,所以要关闭icmp重定向,不充当路由器

# 末行添加
 vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

# 激活
 sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

配置负载分配策略

开启服务

# 备份策略
ipvsadm-save > /etc/sysconfig/ipvsadm

# 开启
systemctl start ipvsadm.service

配置策略

# 清除原策略,配置新的
ipvsadm -C
ipvsadm -A -t 192.168.253.111:80 -s rr
ipvsadm -a -t 192.168.253.111:80 -r 192.168.253.22:80 -g
ipvsadm -a -t 192.168.253.111:80 -r 192.168.253.33:80 -g

# 查看
ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.253.111:80 rr
  -> 192.168.253.22:80            Route   1      0          0         
  -> 192.168.253.33:80            Route   1      0          0

3.3 配置web节点服务器

关闭防火墙

systemctl stop firewalld
setenforce 0

web1

配置虚拟IP地址

此地址是用来发送web响应数据包的源地址,不需要监听客户机的访问请求,所以用虚接口 lo:0 来承载VIP地址,并加上一条路由记录将访问VIP的数据限制在本地,防止通信紊乱

cp ifcfg-lo ifcfg-lo:0

# 编辑内容
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255
ONBOOT=yes

# 启用
ifup lo:0
ifconfig lo:0

# 添加虚拟ip到lo:0网卡内
route add -host 192.168.253.111 dev lo:0

调整内核ARP响应参数阻止更新VIP的Mac地址,避免发生冲突

vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1  
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

web2

配置和web相似

配置虚拟IP地址

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0

# 编辑内容
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255
ONBOOT=yes

# 启用
ifup lo:0
ifconfig lo:0

# 添加虚拟ip到lo:0网卡内
route add -host 192.168.253.111 dev lo:0

调整内核ARP响应参数阻止更新VIP的Mac地址,避免发生冲突

vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1  
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

3.4 测试

访问 192.168.253.111
在这里插入图片描述
过一会再访问

在这里插入图片描述

以上是关于负载均衡集群之——LVS-DR的部署的主要内容,如果未能解决你的问题,请参考以下文章

集群------LVS-DR负载均衡群集(部署过程图文详解)

LVS负载均衡群集部署——DR模式的介绍及搭建步骤

LVS负载均衡集群--DR模式部署

LVS负载均衡集群--DR模式部署

群集 之 LVS负载均衡(DR模式)

lvs-DR 负载均衡