相关服务高可用架构图

1、rockemq高可用架构图

接下来我们要修改/etc/keepalived/keepalived.conf文件,在Keepalived的Master上配置详情如下:

 

#Keepalived配置文件

global_defs {

        router_id NodeA                 #路由ID, 主备的ID不能相同

}

 

#自定义监控脚本

vrrp_script chk_haproxy {

        script "/etc/keepalived/check_haproxy.sh"

        interval 5

        weight 2

}

 

vrrp_instance VI_1 {

        state MASTER #Keepalived的角色。Master表示主服务器,从服务器设置为BACKUP

        interface eth0          #指定监测网卡

        virtual_router_id 1

        priority 100            #优先级,BACKUP机器上的优先级要小于这个值

        advert_int 1            #设置主备之间的检查时间,单位为s

        authentication {        #定义验证类型和密码

                auth_type PASS

                auth_pass root123

        }

        track_script {

                chk_haproxy

        }

        virtual_ipaddress {     #VIP地址,可以设置多个:

                192.168.0.10

        }

}

Backup中的配置大致和Master中的相同,不过需要修改global_defs{}的router_id,比如置为NodeB;其次要修改vrrp_instance VI_1{}中的state为BACKUP;最后要将priority设置为小于100的值。注意Master和Backup中的virtual_router_id要保持一致。下面简要的展示下Backup的配置:

 

global_defs {

        router_id NodeB

}

vrrp_script chk_haproxy {

 ...

}

vrrp_instance VI_1 {

        state BACKUP

 ...

        priority 50

 ...

}

为了防止HAProxy服务挂了,但是Keepalived却还在正常工作而没有切换到Backup上,所以这里需要编写一个脚本来检测HAProxy服务的状态。当HAProxy服务挂掉之后该脚本会自动重启HAProxy的服务,如果不成功则关闭Keepalived服务,如此便可以切换到Backup继续工作。这个脚本就对应了上面配置中vrrp_script chk_haproxy{}的script对应的值,/etc/keepalived/check_haproxy.sh的内容如代码清单所示。

 

#!/bin/bash

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

        haproxy -f /opt/haproxy-1.7.8/haproxy.cfg

fi

sleep 2

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

        service keepalived stop

fi

猜你喜欢

转载自blog.csdn.net/guoshaoliang789/article/details/86622596