美文网首页云技术Docker容器程序员
Docker 版 HAProxy + Keepalived 高可

Docker 版 HAProxy + Keepalived 高可

作者: Anoyi | 来源:发表于2017-09-07 22:26 被阅读770次
    江水楼阁

    上一篇(建议看完再看本篇)

    Docker Swarm + HAProxy 实现高可用

    本篇简介

    使用 HAProxy 镜像实现负载均衡和 Docker Swarm 集群的高可用性,然后再使用 Keepalived 镜像实现VIP(虚拟IP)在2台HA节点上的IP漂移,来保证其中一个HA节点挂掉之后,整个系统仍然可用。

    VIP 高可用架构

    说明:由于本机内存限制,关闭了所有work节点,所以三个 nginx 容器都在 Manager1 上运行。

    开始实现

    1、按如上架构图,添加节点 haKeepalived1haKeepalived2

    节点终端示例

    2、在 haKeepalived1 节点启动 HAProxy 和 Keepalived

    • 启动 HAProxy (上一篇文章有示例),此处修改 haproxy.cfg
    global
        daemon
        maxconn 25600
    defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
    frontend http-in
        bind *:80
        default_backend servers
    backend servers
        server server1 192.168.99.100:8080 maxconn 32 check
    

    提示:此处获取镜像慢的话,可以使用我在阿里云的加速镜像
    docker pull registry.cn-hangzhou.aliyuncs.com/anoy/haproxy
    使用加速镜像后,别忘了制造any-haproxy镜像时 FROM 改为此镜像名称

    • 启动 Keepalived
      首先,获取 any-keepalived 镜像
    $ docker pull registry.cn-hangzhou.aliyuncs.com/anoy/keepalived
    

    然后,启动 Keepalived,为此节点添加 VIP(192.168.99.200),状态为 MASTER

    $ docker run \
      --cap-add=NET_ADMIN \
      --net=host \
      -d \
      --env KEEPALIVED_VIRTUAL_IPS="#PYTHON2BASH:['192.168.99.200']" \
      --env KEEPALIVED_STATE="MASTER" \
      --detach \
      registry.cn-hangzhou.aliyuncs.com/anoy/keepalived
    
    • 检验 VIP 状态
    $ ip a
    
    VIP

    并且本机可以 ping 通 192.168.99.200 这个IP。

    本机 ping 测试

    3、在 haKeepalived2 节点上执行步骤二相同的操作,启动 Keepalived 时命令变更如下:

    $ docker run \
      --cap-add=NET_ADMIN \
      --net=host \
      -d \
      --env KEEPALIVED_VIRTUAL_IPS="#PYTHON2BASH:['192.168.99.200']" \
      --env KEEPALIVED_STATE="BACKUP" \
      --detach \
      registry.cn-hangzhou.aliyuncs.com/anoy/keepalived
    

    haKeepalived2 的状态变为 BACKUP

    4、测试VIP

    • 访问 http://192.168.99.200:8080/ 可以正常请求到 nginx
    访问 VIP
    • 关闭 haKeepalived1 节点, 在本机上执行
    $ docker-machine stop haKeepalived1
    

    http://192.168.99.200:8080/ 仍然可以访问。

    参考资料

    相关文章

      网友评论

        本文标题:Docker 版 HAProxy + Keepalived 高可

        本文链接:https://www.haomeiwen.com/subject/qodwjxtx.html