负载均衡集群之——LVS-DR的部署
Posted 丁CCCCC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡集群之——LVS-DR的部署相关的知识,希望对你有一定的参考价值。
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的部署的主要内容,如果未能解决你的问题,请参考以下文章