LVS集群-DR模式

标签: lvs

简介

Director routing(直接路由)

Director 分配请求到不同的RS(real server),RS处理请求后直接回应给客户端,这样Director负载均衡器仅处理一半的连接,加大了负载均衡的可伸缩性。采用物理层(MAC),所以需要在同一网段。

工作原理:

分发器收到客户端请求后,根据负载均衡分发规则选取一台RS,选取对方IP对应的MAC地址作为目标MAC,然后将IP包装成帧转发给这台RS,RS发现mac是自己,开始解析报文,处理完成之后,直接发给client。

数据包、数据帧流程:Client-->VIP-->RS-->Client

因为DR基于MAC层,所以不具备路由功能,必须在同一网段,同一广播域。

实验拓扑:

配置分发器DR:

修改网卡IP

DR:设置VIP

#!/bin/bash
cd /etc/sysconfig/network-scripts
#config network
cp ifcfg-ens33 ifcfg-ens33:1
sed -i 's/ens33/ens33:1/' ifcfg-ens33:1
sed -i '/UUID/d' ifcfg-ens33:1
sed -i 's/11/111/g' ifcfg-ens33:1
#restart
systemctl restart network

[[email protected] ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm 
[[email protected] ~]# ipvsadm -A -t 192.168.0.111:80 -s rr
[[email protected] ~]# ipvsadm -a -t 192.168.0.111:80 -r 192.168.0.12 -g
[[email protected] ~]# ipvsadm -a -t 192.168.0.111:80 -r 192.168.0.13 -g

选项:-A   添加虚拟服务器    -t 表示TCP服务 VIP:PORT

           -s指定调度算法           rr表示round-robin轮循

           -a 表示添加realserver地址   -r 表示real server的IP地址

           -g表示DR模式              -m 表示 IP tun模式

查看规则

[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.111:80 rr
  -> 192.168.0.12:80              Route   1      0          0         
  -> 192.168.0.13:80              Route   1      0          0  

配置RS:

[[email protected] network-scripts]# cat ifcfg-lo:1
DEVICE=lo:1
IPADDR=192.168.0.111
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback

启动80端口

[[email protected] ~]# echo 192.168.0.12 > /var/www/html/index.html
[[email protected] ~]# systemctl restart httpd

关闭ARP转发

同一个广播域不允许配置多个VIP,所以让外面网络无法发现这个VIP。修改内核参数,实现接口IP的广播不响应,不广播。

arp_ignore = 1 表示只回答目标IP是访问本地网络对应接口的arp请求

arp_announce = 2 只宣告本机网卡直连网络所在的ip的arp广播

[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore 
[[email protected] ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 

永久生效:

[[email protected] ~]# tail -2 /etc/sysctl.conf 
net.ipv4.conf.ens33.arp_ignore = 1 
net.ipv4.conf.ens33.arp_announce = 2 

[[email protected] ~]# sysctl -p
参数说明:

arp_ignore=1:只回答,目标的IP地址,是访问本网络接口(eth0),的arp请求。

arp_announce=2:在eth0接口上收到一个VIP的arp请求,内核判断这个VIP地址是不是eth0接口上的IP。如果一样,则回复这个包,如果不一样,就丢弃不回应。

RS2:一切同上

客户端访问测试:集群负载成功

 

 

版权声明:本文为LiteBty原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LiteBty/article/details/82429189