keepalived + LVS 架构

LVS架构中,不管是NAT还是DR模式,当后端的rs宕机时,调度器依然会把请求转发到宕掉的rs上,这样的结果不是我们想要的,keepalived就可以解决该问题,它不仅有高可用功能,同时还有负载均衡的功能。在调度器上安装了keepalived就不需要再安装ipvsadm了,也不用去编写关于LVS的脚本了,也就是说keepalived已经嵌入了LVS功能,完整的keepalived+LVS架构需要有两台调度器实现高可用,提供调度服务的只需要一台,另一台备用。

环境介绍

主keepalived(调度器):192.168.153.134

备keepalived(调度器):192.168.153.133(在文章的最后加入)

真实服务器rs1:192.168.153.135

真实服务器rs2:192.168.153.136

VIP :192.168.153.110

 

在调度器上安装keepalived

yum install -y keepalived

编辑keepalived配置文件

 

vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {

    #备用服务器上为 BACKUP

    state MASTER

    #绑定vip的网卡为ens33,你的网卡和我的可能不一样,这里需要你改一下

    interface ens33

    virtual_router_id 51

    #备用服务器上为90

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 111111

    }

    virtual_ipaddress {

        192.168.153.110

    }

}

virtual_server 192.168.153.110 80 {

    #(每隔10秒查询realserver状态)

    delay_loop 10

    #(lvs 算法)

    lb_algo wlc

    #(DR模式)

    lb_kind DR

    #(同一IP的连接60秒内被分配到同一台realserver)

    persistence_timeout 60

    #(用TCP协议检查realserver状态)

    protocol TCP

    real_server 192.168.153.135 80 {

        #(权重)

        weight 100

        TCP_CHECK {

        #(10秒无响应超时)

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.153.136 80 {

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

 

如果之前在调度器上执行过LVS脚本

ipvsadm-C 把之前的ipvsadm规则清空

systemctl restart network 可以把之前设置的VIP删除掉

 

由于在keepalived上定义的LVS是DR模式,所以需要在两台真实服务器rs上执行lvs_dr_rs.sh脚本(同之前介绍LVS的文章中关于DR模式脚本)

 

分别在两台真实服务器上执行

bash /usr/local/sbin/lvs_dr_rs.sh

脚本如下

#/bin/bash
vip=192.168.153.110
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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

 

分别在真实服务器rs上执行完脚本后在调度器上启动keepalived服务

systemctl start keepalived

ps aux | grep keepalived 检查有无keepalived进程

 

检验:

在浏览器访问vip(192.168.153.110)

可以在调度器上执行ipvsadm -ln命令查看连接数

#ipvsadm -ln

IPVirtual Server version 1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.153.110:80 wlc persistent 60

  -> 192.168.153.135:80           Route   100   0          0        

  -> 192.168.153.136:80           Route   100   4          7

 

停用153.136nginx后

#ipvsadm -ln

IPVirtual Server version 1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.153.110:80 wlc persistent 60

  -> 192.168.153.135:80           Route   100   4          0

大功告成~

加入高可用keepalived的备用调度器

backup(调度器):192.168.153.133

 

安装keepalived

配置备用keepalived配置文件

vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {

    #备用服务器上为 BACKUP

    state BACKUP

    #绑定vip的网卡为ens33,你的网卡和我的可能不一样,这里需要你改一下

    interface ens33

    virtual_router_id 51

    #备用服务器上为90

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 111111

    }

    virtual_ipaddress {

        192.168.153.110

    }

}

virtual_server 192.168.153.110 80 {

    #(每隔10秒查询realserver状态)

    delay_loop 10

    #(lvs 算法)

    lb_algo wlc

    #(DR模式)

    lb_kind DR

    #(同一IP的连接60秒内被分配到同一台realserver)

    persistence_timeout 60

    #(用TCP协议检查realserver状态)

    protocol TCP

    real_server 192.168.153.135 80 {

        #(权重)

        weight 100

        TCP_CHECK {

        #(10秒无响应超时)

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.153.136 80 {

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

 

配置完后启动keepalived服务

systemctl start keepalived

 

停用主调度器的keepalived

systemctl stop keepalived

 

浏览网页测试依然正常,已正常切换到backup上

启动master停用backup调度器

依然可以访问网页。启动backup备用

测试成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值