其他分享
首页 > 其他分享> > 企业运维实战LAMP架构--MHA高可用集群最详细搭建方法

企业运维实战LAMP架构--MHA高可用集群最详细搭建方法

作者:互联网

企业运维实战LAMP架构--MHA高可用集群最详细搭建方法


前言

MHA简介:
在前面的学习中,我们学习了如何去配置mysql的主从复制,但是如果master主机down掉后,只能手动去CHANGE MASTER,这在企业运维中是十分不理想的解决方案。

MHA是针对与mysql的故障切换方案。其工作原理如下:

首先,MHA分为manager和node,mysql中的master和slave均为node端,相当于对其进行监控,一个master包含的slave及其本身代表集群的一个节点;manager负责对master端进行监控,每隔几秒进行故障探测,但检测到master故障时进行故障转移。


一、环境搭建

需要四台虚拟机进行实验环境,其中一台负责manager,其余三台配置mysql主从复制且必须是一主二从。

具体要求:四台机器必须SSH免密登录,node端安装node相关包和依赖包,manager安装所有依赖包。

首先我们准备四台虚拟机
vm4、vm5、vm6、vm7
vm4、5、6负责配置mysql主从复制,一主二从
vm7负责配置manager

vm4\5\6 共同操作:

配置四台机器互相免密登陆

master端

ssh-keygen 
ssh-copy-id server4
ssh-copy-id server5
ssh-copy-id server6
ssh-copy-id server7

scp -r .ssh/ server5:
scp -r .ssh/ server6:
scp -r .ssh/ server7:

保证四台机器之间互通

解压安装所需包

tar xf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
yum install -y mysql-community-client-5.7.33-1.el7.x86_64.rpm  mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm  mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm  mysql-community-server-5.7.33-1.el7.x86_64.rpm

在这里插入图片描述

编辑主配置文件
vim /etc/my.cnf

server-id=1
log-bin=binlog
#log-slave-updates=ON
gtid_mode=ON
enforce-gtid-consistency=ON

在这里插入图片描述

初始化mysql并修改密码

systemctl start mysqld
grep password /var/log/mysqld.log #查看初始化密码
mysql_secure_installation #修改密码 有强壮度

在这里插入图片描述
修改完成后进入mysql中

mysql -pWestos+007 #进入mysql

在这里插入图片描述

vm4 master端需要授权

grant replication slave on *.* to repl@'%' identified by 'Westos+007';
show master status;

vm5\6 slave端需要配置参数

change master to master_host='172.25.9.4',master_user='repl',master_password='Westos+007',master_auto_position=1;
start slave;
show slave status\G;

在这里插入图片描述

注意:
以上操作,SSH密钥需要四台机器均互通,一主二从需要授权并修改参数(详细可以看之前博客的配置过程)。

manager主机vm7编辑主配置文件,对master端进行监控,

mkdir /etc/masterha
cp app1.cnf /etc/masterha/

vim /etc/masterha/app1.cnf

[server default]
user=root
password=Westos+007
ssh_user=root
master_binlog_dir= /var/lib/mysql
remote_workdir=/tmp
secondary_check_script= masterha_secondary_check -s 172.25.9.5 -s 172.25.9.6
ping_interval=3
repl_user=repl
repl_password=Westos+007
# master_ip_failover_script= /script/masterha/master_ip_failover
# shutdown_script= /script/masterha/power_manager
# report_script= /script/masterha/send_report
# master_ip_online_change_script= /script/masterha/master_ip_online_change

manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log

[server1]
hostname=172.25.9.4

[server2]
hostname=172.25.9.5
candidate_master=1

[server3]
hostname=172.25.9.6
no_master=1

配置完成后进行验证:
manager端:
检测ssh免密登陆是否正常

masterha_check_ssh --conf=/etc/masterha/app1.cnf #检测ssh

在这里插入图片描述
成功结果:
在这里插入图片描述

检测一主二从配置是否正常

masterha_check_repl --conf=/etc/masterha/app1.cnf #检测授权

在这里插入图片描述

若未授权,进入master主机msyql 给root用户远程登陆的权限

grant all on *.* to root@'%' identified by 'Westos+007';

成功结果:
在这里插入图片描述


二、手动切换master

当前master处于alive模式时,在manager端进行

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=172.25.9.5 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000

成功显示:
在这里插入图片描述
也可进入mysql数据库show slave status\G;查看故障解决结果。

当前master处于dead模式时

masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.cnf --dead_master_host=172.25.9.5 --dead_master_port=3306 --new_master_host=172.25.9.4 --new_master_port=3306 --ignore_last_failover

可将之前的vm4mysql服务区关闭掉,模拟master down掉的情景。


三、脚本自动切换master

小脚本,自动切

masterha_manager --conf=/etc/masterha/app1.cnf &
ps ax #查看后台进程

在这里插入图片描述

在这里插入图片描述

执行脚本读取文件 并打入后台,模拟master服务区down掉,
在这里插入图片描述
将当前master关闭后,脚本自动后台运行,
在这里插入图片描述
完成后,查看进程,脚本执行完毕

在这里插入图片描述
也可进入mysql进行复查。


标签:运维,--,MHA,manager,masterha,master,ssh,mysql
来源: https://blog.csdn.net/weixin_45233090/article/details/118369556