上一篇(建议看完再看本篇)
本篇简介
使用 HAProxy 镜像实现负载均衡和 Docker Swarm 集群的高可用性,然后再使用 Keepalived 镜像实现VIP(虚拟IP)在2台HA节点上的IP漂移,来保证其中一个HA节点挂掉之后,整个系统仍然可用。
VIP 高可用架构说明:由于本机内存限制,关闭了所有work节点,所以三个 nginx 容器都在 Manager1 上运行。
开始实现
1、按如上架构图,添加节点 haKeepalived1
、haKeepalived2
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
- 关闭
haKeepalived1
节点, 在本机上执行
$ docker-machine stop haKeepalived1
http://192.168.99.200:8080/ 仍然可以访问。
网友评论