Keepalived高可用服务单实例(双实例_配置)

一、配置Keepalived实现单实例单IP自动漂移接管

1、配置Keepalived的主服务器lb01 Master的keepalived.conf配置文件,操作步骤如下:

! Configuration File for keepalived

global_defs {
    notification_email{
    13273151825@163.com
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id lb01  ##id为lb01,不同的keepalived.conf此ID要唯一
}

vrrp_instance VI_1 {   ##实例名字为VI_1,相同实例的备节点名字要和这个相同
    # 此处不设置为MASTER,通过priority来竞争master
    state MASTER
    # 网卡名字,文章下方会给出如何获取网卡名字的方法
    interface eth0
    # 同一个keepalived集群的virtual_router_id相同
    virtual_router_id 51
    # 权重,master要大于slave
    priority 100
    # 主备通讯时间间隔
    advert_int 1
    # 主备保持一致
    authentication {
        auth_type PASS   #PASS认证类型,此参数备节点设置和主节点相同
        auth_pass 1111   #密码是1111,此参数备节点设置和主节点相同
    }   
    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}

启动后查看是否有虚拟IP存在

2、配置Keepalived备份服务器lb02Backup

! Configuration File for keepalived
    notification_email{
    13273151825@163.com
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id lb02  ##id为lb02,不同的keepalived.conf此ID要唯一
}   

vrrp_instance VI_1 {   ##实例名字为VI_1,相同实例的备节点名字要和这个相同
    state BACKUP
    interface eth0
    # 同一个keepalived集群的virtual_router_id相同
    virtual_router_id 51
    # 权重,master要大于slave
    priority 100
    # 主备通讯时间间隔
    advert_int 1
    # 主备保持一致
    authentication {
        auth_type PASS   #PASS认证类型,此参数备节点设置和主节点相同
        auth_pass 1111   #密码是1111,此参数备节点设置和主节点相同
    }   
    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }   
}   

二、进行高可用主备服务器切换

1、停掉主服务器上的Keealived服务或关闭主服务器,操作。

查看主服务器虚拟IP消失,此时查看BACKUP备服务器,看是否存在主服务器的虚拟IP存在。

2、当主服务器服务启动后,发现很快又接管了VIP

三、Keepalived高可用服务器的“脑裂”问题

1、keepalived脑裂介绍

由于某些原因,导致两台高可用服务器对在指定时间内,无法检测到对方心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器对都还活着并且正常运行,这样就会导致同一个IP或服务在两端同时存在而发生冲突,最严重的的是两台主机占用一个VIP地址,当用户写入数据时可能会写人到两端,这可能会导致服务器两端的数据不一致或造成数据丢失,这种情况被称为脑裂。

2、导致脑裂发生的原因

1>、高可用服务器对之间心跳线联路发生故障,导致无法正常通信。

        心跳坏了、网卡及相关驱动坏了,IP地址冲突、心跳间的设备故障(网卡交换机)、

2>、高可用服务器上开启了防火墙阻挡了心跳消息传输

3>、去他服务器配置不好

3、解决脑裂问题出现

1>、实时监控心跳

四、Keeplived双实例双主模式配置

1、keeplived双实例双主模式配置

keeplived支持单实例及双实例多业务双向主备模式,即A业务在lib01上是主模式,在lib02上是备模式,而B业务在lib01上是备模式,在lib02上是主模式。

lib01   ---10.0.0.7    VIP:10.0.0.12(用于绑定A业务www.etiantian.org域名)

lib02   ---10.0.0.8    VIP:10.0.0.13(用于绑定B业务bbs.etiantian.org域名)

首先配置10.0.0.7服务器中的keepalived.conf

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

! Configuration File for keepalived

global_defs {
    notification_email{
    13273151825@163.com
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id lib01  ##id为lb02,不同的keepalived.conf此ID要唯一

vrrp_instance VI_1 {   ##实例名字为VI_1,相同实例的备节点名字要和这个相同
    interface eth0
    virtual_router_id 55
    # 权重,master要大于slave
    priority 150
    # 主备通讯时间间隔
    advert_int 1
    # 主备保持一致
    authentication {
        auth_type PASS   #PASS认证类型,此参数备节点设置和主节点相同
        auth_pass 1111   #密码是1111,此参数备节点设置和主节点相同
    }   
    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        10.0.0.12/24 dev eht0 label eth0:1
    }   
}   
vrrp_instance VI_2 {   ##实例名字为VI_1,相同实例的备节点名字要和这个相同
    state BACKUP
    interface eth0
    # 同一个keepalived集群的virtual_router_id相同
    virtual_router_id 56
    # 权重,master要大于slave
    priority 100
    # 主备通讯时间间隔
    advert_int 1
    # 主备保持一致
    authentication {
        auth_type PASS   #PASS认证类型,此参数备节点设置和主节点相同
        auth_pass 1111   #密码是1111,此参数备节点设置和主节点相同
    }   
    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        10.0.0.13/24 dev eht0 label eth0:2
    }
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

配置lib02 10.0.0.8的keepalived.conf在单实例的基础上增加vrrp_instance VI_2

! Configuration File for keepalived

global_defs {
    notification_email{
    13273151825@163.com
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id lib02  ##id为lb02,不同的keepalived.conf此ID要唯一
}

vrrp_instance VI_1 {   ##实例名字为VI_1,相同实例的备节点名字要和这个相同
    interface eth0
    # 同一个keepalived集群的virtual_router_id相同
    virtual_router_id 55
    # 权重,master要大于slave
    priority 100
    # 主备通讯时间间隔
    advert_int 1
    # 主备保持一致
    authentication {
        auth_type PASS   #PASS认证类型,此参数备节点设置和主节点相同
        auth_pass 1111   #密码是1111,此参数备节点设置和主节点相同
    }
    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        10.0.0.12/24 dev eht0 label eth0:1
    }
}
vrrp_instance VI_2 {   ##实例名字为VI_1,相同实例的备节点名字要和这个相同
    state BACKUP
    interface eth0
    # 同一个keepalived集群的virtual_router_id相同
    virtual_router_id 56
    # 权重,master要大于slave
    priority 150
    # 主备通讯时间间隔
    advert_int 1
    # 主备保持一致
    authentication {
        auth_type PASS   #PASS认证类型,此参数备节点设置和主节点相同
        auth_pass 1111   #密码是1111,此参数备节点设置和主节点相同
    }
    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        10.0.0.13/24 dev eht0 label eth0:2
    }
}

五、开发监测Keepalived裂脑脚本

检查思路:在备节点上执行脚本,如果可以PING通主节点并且备节点有VIP就报警,进行检查是否裂脑。

在lib02备节点开发脚本并执行

#! /bin/bash
lib01_vip=10.0.0.12
lib01_ip=10.0.0.7

while true
do
ping -c 2 -W 3 $lib01_ip &>/dev/null
  if [ $? -eq 0 -a `ip add|grep "$lib01_vip"|wc -l` -eq 1 ]
     then
       echo "hai is split brain.warning."
  else
       echo "hai is ok"
fi
sleep 5
done

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值