我是靠谱客的博主 认真鱼,最近开发中收集的这篇文章主要介绍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

最后

以上就是认真鱼为你收集整理的docker安装Keepalived2.0+mysql5.7 实现高可用双机热部署的全部内容,希望文章能够帮你解决docker安装Keepalived2.0+mysql5.7 实现高可用双机热部署所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部