在Docker上部署2台节点,利用Keeplived实现双节点VIP 高可用,不需要关闭Keeplived,实现vip来回切换。
前言:
keeplived的做高可用网上有很多例子,但是都存在这样那样的问题,比如:
1.使用的是默认抢占式,这样在主节点恢复后,又会将VIP 漂移回到主节点上,因此需要使用非抢占式模式,故障恢复时,可避免 VIP 切换造成的服务延迟。
2.使用的是默认组播,信息都会向默认的224.0.0.18
的组播地址发送,这样会产生众多的无用信息,这对于有多个keepalived
实例时甚至会产生干扰和冲突,因此须要将组播模式改成单播模式是一种安全的做法,可以避免局域网内有大量的keepalived
形成虚拟路由id的冲突。
3.大部分网上案例 VIP 切换,是通过关闭keeplived进程来控制,因此,需要在检测监控脚本里面增加关闭 keepalived 进程的脚本流程,然后当恢复后还需要手动启动 keepalived服务,不可以重复执行。而VRRP(虚拟路由冗余协议)早就包含了主动切换,失效性,可靠性更高的方案在里面,通过自主选举模式,压根不需要通过关闭进程,就可以实现VIP 切换,甚至可以做到来回反复切换。
1.准备好docker环境
无所谓宿主机是什么系统,安装好docker,能连接上外网即可,本人用的是Windows宿主机。
2.构建2个liunx 系统运行环境
a.拉取基础镜像:
docker pull centos:7.7.1908
b.运行起来镜像,一定要添加: --privileged=true ,不然无法后台运行服务。
sudo docker run -it --privileged=true --name centos_01 f1cb7c7d58b7
c.进入到容器后,安装keepalived 和 nginx, 最终生成基础运行镜像。