LVS集群-DR模式

DR模式实际拓扑图及工作DR方式工作流程图:

Direct Routing(直接路由)
director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing由于采用物理层(修改MAC地址)技术,因此所有服务器都必须在一个网段中。
在这里插入图片描述

LVS DR模式工作原理:
MAC转换过程
实例场景设备清单: director分发器,IP: 192.168.1.70, VIP : 192.168.1.63
在这里插入图片描述
client基本信息: IP:192.168.1.101向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:
在这里插入图片描述
Director分发器根据负载均衡算法选择一台active的realserver(假设是192.168.1.62),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:
在这里插入图片描述
realserver(192.168.1.62)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:
在这里插入图片描述
如果client与VS同一网段,那么client(192.168.1.101)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
归纳一下:
1)接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;
2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;
3)在hash table中记录连接信息。
数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client
以上就是对LVS/DR模式的原理介绍

LVS-DR模式工作原理:
1), DR模式, 全程目标地址, 原地址不变, 因为DR模式工作于2层
2), 请求报文从客户端发出:
原地址: CIP 源MAC CMAC 目标地址: VIP 目标mac: xxx
3), 请求报文到达机房防火墙之后, 会在防火墙的内网口进行广播, 找到VIP在哪儿 然后把包丢出去
原地址: CIP 目标地址: VIP
源MAC: FMAC 目标MAC: VMAC
4), 报文到达director之后, 解包, 发现目标mac是自己, 开始解析这个报文
处理完成, 通过自定义的一个调度算法, 转发报文到达其中一台RS上
原地址: CIP 目标地址: VIP
源mac: DMAC 目标MAC: RMAC
5), 数据报文到达RS之后, 进行节封装, 发现目标mac是自己, 开始解析, 发现VIP也有,开始处理
6), 处理完成之后, 数据直接通过RS流向客户端

配置LVS-DR集群

分发器IP配置
从拓扑图看出我们的eth0有2个IP地址,所以我们需要配置eht0和eth0:1两个IP
DIP=ens33=192.168.14.240. VIP=ens33:1=192.168.14.241
[root@ip240 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
生成ens33:1配置文件
[root@ip240 ~]# cd /etc/sysconfig/network-scripts/
[root@ip240 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@ip240 network-scripts]# vim ifcfg-ens33:1
在这里插入图片描述
[root@ip240 network-scripts]# systemctl restart network
[root@ip240 network-scripts]# ifconfig
配置LVS-DR规则:
root@ip240 ~]# yum install ipvsadm -y
[root@ip240 ~]# ipvsadm -A -t 192.168.14.241:80 -s rr
[root@ip240 ~]# ipvsadm -a -t 192.168.14.241:80 -r 192.168.13.197 -g
[root@ip240 ~]# ipvsadm -a -t 192.168.14.241:80 -r 192.168.14.237 -g
[root@ip240 ~]# ipvsadm -Ln

两台RealServer的IP配置:
两台realserver都是同样的配法
配置回环接口:
[root@ipxxx ~]# ifconfig lo:1 192.168.14.241 netmask 255.255.255.255
[root@ipxxx ~]# cd /etc/sysconfig/network-scripts/
[root@ipxxx network-scripts]# cp ifcfg-lo ifcfg-lo:1
[root@ipxxx network-scripts]# vim ifcfg-lo:1
在这里插入图片描述
启动80端口
[root@ipxxx ~]# echo 192.168.1.62 > /var/www/html/index.html
[root@ipxxx ~]# service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@ipxxx ~]# systemctl restart httpd

关闭ARP转发(在两台RS上都需要同样的操作)。
同一个广播域: 配置了多个相同的VIP 是不允许的, 要想实现,就必须让外面的网络, 无法发现这个VIP的存在
因此 在Linux里面, 可以修改内核参数, 实现接口IP的广播不响应、不广播
arp_ignore = 1 表示只回答目标IP是访问本地网络对应接口的arp请求
arp_announce = 2 只宣告本机网卡直连网络所在的ip的arp广播

[root@ipxxx ~]# vim /etc/sysctl.conf
[root@ipxxx ~]# sysctl -p
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

参数说明:
arp_ignore 为:1 # - 只回答目标IP地址是访问本网络接口(eth0)的ARP查询请求。
自己的理解:
在设置参数的时候将arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的网卡设备上面没有这个ip,就不做出响应,默认是0,只要这台机器上面任何一个网卡设备上面有这个ip,就响应arp请求,并发送mac地址。
arp_announce (宣告) 为2
2 - 对查询目标使用最适当的本地地址。例如,如果在eth0接口上接受到了一个VIP的arp请求包。内核判断这个VIP地址是不是eth0接口上的IP一样。如果一样,则回复这个包。如果不一样,就丢弃不回应。

测试:
物理机测试:
http://192.168.14.241/ 此处是VIP的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值