文章目录
- 一、LVS-DR集群介绍
-
- 1.LVS的基本工作原理
- [2. LVS-DR模式工作原理](#2. LVS-DR模式工作原理)
- [二、 LVS-DR模式应用特点](#二、 LVS-DR模式应用特点)
- [三、LVS -- DR 模式集群构建](#三、LVS – DR 模式集群构建)
一、LVS-DR集群介绍
1.LVS的基本工作原理
- 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
- PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
- IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群
服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP
地址及端口,并将新的数据包发往POSTROUTING链 - POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将
数据包最终发送给后端的服务器
2. LVS-DR模式工作原理
首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将
请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客
户端计算机(不经过director),并且以此回复数据包使用的目的VIP 地址作为源IP地址。因此,实际上
是客户计算机被"欺骗"了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数
据包给一台计算机(LB),并从另一台计算机(RS)接收回复的数据包。
二、 LVS-DR模式应用特点
1.所有集群节点RS必须和Director在相同的物理网段(即同一个局域网中);
2.所有客户端入站(而不是出站)请求由Director首先接收,并转发给集群节点RS;
3.集群节点RS通常来说最好带外部IP,而不使用Director及某固定机器作为默认网关,以便将数据包直
接回复给客户端计算机,且不会产生回包的瓶颈;
4.所有集群节点RS上必须在lo网卡上绑定VIP地址,以便验证通过目的IP非RS的数据包;
5.由于所有集群节点RS上必须在lo网卡上绑定VIP地址,因此,带来arp问题,即集群节点RS默认会相
应发往Director VIP的数据包。因此要对所有集群节点RS做ARP抑制处理,把响应VIP的请求交给LVS
Director;
6.很多操作系统都可以用在集群内部的RS真实服务器上只要该操作系统能够实现ARP隐藏,如:
Windows,linux,unix;
7.LVS/DR模式不需要开启调度器转发功能,这点和LVS/NAT模式是不同的。
8.LVS/DR Director(服务器数量100台)可以比LVS-NAT Director(服务器数量10-20台)承受更多的
并发请求和转发更多的服务器数量。
三、LVS -- DR 模式集群构建
1.前期环境准备
这里我准备了四台主机,一台充当lvs,两台充当web集群,还有一台客户端
在lvs上安装配置工具
bash
yum install ipvsadm
然后这里选择使用apache工具,在web集群上安装
使用apache和nginx都可以
2.配置LVS
配置vip,即虚拟ip
配置在同一网段的即可
手工执行配置添加LVS服务并增加两台RS
bash
ipvsadm -C #清除lvs配置
ipvsadm -A -t 192.168.45.200:80 -s rr
ipvsadm -a -t 192.168.45.200:80 -r 192.168.45.141:80 -g
ipvsadm -a -t 192.168.45.200:80 -r 192.168.45.142:80 -g
这里采用比较简单的做法,没有添加条件,方便快速测试
去查看lvs配置,可以看见两台RS已经添加上
3.配置RS
在每台RS上配置
bash
ifconfig lo:200 192.168.45.200 netmask 255.255.255.255
echo "web test page , ip is 'hostname -I'." > /var/www/html/index.html #用于客户端测试
添加本机访问VIP的路由
bash
route add -host 192.168.45.200 dev lo
然后进行arp抑制
bash
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/ens33/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/ens33/arp_announce
最后在客户端上面测试
bash
for ((i=1;i<=6;i++))
> do
> curl 192.168.45.200
> done
如果交替出现说明配置成功