linux项目实战---lamp架构(三)MHA高可用集群搭建

MHA高可用集群搭建

  • 一.环境搭建
    • 1.虚拟机ip分配
    • 2.配置免密通信
    • 3.安装环境
    • 4.配置一主二从
    • 5.manager端配置
  • 二.手动切换master
    • 1.alive正常运行切换
    • 2.dead宕机切换
  • 三.脚本自动切换
    • 1.宕机自动切换
    • 2.vip漂移

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

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

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

一.环境搭建

集群搭建需要四台虚拟机,一台manager负责集群管理,一台作为master,两台作为master的slave端。
MHA高可用集群的搭建要求必须是主从复制为基础。

1.虚拟机ip分配

server1--->master 172.25.3.1
server2--->slave1 172.25.3.2
server3--->slave2 172.25.3.3
server4--->manager 172.25.3.4

2.配置免密通信

yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
ssh-keygen 
ssh-copy-id server1
ssh-copy-id server2
ssh-copy-id server3
ssh-copy-id manager

scp  -r .ssh/ server1:
scp  -r .ssh/ server2:
scp  -r .ssh/ server3:
scp  -r .ssh/ manager:

3.安装环境

server1,server2,server3:

tar xf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar

server4:

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

linux项目实战---lamp架构(三)MHA高可用集群搭建_第1张图片

4.配置一主二从

server1,server2,server3初始化mysql

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

进入mysql

mysql -pWestos+007 #进入mysql

server1 master授权:

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

server1/2 slave配置连接参数:

CHANGE MASTER TO MASTER_HOST='172.25.3.2',
MASTER_USER='repl',
MASTER_PASSWORD='Westos+003',
MASTER_AUTO_POSITION = 1;

CHANGE MASTER TO MASTER_HOST='172.25.3.3',
MASTER_USER='repl',
MASTER_PASSWORD='Westos+003',
MASTER_AUTO_POSITION = 1;


start slave;
show slave status\G;

linux项目实战---lamp架构(三)MHA高可用集群搭建_第2张图片

linux项目实战---lamp架构(三)MHA高可用集群搭建_第3张图片

5.manager端配置

创建目录,拷贝模板

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

配置app1.cnf

[server default]
user=root
password=Westos+003
ssh_user=root
master_binlog_dir= /var/lib/mysql
remote_workdir=/tmp
secondary_check_script= masterha_secondary_check -s 172.25.3.250 -s 172.25.3.3
ping_interval=3
repl_user=repl
repl_password=Westos+003
# 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.3.1

[server2]
hostname=172.25.3.2
candidate_master=1

[server3]
hostname=172.25.3.3
no_master=1

linux项目实战---lamp架构(三)MHA高可用集群搭建_第4张图片
linux项目实战---lamp架构(三)MHA高可用集群搭建_第5张图片

配置完成后进行验证:

masterha_check_ssh  --conf=/etc/masterha/app1.cnf #检测免密连接
masterha_check_repl  --conf=/etc/masterha/app1.cnf #检测主从配置

成功后说明配置完成。

二.手动切换master

1.alive正常运行切换

server1 切换至 server2

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

linux项目实战---lamp架构(三)MHA高可用集群搭建_第6张图片
查看状态:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第7张图片

linux项目实战---lamp架构(三)MHA高可用集群搭建_第8张图片

2.dead宕机切换

当server2宕机时:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第9张图片
执行手动切换:

masterha_master_switch --master_state=dead 
--conf=/etc/masterha/app1.cnf 
--dead_master_host=172.25.3.2 
--dead_master_port=3306 
--new_master_host=172.25.3.1 
--new_master_port=3306 
--ignore_last_failove

linux项目实战---lamp架构(三)MHA高可用集群搭建_第10张图片
linux项目实战---lamp架构(三)MHA高可用集群搭建_第11张图片
server2恢复(作为slave):
linux项目实战---lamp架构(三)MHA高可用集群搭建_第12张图片

三.脚本自动切换

1.宕机自动切换

将切换脚本打入后台:

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

linux项目实战---lamp架构(三)MHA高可用集群搭建_第13张图片
模拟master宕机:

systemctl stop mysqld

脚本自动执行:

在这里插入图片描述
执行完毕脚本退出进程:
在这里插入图片描述
查看master是否发生改变:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第14张图片
切换成功

2.vip漂移

在实际应用中,脚本除了会切换master端,还会将原master 的ip转移到新的master上,即在固定ip下实现master的切换,确保不影响用户的体验。

在配置文件app1.cnf中打开ip脚本:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第15张图片
脚本内容,确保要漂移的ip为同一网段:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第16张图片
为脚本赋予x权限:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第17张图片
为master添加临时ip:

在这里插入图片描述
当前master为server1 172.25.3.1
linux项目实战---lamp架构(三)MHA高可用集群搭建_第18张图片

执行脚本:

masterha_manager --conf=/etc/masterha/app1.cnf &

模拟宕机:

systemctl stop mysqld

脚本执行完毕查看状态:
server1 的 172.25.3.100 ip已经不存在

linux项目实战---lamp架构(三)MHA高可用集群搭建_第19张图片server2成为新master:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第20张图片

查看server2ip,发现临时ip 172.25.3.100,证明ip漂移成功:

linux项目实战---lamp架构(三)MHA高可用集群搭建_第21张图片

测试网络连接数据库:
linux项目实战---lamp架构(三)MHA高可用集群搭建_第22张图片
成功!!!

你可能感兴趣的:(linux学习,lamp架构,数据库,运维,linux,分布式)