后端配置双机热备时:keepalived 无法自动切换主从

来源:9-1 课程总结

掣风悬武

2020-01-09

图片描述
借用一下老师的图~表示是在此操作步骤出现的问题

通过vip能正常访问http://192.168.3.151:6201/renren-fast/swagger/index.html,表示vip配置正常。
通过n1能正常访问http://192.168.3.100:6101/renren-fast/swagger/index.html,表示n1配置正常。
通过n2能正常访问http://192.168.3.100:6102/renren-fast/swagger/index.html,表示n2配置正常。
n1抢到vip的情况:当我pause n1的时候,vip和n1一起停滞无法访问,n2并没有争抢vip;假如我此时进入n2容器,重启keepalived,则vip能正常访问,说明重启能实现切换。
n2抢到vip的情况:当我pause n2的时候,vip和n2一起停滞无法访问,n1并没有争抢vip;假如我此时进入n1容器,重启keepalived,则vip能正常访问,说明重启能实现切换。
由此双击热备失效。


宿主机网络是桥接网络,防火墙和selinux(临时关闭)确认已经关闭。
防火墙如下:
图片描述

selinux(临时关闭)如下:
图片描述


n1的keepalived配置如下(为防止virtual_router_id和数据库热备配置时重复,n1和n2均设置为55):

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.3.151
    }
}
virtual_server 192.168.3.151 6201 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    real_server 192.168.3.100 6101 {
        weight 1
    }
}


n2的keepalived配置如下:

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.3.151
    }
}
virtual_server 192.168.3.151 6201 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    real_server 192.168.3.100 6102 {
        weight 1
    }
}

求解决方案或者思路

写回答

2回答

创通一哥

2020-01-09

//img1.sycdn.imooc.com/szimg/5e16bb6c093b6a6812600608.jpg

老师,如果出现这种情况,容器1中的haproxy服务挂掉,容器2中的keepalived服务挂掉,还可以提供负载均衡服务吗?要怎么配置呢?

0
0

神思者

2020-01-09

你把n1和n2里面的Keepalived文件修改一下,virtual_router_id这个值改成55以外的数字,但是两个Keepalived的virtual_router_id要相同,还有把n2的state参数改成SLAVE,然后重启两个Keepalived试一下

0
9
掣风悬武
回复
神思者
好的我去试一下,谢谢老师耐心的解答
2020-01-10
共9条回复

Docker环境下的企业级前后端分离项目部署与运维

手把手带你学会项目分布式集群部署,让你的系统不再惧怕宕机

2459 学习 · 1018 问题

查看课程