LVS负载均衡-DR模式

目录

数据流向

ARP问题

问题1

问题2

LVS-DR部署

1.配置负载均衡调度器

2.部署共享存储

3.配置节点服务器


LVS负载均衡DR模式主要用于将客户端请求分发到后端真实服务器。在DR模式下,LVS负载均衡器和后端真实服务器位于同一个物理网络中,通过修改数据包的MAC地址来实现请求的转发。

具有高性能、低延迟、配置简单等优点

具有如下几个特点:

Director Server 和 Real 必须在同一个物理网Server络中。

Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。

Director Server作为群集的访问入口,但不作为网关使用。

所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。

Real Server 的网关不允许指向 Director Server IP,即Real Server发送的数据包不允许经过 Director Server。

Real Server 上的 lo 接口配置 VIP 的 IP 地址。

数据流向

DR模式的数据流向于NAT不同,客户端向VIP(集群的虚拟ip)发送数据包(源ip为自己,目的ip为VIP,源mac为自己。目的mac未知)。这时调度器接收到数据(也就是负载均衡器),对数据包进行解封装,根据负载均衡调度算法,判断出要发送给哪个真实服务器,然后将数据包进行封装,源ip 目的ip不变,目的mac地址变为真实服务器的mac地址。真实服务器收到数据包后对请求进行处理,当然也有解封装的过程。ip mac 地址都反过来,重新对数据进行封装,返回给客户端,不经过调度器。

如果集群内有网关路由器的话,客户端向VIP发送请求,首先需要经过网关路由器,网关路由器收到请求后并不知道发给谁,所以用ARP广播来寻找调度器,找到调度器后将数据发送给调度器,此时APR缓存表会更新调度器的mac地址与VIP绑定,方便下次直接发送,后面的数据流向就和没有网关路由器时一致,有一点区别就是真实服务器在返回数据时不是直接发送给客户端,而是先发送给路由器,由路由器转发给客户端。

ARP问题

问题1

或许你可能注意到了,客户端将数据包发送给网关路由器,然后路由器进行ARP广播,找到调度器,那么是如何找到的呢?因为调度器可以收到ARP广播,真实服务器也可以收到啊

这里就涉及到一个配置,在节点服务器(真实服务器)上配置一个内核参数arp_ignore=1(/etc/sysctl.cof,配置完成后需要重载内核参数 sysctl -p),这个参数的含义就是,忽视目的ip不是自己本身ip的请求,因为ARP广播的时候并不知道任何终端的ip,所以广播的目标ip就是VIP,然后节点服务器看到ip是VIP,不是自己本机的ip,所以忽视了这条广播,最终只有调度器收到了广播,对广播进行回应。

问题2

ARP在找到了调度器后,会将VIP与调度器的mac地址进行绑定,之后再有请求过来,就不需要再重新进行ARP广播了。但是,节点服务器将数据重新封装,发送给路由器时,源ip也是vip,那么路由器的ARP缓存表会将节点服务器的mac地址与vip进行绑定,对缓存表进行更新。

同样的,这个问题也可以通过配置来解决,重要的是思路,假如节点服务器在返回数据包的时候,源ip不使用VIP,而使用自己本机的ip,不就不会更新VIP与调度器mac地址的绑定了吗

我们同样在 /etc/sysctl.conf 文件里配置 arp_announce = 2   保存退出 

sysctl -p  重载

LVS-DR部署

想要模拟DR模式的部署,至少需要四台机器

DR 服务器:172.16.233.101 

Web 服务器1:172.16.233.102

Web 服务器2:172.16.233.103 

vip:172.16.233.150 

共享存储:172.16.233.104

1.配置负载均衡调度器

modprobe ip_vs

yum -y install ipvsadm

配置虚拟ip地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens33:0

编辑虚拟网口,只留下这四行

vim ifcfg-ens33:0

DEVICE=ens33:0

ONBOOT=yes

IPADDR=172.16.233.150 

NETMASK=255.255.255.255

启动网口

ifup ens33:0

调整 proc 相应参数

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

配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm

ipvsadm -ln 查看节点状态

清除规则,重新添加

ipvsadm -C

ipvsadm -A -t 172.16.233.150:80 -s rr

ipvsadm -a -t 172.16.233.150:80 -r 172.16.233.102:80 -g

ipvsadm -a -t 172.16.233.150:80 -r 172.16.233.103:80 -g

再次查看,此时已经有了对应条目

2.部署共享存储

yum -y install nfs-utils rpcbind

mkdir /opt/123 /opt/abc

chmod 777 /opt/123 /opt/abc

vim /etc/exports

/usr/share *(ro,sync)

/opt/123 172.16.233.0/24(rw,sync)

/opt/abc 172.16.233.0/24(rw,sync)

systemctl start nfs.service

systemctl start rpcbind.service

3.配置节点服务器

两台节点服务器配置相同

先配置虚拟 IP 地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=172.16.233.150

NETMASK=255.255.255.255

启动网口

ifup lo:0

ifconfig lo:0

route add -host 172.16.233.150 dev lo:0

vim /etc/rc.local

/sbin/route add -host 172.16.233.150 dev lo:0

chmod +x /etc/rc.d/rc.local

调整内核的ARP相应参数

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 

yum -y install nfs-utils rpcbind httpd

systemctl start rpcbind

systemctl start httpd

至此两个台机器除ip外完全一致

其中一台机器:

mount.nfs 172.16.233.102:/opt/123 /var/www/html

echo '123123123' > /var/www/html/index.html

另一台:

mount.nfs 172.16.233.103:/opt/abc /var/www/html

echo 'abcabcabc' > /var/www/html/index.html

浏览器访问虚拟ip

完成

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值