lvs的DR模式实践

一、环境规划

计划配置五台虚拟机,1台作为客户端,1台模拟成路由器,1台作为lvs服务器,2台作为RS。

网络环境规划如下:

客户端:
      IP:192.168.44.6 GW:192.168.44.200 模式:仅主机
路由器:
      IP:192.168.44.200 模式:仅主机
      IP:10.10.0.200 模式:NAT     
lvs:
      IP:10.10.0.2 GW:任意 模式:NAT
RS1:
      IP:10.10.0.3 GW:10.10.0.200 模式:NAT
RS2:
      IP:10.10.0.13 GW:10.10.0.200 模式:NAT

配置要点:1.路由器需要配置两个网络,一个负责与客户端通信,一个负责与RS通信。2.RS网关需要指向路由器上的NAT模式IP。3.每个RS和lvs上都要配置VIP。4.RS的RIP需要与DIP同网段。5.每个RS可以出外网。

二、集群结构图

集群结构图如下,防火墙和交换机本次实验用不到。

三、实验过程



1、网络环境搭建

下面按照规划和架构图进行配置。

(1)客户端网络设置

与上一篇NAT模式配置基本相同。唯一不同的是需要配置客户端的网关指向路由器。修改ens33配置:

 重启网络服务使配置生效。

(2)路由器网络设置

路由器两个网络适配器的设置与NAT模式中的lvs设置相同。重点关注IP的设置,以下是ens33的设置(对应NAT网络适配器):

 以下是ens37的设置(对应仅主机网络适配器):

 配置完成后重启网络服务:

路由器上需要配置ip_forward参数开启路由转发。

vim /etc/sysctl.conf

使用命令sysctl -p使配置生效。 

(3)RS网络设置

RS需要提供http服务,先在两个RS上下载好http支持服务,这里使用的是上篇NAT模式下的RS服务器,相关设置略过。

RS网络适配器设置与NAT模式中相同,重点关注其IP的设置。

 ens33上需要设置网关指向路由器NAT模式IP,以下分别是RS1和RS2上ens33的配置:

 如果以上配置正常,此时可以直接使用客户端访问RS:

由于DR模式下lvs和RS上都要配置VIP,需要将VIP配置在回环网卡上。直接使用以下命令将VIP绑定在回环网卡上:

ifconfig lo:1 10.10.0.100/32
或者
ip a a 10.10.0.100/32 dev lo label lo:1

绑定VIP到回环网卡后配置如下: 

 (4)LVS网络设置

LVS网络适配器同NAT模式下lvs的NAT适配器设置,这里也是主要配置网卡。ens33的配置如下:

  

注意:这里需要给LVS配置一个任意IP的网关,不指定一个网关的话,LVS不会转发请求,客户端发送请求会连接超时:

  

最好指向路由器NAT模式IP,不然lvs会一直发送arp询问谁有当前配置的这个网关,造成网络带宽的消耗。

LVS上也需要绑定VIP到回环网卡上:

2、lvs配置

LVS上需要安装ipvsadm管理工具,这里使用的是上篇NAT模式下的lvs进行改造的,ipvsadm已经安装,相关过程略过。

使用ipvsadm工具配置服务器负载均衡:

#lvs的VIP为10.10.0.100,使用wrr负载均衡算法
ipvsadm -A -t 10.10.0.100:80
#添加RS1到lvs管理列表中,-g表示DR模式
ipvsadm -a -t 10.10.0.100:80 -r 10.10.0.3 -g
#添加RS2到lvs管理列表中
ipvsadm -a -t 10.10.0.100:80 -r 10.10.0.13 -g

根据学习和了解到的理论知识,RS上还需要配置arp_ignore和arp_announce参数以限制arp通告和响应级别以防止lvs和各RS上的VIP发生冲突,不过实际测试过程中不配置这两个参数好像也没有影响。哪位大神可以解惑,感激不尽!!!

 为了保险起见,还是在所有RS上把这两个内核参数的配置加上吧

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

3、验证

客户端访问VIP,正确负载到各个RS上

另外,也可以设置成VIP与DIP不在同一个网段,不过在物理上它们始终在一个网段。需要修改的配置有路由器上ens33上再绑定一个不同网段的IP,然后分别修改lvs和各RS上的VIP与路由器上新绑定的IP同网段即可,这里就不做验证了。

四、自动部署脚本

为了能够更加快捷方便地部署lvs负载均衡服务,各虚拟机只配置各自网络适配器和IP,VIP、ipvs规则、arp限制级别配置都放到脚本中,会节省很多时间,也便于可重复部署。以下是LVS服务器VIP和ipvs规则相关配置的脚本,输入参数start即可部署完成并启动,输入参数stop会清空相关配置。

#!/bin/bash
# description: 配置VIP和ipvs规则
VIP=10.10.0.100
RIP1=10.10.0.3
RIP2=10.10.0.13
iface=lo:0
mask=255.255.255.255
port=80
schedule="wrr"
type="-g"
weight1=1
weight2=1
 
case "$1" in
 
start)
           
		   ifconfig $iface $VIP netmask $mask
		   #清空防火墙规则
		   iptables -F
		   
		   #添加ipvs规则
		   ipvsadm -A -t ${VIP}:${port} -s ${schedule}
		   ipvsadm -a -t ${VIP}:${port} -r ${RIP1} -g -w ${weight1}
           ipvsadm -a -t ${VIP}:${port} -r ${RIP2} -g -w ${weight2}
		   echo "LVS Server is Ready!"
       ;;
stop)
		   #清空ipvs规则
		   ipvsadm -C
		   ifconfig $iface down
           echo "Lvs Server stoped"
           ;;
 
*)
          echo "Usage: $(basename $0) {start|stop}"
          exit 1
esac

以下是配置RS的VIP和arp限制的脚本,输入参数start即可部署完成并启动,输入参数stop会清空相关配置:

#!/bin/bash
#description:配置RS的VIP以及arp限制

VIP=10.10.0.100
iface=lo:0
mask=255.255.255.255

case "$1" in
        start)
               ifconfig ${iface} $VIP netmask ${mask} broadcast $VIP
               #route add -host $VIP dev lo:0
               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/all/arp_ignore
               echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
               #sysctl -p >/dev/null 2>&1
               echo "RealServer Start OK"

               ;;
        stop)
               ifconfig ${iface} down
               #route del $VIP >/dev/null 2>&1
               echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
               echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
               echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
               echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
               echo "RealServer is Stoped"
               ;;
        *)
               echo "Usage: $(basename $0) {start|stop}"
               exit 1
        esac

        exit 0

注意:以上脚本中使用的是lo:0绑定的VIP,手动测试的时候使用的是lo:1,这两个都是可以的,使用脚本前要把lo:1的配置去掉。

ifconfig lo:1 down

以上就是DR模式的相关实践总结。由于NAT和DR模式的实践中lvs都只用了一台虚拟机,一旦遇到lvs单点故障,整个集群就不可用了;另外RS不可用时lvs也不会将其从ipvs列表里剔除,影响集群的高可用性。下篇文章将介绍lvs+keepalived解决这两个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值