0
点赞
收藏
分享

微信扫一扫

如何实现CDH元数据库MySQL的高可用

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。


Fayson的github:https://github.com/fayson/cdhproject


提示:代码块部分可以左右滑动查看噢


1.文档编写目的



在前面Fayson讲过《​​如何实现CDH元数据库MySQL的主主互备​​》,那如何做到MySQL的高可用呢?本篇文章主要介绍如何使用Keepalived实现MySQL的高可用。本文架构图如下:


如何实现CDH元数据库MySQL的高可用_服务器

  • 内容概括

1.Keepalived安装

2.Keepalived配置

3.MySQL高可用验证


  • 测试环境

1.两台Linux服务器(192.168.0.230/192.168.0.231),操作系统为CentOS7.2

2.MariaDB 5.5.44

3.采用root用户操作


  • 前置条件

1.两个MariaDB版本必须一致

2.两个MariaDB已安装


2.测试环境说明



IP地址

状态

别名

192.168.0.230

实现主从同步

MySQLA

192.168.0.231

实现主从同步

MySQLB


3.安装Keepalived



分别在MySQLA和MySQLB服务上执行如下命令安装Keepalived服务。


1.安装Keepalived服务


yum -y install keepalived


如何实现CDH元数据库MySQL的高可用_mysql_02

如何实现CDH元数据库MySQL的高可用_服务器_03


2.将Keepalived服务加入开机自启动列表


systemctl enable keepalived


如何实现CDH元数据库MySQL的高可用_mysql_04

如何实现CDH元数据库MySQL的高可用_mysql_05


4.MySQL服务状态监测脚本



MySQL服务状态监测脚本,主要监控MariaDB服务状态是否正常,如果不正常则将该MySQL所在服务的Keepalived服务杀死,监控MySQL服务是否正常的方法有多种可以通过端口号、进程ID以及执行MySQL命令,这里我们使用mysladmin执行命令来监测MariaDB服务是否正常,脚本内容如下(check_mysql.sh):提示:代码块部分可以左右滑动查看噢



#!/bin/bash
MYSQL_PING=`mysqladmin -uroot -p123456 ping`
MYSQL_OK="mysqld is alive"
if [[ "$MYSQL_PING" != "$MYSQL_OK" ]]
then
echo "mysql is not running"
killall keepalived
else
echo "mysql is running"
fi


如何实现CDH元数据库MySQL的高可用_ip地址_06


这里Fayson使用的是root用户来检测MariaDB服务是否正常,大家可以使用一个权限较低的用户来检测。

设置check_mysql.sh脚本执行权限


[root@vm1 ~]# chmod +x /etc/keepalived/check_mysql.sh
[root@vm1 ~]# ll /etc/keepalived/check_mysql.sh
-rwxr-xr-x 1 root root 233 Dec 29 07:34 /etc/keepalived/check_mysql.sh
[root@vm1 ~]#


如何实现CDH元数据库MySQL的高可用_服务器_07

如何实现CDH元数据库MySQL的高可用_ip地址_08


注意:该脚本存在于Keepalived所在服务器。


5.MySQLA服务器Keepalived配置



1.编辑/etc/keepalived/keepalived.conf配置文件,内容如下:提示:代码块部分可以左右滑动查看噢


[root@vm1 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
}
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 51
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.188
}
track_script {
check_mysql
}
}


如何实现CDH元数据库MySQL的高可用_服务器_09


2.启动Keepalived服务


[root@vm1 ~]# systemctl start keepalived


3.检查Keepalived是否已将192.168.0.188绑定在ens192网卡


如何实现CDH元数据库MySQL的高可用_mysql_10


4.在MySQLB服务器上ping 192.168.0.188


如何实现CDH元数据库MySQL的高可用_mysql_11


5.停止Keepalived服务查看192.168.0.188是否解绑


如何实现CDH元数据库MySQL的高可用_服务器_12


可以看到停止Keepalived服务后192.168.10.188已和ens192网卡解绑。


6.MySQLB服务器Keepalived配置



1.编辑/etc/keepalived/keepalived.conf配置,内容如下,提示:代码块部分可以左右滑动查看噢


[root@vm2 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
}
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.188
}
track_script {
check_mysql
}
}


如何实现CDH元数据库MySQL的高可用_服务器_13


2.启动Keepalived服务


[root@vm2 ~]# systemctl start keepalived[root@vm2 ~]#


如何实现CDH元数据库MySQL的高可用_ip地址_14


3.检查Keepalived是否已将192.168.10.188绑定在ens192网卡


如何实现CDH元数据库MySQL的高可用_ip地址_15


注意:我们这里可以看到192.168.0.188绑定在MySQLB服务器的ens192网卡,由于MySQLA服务的Keepalived服务停了,所以这里才会绑定成功。


4.在MySQLA服务上ping 192.168.0.188


如何实现CDH元数据库MySQL的高可用_ip地址_16


7.验证Keepalived服务IP漂移



1.启动MySQLA和MySQLB服务上的Keepalived服务


如何实现CDH元数据库MySQL的高可用_ip地址_17

如何实现CDH元数据库MySQL的高可用_服务器_18


2.查看此时192.168.0.188 绑定在哪台服务器


如何实现CDH元数据库MySQL的高可用_服务器_19

如何实现CDH元数据库MySQL的高可用_mysql_20


可以看到192.168.0.188 IP地址绑定在MySQLA服务器的ens192网卡上。


3.将MySQLA服务器的Keepalived服务停掉


如何实现CDH元数据库MySQL的高可用_ip地址_21

如何实现CDH元数据库MySQL的高可用_ip地址_22


由上图可以看到此时MySQLA服务器已解绑192.168.0.188的IP地址


如何实现CDH元数据库MySQL的高可用_ip地址_23


由上图可以看到IP地址192.168.0.188已自动漂移到MySQLB服务器的ens192网卡上。


4.在MySQLA服务上ping 192.168.0.188


如何实现CDH元数据库MySQL的高可用_服务器_24


通过以上步骤测试说明Keepalived服务IP地址漂移正常。


8.验证MySQL高可用



测试时192.168.0.188绑定在MySQLB服务器的ens192网卡


如何实现CDH元数据库MySQL的高可用_ip地址_25


1.使用如下命令登录MariaDB


[root@vm1 ~]# mysql -uroot -p -h192.168.0.188


如何实现CDH元数据库MySQL的高可用_ip地址_26


MySQL登录成功,连接的是MySQLB服务。


2.将MySQLB服务器的MariaDB服务停掉


如何实现CDH元数据库MySQL的高可用_服务器_27


查看192.168.0.188是否还在该服务绑定


如何实现CDH元数据库MySQL的高可用_ip地址_28


IP地址已解绑。


3.查看MySQLA服务器的IP地址绑定情况


如何实现CDH元数据库MySQL的高可用_ip地址_29


4.再次登录MariaDB




如何实现CDH元数据库MySQL的高可用_ip地址_30


这时我们看到MariaDB数据库依然能够正常访问,说明已连接到MySQLA服务的MariaDB数据库。


9.总结




  • 利用Keepalived的vrrp_script区域来做MariaDB服务的健康检查,如果检测到MariaDB服务异常则将该服务的Keepalived服务杀掉,已确保虚拟IP能漂移到正常节点的Keepalived服务器从而实现MariaDB服务的高可用。



举报

相关推荐

0 条评论