docker部署keepalived

1、拉取镜像

docker pull osixia/keepalived:2.0.20

2、启动命令

192.168.1.1,192.168.1.2代表的是宿主机的IP,192.168.1.3代表的是虚拟IP。

1.master

docker run --cap-add=NET_ADMIN --cap-add=NET_BROADCAST --cap-add=NET_RAW --net=host -d --name keepalived \
    -v /etc/localtime:/etc/localtime \
    -e KEEPALIVED_INTERFACE='enp3s0' \
    -e KEEPALIVED_PASSWORD='123456' \
    -e KEEPALIVED_STATE='MASTER' \
    -e KEEPALIVED_ROUTER_ID='51' \
    -e KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['192.168.1.1','192.168.1.2']" \
    -e KEEPALIVED_VIRTUAL_IPS='192.168.1.3' \
    osixia/keepalived:2.0.20

2.Slave

docker run --cap-add=NET_ADMIN --cap-add=NET_BROADCAST --cap-add=NET_RAW --net=host -d --name keepalived \
    -v /etc/localtime:/etc/localtime \
    -e KEEPALIVED_INTERFACE='enp3s0' \
    -e KEEPALIVED_PASSWORD='123456' \
    -e KEEPALIVED_STATE='BACKUP' \
    -e KEEPALIVED_ROUTER_ID='51' \
    -e KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['192.168.1.1','192.168.1.2']" \
    -e KEEPALIVED_VIRTUAL_IPS='192.168.1.3' \
    osixia/keepalived:2.0.20	

3、注意

因为是docker部署的keepalived,所以keepalived里面所写的nginx检测脚本是运行不了的,因为不能从容器去操作宿主机,无法实现nginx的重启与keepalived的docker stop操作。所以采取crontab的定时任务策略去检测,实现VIP飘逸。

4、定时检测脚本

#!/bin/bash

while true
do
    if [ -z "$(lsof -i :80)" ]; then
        /usr/local/nginx/sbin/nginx
    fi

    sleep 5

    if [ -z "$(lsof -i :80)" ]; then
        docker stop keepalived
    fi

    sleep 5

    if [ -z "$(lsof -i :80)" ]; then
        /usr/local/nginx/sbin/nginx
    fi

    sleep 5

    if [ -z "$(lsof -i :80)" ]; then
        docker stop keepalived
    fi

    sleep 5

    if [ -z "$(lsof -i :80)" ]; then
        /usr/local/nginx/sbin/nginx
    fi

    sleep 5

    if [ -z "$(lsof -i :80)" ]; then
        docker stop keepalived
    fi
done

5、定时任务

crontab -e  进入定时任务编写页面

* * * * * check_nginx.sh

表示,每分钟执行一次检测脚本,crontab最小执行单位为分钟,所以check_nginx.sh中每五秒检测一次,写了三次,相当于每分支去检测6次nginx,第1.3.5次检测的是nginx,如果端口不存在则重启nginx,第2.4.6次是重启完了nginx再去检测nginx,nginx还没启动,则docker stop keepalived,实现虚拟IP转移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值