12.keepalived+mysql 双主架构

0、本次集群架构如下(先搭建好主从同步):

集群架构图(如上)

1、分别在主、备库上创建同步复制账号:
create user 'bak'@'10.161.181.%' identified by 'root123';
grant replication slave on *.* to 'bak'@'10.161.181.%';
GRANT ALL PRIVILEGES ON *.* TO 'bak'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
flush privileges;

2、先在备库上10.161.181.224主机上配置同步信息:
mysql -uroot  -proot123;
change master to  master_host='10.161.181.223',master_user='bak',master_password='root123',master_auto_position=1;
start slave;

3、之后再在主库上10.161.181.223上配置主从同步信息:
change master to  master_host='10.161.181.224',master_user='bak',master_password='root123',master_auto_position=1;
start slave;
show slave status\G;

到此,双主同步建立完成。
备注:
允许root用户连接(授予下面权限):mysql -h 10.161.181.223 -uroot -proot123 -P3306 -e "show status"
create user 'root'@'10.161.181.%' identified by 'root123';
grant select,insert,update,delete on root.* to 'root'@'10.161.181.%' identified by 'root123';
4、分别在两台主机上安装keepalived软件包:
https://keepalived.org/download.html (本次下载:keepalived-1.4.5.tar.gz)或yum源安装:yum -y install keepalived;
源码安装:
4.1先安装keepalived环境条件:
yum -y install curl gcc openssl-devel libnl3-devel net-snmp-devel
yum -y install libnl libnl-devel
yum install -y libnfnetlink-devel

4.2解压安装包:
tar -zxvf keepalived-1.4.5.tar.gz
cd keepalived-1.4.5
mkdir /usr/local/keepalived
chmod 775 /usr/local/keepalived/
./configure --prefix=/usr/local/keepalived
make && make install


make && make install如下:


4.3安装完成,生成相应文档:

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived   #cp启动脚本文档到操作系统配置文件下:
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived    #添加keepalived启动程序到系统环境命令:
cp  /root/wlp/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived  #keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用
mkdir /etc/keepalived  ; #将配置文件放到默认路径下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

添加系统服务并为自启动:


4.4在两台主机上配置检测mysql数据库的脚本 :
cd /etc/keepalived
vi checkmysql.sh

#!/bin/bash
#author=wlp
mysqlstr=/usr/local/mysql/bin/mysql
host=10.161.181.223
user=admin
password=root123
port=3306
##mysql service ok=1 ,else = 0
mysql_status=1

###check mysql status#####
$mysqlstr -h $host -u $user -p$password -P$port -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ; then
    echo "mysql_status=1"
    exit 0
else
    /etc/init.d/keepalived stop
fi
chmod 775 /etc/keepalived/checkmysql.sh或chmod +x /etc/keepalived/checkmysql.sh
4.5创建checkmysql.sh脚本检查用户:
创建admin管理用户:
create user 'admin'@'10.161.181.%' identified by 'root123';
grant all privileges on *.* to 'admin'@'10.161.181.%';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
flush privileges;

4.6修改两台主机keepalived配置文件:
223主机1:
vi /etc/keepalived/keealived.conf

! Configuration File for keepalived
vrrp_script vs_mysql_223 {
    script "/etc/keepalived/checkmysql.sh"
    interval 10
}

vrrp_instance VI_223 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 223
    priority 223
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass root123
    }
    track_script {
        vs_mysql_223
    }
    virtual_ipaddress {
        10.161.181.226
    }
}
224主机2:

! Configuration File for keepalived
vrrp_script vs_mysql_224 {
    script "/etc/keepalived/checkmysql.sh"
    interval 10
}

vrrp_instance VI_224 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 223
    priority 90
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass root123
    }
    track_script {
        vs_mysql_224
    }
    virtual_ipaddress {
        10.161.181.226
    }
}
4.7启动两台主机keepalived进程:




使用另外一台mysql 225,测试 vip是否可以连接到主库223:

show status\s确定连接为vip:

到此双主架构建立完成。
5.故障模拟切换:
在主库上关闭mysql服务:/usr/local/mysql/bin/mysqladmin -uroot -proot123 shutdown
查看keepalived日志情况:tail -f /var/log/messages(vip removed &&keepalived stop)
备库上查看keepalived日志:tail -f /var/log/messages (keepalived backup转换为master&& vip切换到备机上)
此上不影响用户使用,转换时会间断:mysql -uadmin -proot123 -h10.161.181.226
show status \s;



在225上通过vip验证:

再把223主机mysql服务开启:service mysqld start;
检查同步,都正常了:mysql -uroot -proot123 ; show slave status\G;
切换原主节点到223:启动223上主机keepalived:/etc/init.d/keepalived start;
关闭224上mysql:mysqladmin -uroot -proot123  shutdown;
检查vip和mysql同步:已经切换到223节点并且服务正在连接:

开启224上mysql并检查主从同步:service mysqld restart

VIP测试连接正常:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值