Keepalived实现LVS(DR模式)+自动后端健康检测

上一篇博客《Keepalived实现NAT+LVS+后端健康检测》简单介绍了NAT模式的LVS搭建步骤,下面介绍一下使用更普遍、网络结构更简单的DR模式搭建方法。

不同与NAT模式,DR模式不需要跨两个网段,负载均衡服务器和真实Web服务器还有客户端都可以放在同一个网段里,对网络的复杂性要求降低,而且有一个好处是负载量会提高,因为数据流量不需要通过负载均衡器进行路由,使负载均衡器不会产生瓶颈。但是也有缺点,一是真实Web服务器需要修改自己的lo网卡,这样需要对真实web服务器进行一些网络配置,另一个是无法实现NAT中的端口映射功能,比如负载均衡器开放的是80端口,那么后端的真实Web服务器也必须开放80端口,而在NAT模式下,对后端服务器的端口没有限制。

 

首先介绍一下网络分配

服务器 真实地址 虚拟地址 网关地址
Keepalived主服务器 10.100.100.89 10.100.100.200 10.100.100.1
Keepalived备服务器 10.100.100.88 10.100.100.200 10.100.100.1
真实HTTP服务1 10.100.100.101 10.100.100.200 10.100.100.1
真实HTTP服务2 10.100.100.102 10.100.100.200 10.100.100.1

 

在这个网络中,所有网络流量都通过网关10.100.100.1进行进出,客户端访问地址为虚拟地址10.100.100.200,客户端的请求到达keepalived后,会修改数据包的MAC地址然后发送给两台真实HTTP服务器,真实HTTP由于也配有虚拟地址,所以会正常接收这个数据包,然后返回流量通过网关直接返回给用户而非流经负载均衡器再走网关,所以负载均衡器的压力相对NAT模式大大减小。负载均衡器和HTTP服务器均只开放8080端口。因为DR模式下开放的端口必须一致。

 

在真实Web服务器上因为要设置lo网卡上的虚拟ip,并关闭arp响应(如果不关闭,那么所有使用vip的服务器就会造成IP冲突或者说是ARP欺骗),方法很简单,直接写一个脚本即可,并且还可以开机自启

vi  /etc/init.d/realserver

SNS_VIP=10.100.100.200
#/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_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 lo:0 down
       route del $SNS_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 Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

增加可执行权限

chmod 755 /etc/init.d/realserver

然后启动很方便,因为已经注册为了linux服务

service realserver start

或者

/etc/init.d/realserver start

下面是keepalived主机的配置文件

! Configuration File for keepalived

global_defs {
   router_id LVS_MASTER
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 91
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.100.100.200
    }
}

virtual_server 10.100.100.200 8080 {
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
	nat_mask 255.255.255.0
    protocol TCP

    real_server 10.100.100.101 8080 {
        weight 1
        HTTP_GET {
            url {
              path /hello
              d
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值