docker安装Keepalived2.0+mysql5.7 实现高可用双机热部署

注意:如果集群防火墙开启的状态下需要执行一下命令

#--in-interface 对应的是服务器的网卡

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0   --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload

 

docker Keepalived+mysql 实现高可用
docker 运行Keepalived脚本
docker run  -d --net=host --cap-add=NET_ADMIN --name  keepalived-mysql -v /home/docker/keepalived/conf/keepalived.conf:/usr/local/etc/keepalived/keepalived.conf -v /tmp/mysql.sh:/tmp/mysql.sh keepalived:2.0.20

内网

mkdir -p /home/docker/keepalived/conf/

192.168.160.10

编辑本地keepalived.conf文件内容
global_defs {
  script_user root #执行chk_mysql_port脚本用户需要root用户来实现
  enable_script_security #开启运行脚本的配置
}

vrrp_script chk_mysql_port {
  script "/tmp/mysql.sh" #判断端口mysql端口是否存在
  interval 2 #脚本执行间隔,每2s检测一次
  weight -5#脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5  
  fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
  rise 1#检测1次成功就算成功。但不修改优先级
}

vrrp_instance VI_1 {
  interface ens33 #需要宿主记得网卡
  state BACKUP
  mcast_src_ip 192.168.160.10 #服务器本机的ip
  virtual_router_id 200#建议不用默认的51 换一个1-255之间 但是必须要要和另几台Keepalived一样
  priority 100 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。这样MASTER故障恢复后,就可以将VIP资源再次抢回来 
  advert_int 1

  authentication {
    auth_type PASS#账号
    auth_pass 123456#密码
  }

  virtual_ipaddress {
    192.168.160.111#虚拟ip
  }


  track_script {
    chk_mysql_port
  }
}
保存退出
编辑/tmp/mysql.sh
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3307"|wc -l)
if [ "${counter}" == 0 ];then
   pkill keepalived
fi

保存退出
执行

chmod 755 /tmp/mysql.sh 

192.168.160.20

编辑本地keepalived.conf文件内容
global_defs {
  script_user root #执行chk_mysql_port脚本用户需要root用户来实现
  enable_script_security #开启运行脚本的配置
}

vrrp_script chk_mysql_port {
  script "/tmp/mysql.sh" #判断端口mysql端口是否存在
  interval 2 #脚本执行间隔,每2s检测一次
  weight -5#脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5  
  fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
  rise 1#检测1次成功就算成功。但不修改优先级
}

vrrp_instance VI_1 {
  interface ens33 #需要宿主记得网卡
  state MASTER
  mcast_src_ip 192.168.160.20 #服务器本机的ip
  virtual_router_id 200#建议不用默认的51 换一个1-255之间 但是必须要要和另几台Keepalived一样
  priority 101 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。这样MASTER故障恢复后,就可以将VIP资源再次抢回来 
  advert_int 1

  authentication {
    auth_type PASS#账号
    auth_pass 123456#密码
  }

  virtual_ipaddress {
    192.168.160.111#虚拟ip
  }


  track_script {
    chk_mysql_port
  }
}
保存退出
编辑/tmp/mysql.sh
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3307"|wc -l)
if [ "${counter}" == 0 ];then
   pkill keepalived
fi

保存退出
执行

chmod 755 /tmp/mysql.sh 

外网

10.10.0.203

编辑本地keepalived.conf文件内容

global_defs {
  script_user root
  enable_script_security
}

vrrp_script chk_mysql_port {
  script "/tmp/mysql.sh"
  interval 2
  weight -5
  fall 2
  rise 1
}

vrrp_instance VI_1 {
  interface eno1 #需要宿主记得外网卡
  state MASTER
  mcast_src_ip 10.10.0.203#外网的ip地址
  virtual_router_id 203 
  priority 101
  advert_int 1

  authentication {
    auth_type PASS
    auth_pass 123456
  }

  virtual_ipaddress {
    10.10.0.222
  }


  track_script {
    chk_mysql_port
  }
}

编辑/tmp/mysql.sh
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3307"|wc -l)
if [ "${counter}" == 0 ];then
   pkill keepalived
fi

保存退出
执行

chmod 755 /tmp/mysql.sh 

运行docker脚本

docker run  -d --net=host --cap-add=NET_ADMIN --name  keepalived-mysql -v /home/docker/keepalived/conf/keepalived.conf:/usr/local/etc/keepalived/keepalived.conf -v /tmp/mysql.sh:/tmp/mysql.sh keepalived:2.0.20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值