MySQL + KeepaLived 高可用

Posted henry-bk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL + KeepaLived 高可用相关的知识,希望对你有一定的参考价值。

mysql + KeepaLived 高可用

1. 基础环境

两台服务器,MySQL互为主从

MASTER 的 IP:10.0.0.11

BACKUP 的 IP:10.0.0.12

2.MASTER 实操

yum -y install keepalived 
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
vrrp_instance VI_1 {
  state MASTER       # 主机的初始身份:MASTER/BACKUP
  interface eth0       # VIP绑定网卡设备
  virtual_router_id 51    # 路由广播ID,同步ID可以接受广播
  priority 100            # 优先级,越大优先级越高,主的初始优先级必须要大于备份的主机
  advert_int 1
  authentication {
      auth_type PASS
      auth_pass 1111
  }
  virtual_ipaddress {
       10.0.0.90      # VIP地址
  }
}
virtual_server 10.0.0.90 3306 {      # 虚拟服务器,IP地址是VIP,端口是对应服务的端口
  delay_loop 6
  nat_mask 255.255.255.0
  protocol TCP
?
  real_server 10.0.0.11 3306 {      # 真实服务器的ip和端口
      weight 1
      notify_down /tmp/kill.sh           # 检测到down状态时要执行的脚本,内容为停止keepalived
      TCP_CHECK {   # 健康检查模块,通过TCP检查
          connect_port 3306     # TCP要检查的端口
          connect_timeout 3 # 超时时间
          nb_get_retry 3   # 重试次数
          delay_before_retry 3     # 检查轮询周期时间
      }
  }
}

配置文件结束,保存退出

创建脚本

vim /tmp/kill.sh 
#!/bin/bash
service keepalived stop

重启 keepalived 服务

service keepalived restart 

查看 VIP 是否生成

ip a

技术图片

3. BACKUP 实操

 

yum -y install keepalived 
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
vrrp_instance VI_1 {
  state BACKIP       # 主机的初始身份:MASTER/BACKUP
  interface eth0       # VIP绑定网卡设备
  virtual_router_id 51    # 路由广播ID,同步ID可以接受广播
  priority 90            # 优先级,越大优先级越高,主的初始优先级必须要大于备份的主机
  advert_int 1
  authentication {
      auth_type PASS
      auth_pass 1111
  }
  virtual_ipaddress {
       10.0.0.90      # VIP地址
  }
}
virtual_server 10.0.0.90 3306 {      # 虚拟服务器,IP地址是VIP,端口是对应服务的端口
  delay_loop 6
  nat_mask 255.255.255.0
  protocol TCP
?
  real_server 10.0.0.12 3306 {      # 真实服务器的ip和端口
      weight 1
      notify_down /tmp/kill.sh           # 检测到down状态时要执行的脚本,内容为停止keepalived
      TCP_CHECK {   # 健康检查模块,通过TCP检查
          connect_port 3306     # TCP要检查的端口
          connect_timeout 3 # 超时时间
          nb_get_retry 3   # 重试次数
          delay_before_retry 3     # 检查轮询周期时间
      }
  }
}

配置文件结束,保存退出

创建脚本

vim /tmp/kill.sh 
#!/bin/bash
service keepalived stop

重启 keepalived 服务

service keepalived restart 

查看 VIP 是否生成

ip a

技术图片

4. 高可用测试

master 服务器上启动 MySQL keepalived

service mysql restart
service keepalived restart

技术图片

此时表示 master 服务器正在正常使用

service mysql stop

MySQL 停止,代表服务器宕机,此时去查看 Backup 的 IP

技术图片

master 的 IP,已经漂浮到了 Backup 上,此时,Backup 是主

以上是关于MySQL + KeepaLived 高可用的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]MySQL+keepalived用keepalived实现MySQL主主模式的高可用

MySQL之keepalived高可用

MySQL集群搭建-双主+keepalived高可用

MySQL双主+keepalived实现高可用

MySQL高可用之KeepAlived+双主

keepalived + haproxy + mysql 构建高可用数据库