MHA(Master High Availability)是目前在MySQL高可用方面相對(duì)成熟的一個(gè)解決方案,MHA在監(jiān)控到master節(jié)點(diǎn)故障時(shí),會(huì)提升其中擁有最新數(shù)據(jù)的slave節(jié)點(diǎn)成為新的master節(jié)點(diǎn),在此期間,MHA會(huì)通過于其它從節(jié)點(diǎn)獲取額外信息來避免一致性方面的問題。MHA還提供了master節(jié)點(diǎn)的在線切換功能。
創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、新縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為新縣等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。MHA 服務(wù)有兩種角色,MHA Manager(管理節(jié)點(diǎn))和 MHA Node(數(shù)據(jù)節(jié)點(diǎn)):
MHA Manager:通常單獨(dú)部署在一臺(tái)獨(dú)立機(jī)器上管理多個(gè) master/slave 集群,每個(gè)master/slave集群稱作一個(gè)application。
MHA node:運(yùn)行在每臺(tái)MySQL服務(wù)器上(master/slave/manager),它通過監(jiān)控具備解析和清理logs功能的腳本來加快故障轉(zhuǎn)移。
環(huán)境
本次實(shí)驗(yàn)環(huán)境共有四個(gè)節(jié)點(diǎn),其角色分配如下所示。
manager: MHA Manager
master: MariaDB master
slave1: MariaDB slave
slave2: MariaDB slave
修改各節(jié)點(diǎn)名字,各節(jié)點(diǎn)的/etc/hosts 文件配置內(nèi)容中添加:
172.16.1.2 manager.zrs.com manager
172.16.1.3 master.zrs.com master
172.16.1.4 slave1.zrs.com slave1
172.16.1.5 slave2.zrs.com slave2
初始主節(jié)點(diǎn)master配置:
server_id=1
relay_log=relay-log
log_bin=master-log
節(jié)點(diǎn)slave1的配置:
server_id=2
relay_log=relay-log
log_bin=master-log
relay_log_purge=0
read_only=1
節(jié)點(diǎn)slave2的配置:
server_id=3
relay_log=relay-log
log_bin=master-log
relay_log_purge=0
read_only=1
下面進(jìn)行主從復(fù)制架構(gòu)
主服務(wù)器
授權(quán)從服務(wù)器,并刷新
MariaDB [(none)]> grant replication slave,replication client on . to 'repluser'@'172.16.1.4'identified by 'replpass';
MariaDB [(none)]> grant replication slave,replication client on . to 'repluser'@'172.16.1.5'identified by 'replpass';
MariaDB [(none)]> flush privileges;
從服務(wù)器配置
兩個(gè)slave都指定主服務(wù)器
MariaDB [(none)]> change master to master_host='172.16.1.3',master_user='repluser',master_password='replpass',master_log_file='binlog.000003',master_log_pos=245;
開啟io線程和sql線程
MariaDB [(none)]> start slave io_thread;
MariaDB [(none)]> start slave sql_thread;
在所有MySQL節(jié)點(diǎn)授權(quán)
MariaDB [(none)]> GRANT ALL ON . TO 'mhamngr'@'172.16.1.%' IDENTIFIED BY 'mhapass';
建立免鑰通信
MHA集群中的各節(jié)點(diǎn)彼此之間均需要基于ssh互信通信,以實(shí)現(xiàn)遠(yuǎn)程控制及數(shù)據(jù)管理功能??稍贛anager節(jié)點(diǎn)生成密鑰對(duì),并設(shè)置其可遠(yuǎn)程連接本地主機(jī)后,將私鑰文件及authorized_keys文件復(fù)制給余下的所有節(jié)點(diǎn)即可。
[root@manager ~]# ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): .ssh/id_rsa
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
80:59:23:b9:f8:ce:7e:86:66:ad:23:82:b3:d9:a8:81 root@manager.zrs.com
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| .= . |
| .o.. |
| . . . |
| . S |
|. . |
|E o o |
|+=. B + |
|*+.=o= |
+-----------------+
[root@manager ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys
[root@manager ~]# chmod go= .ssh/authorized_keys
[root@manager ~]# scp -p .ssh/id_rsa .ssh/authorized_keys root@master:/root/.ssh/
The authenticity of host 'master (172.16.1.3)' can't be established.
ECDSA key fingerprint is 65:f7:d6:d7:ae:3b:a2:dc:2b:bc:33:64:0e:47:11:b4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'master' (ECDSA) to the list of known hosts.
root@master's password:
id_rsa 100% 1675 1.6KB/s 00:00
authorized_keys 100% 402 0.4KB/s 00:00
[root@manager ~]# scp -p .ssh/id_rsa .ssh/authorized_keys root@slave1:/root/.ssh/
The authenticity of host 'slave1 (172.16.1.4)' can't be established.
ECDSA key fingerprint is eb:b4:c4:c4:aa:15:2c:f8:6b:e8:cc:59:75:7a:a5:89.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave1' (ECDSA) to the list of known hosts.
root@slave1's password:
id_rsa 100% 1675 1.6KB/s 00:00
authorized_keys 100% 402 0.4KB/s 00:00
[root@manager ~]# scp -p .ssh/id_rsa .ssh/authorized_keys root@slave2:/root/.ssh/
The authenticity of host 'slave2 (172.16.1.5)' can't be established.
ECDSA key fingerprint is be:2f:9f:d7:f8:2e:09:b1:7d:29:c2:76:53:0f:d2:94.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,172.16.1.5' (ECDSA) to the list of known hosts.
root@slave2's password:
id_rsa 100% 1675 1.6KB/s 00:00
authorized_keys 100% 402 0.4KB/s 00:00
安裝MHA
除了源碼包,MHA官方也提供了rpm格式的程序包,其下載地址為https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2。這次安裝是使用的rpm格式,在manager和node的所有節(jié)點(diǎn)均需安裝MHA Node。
安裝 MHA Manager
rpm安裝方式:
[root@manager ~]# yum install perl-DBD-MySQLperl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
[root@manager ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
[root@manager ~]# rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
tar包安裝方式:
tar -zxf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
perl Makefile.PL
make
make install
安裝 MHA Node
rpm安裝方式:
~]# yum install perl-DBD-MySQL
~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
tar包安裝方式:
tar -zxfmha4mysql-node-0.56.tar.gz
cd mha4mysql-node-0.56
perl Makefile.PL
make
make install
初始化 MHA
Manger節(jié)點(diǎn)需要為每個(gè)監(jiān)控的master/slave集群提供一個(gè)專用的配置文件,而所有的master/slave 集群也可共享全局配置。全局配置文件默認(rèn)為/etc/masterha_default.cnf,其為可選配置。如果僅監(jiān)控一組 master/slave集群,也可直接通過application的配置來提供各服務(wù)器的默認(rèn)配置信息。而每個(gè)application的配置文件路徑為自定義,本次實(shí)驗(yàn)將使用/etc/masterha/app1.cnf
[server default]
user=mhamngr
password=mhapass
manager_workdir=/data/masterha/app1
manager_log=/data/masterha/app1/manager.log
remote_workdir=/data/masterha/app1
ssh_user=root
repl_user=repluser
repl_password=replpass
ping_interval=1
[server1]
hostname=172.16.1.3
candidate_master=1
[server2]
hostname=172.16.1.4
candidate_master=1
[server3]
hostname=172.16.1.5
檢測(cè)各節(jié)點(diǎn)間ssh互信通信配置是否正常
[root@manager ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
看到輸出的信息中,最后一行顯示如下,表示其通過檢測(cè)。
[info] All SSH connection tests passed successfully.
檢查管理的MySQL復(fù)制集群的連接配置參數(shù)是否正常
[root@manager ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf
看到輸出的信息中,最后一行顯示如下,表示其通過檢測(cè)。
MySQL Replication Health is OK.
啟動(dòng)MHA
[root@manager ~]# nohup masterha_manager --conf=/etc/masterha/app1.cnf > /data/masterha/app1/manager.log 2>&1 &
查看master節(jié)點(diǎn)的狀態(tài)
[root@manager ~]# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:23265) is running(0:PING_OK), master:172.16.1.3
[root@manager ~]#
停止MHA
[root@manager ~]# masterha_stop --conf=/etc/masterha/app1.cnf
Stopped app1 successfully.
MHA 提供諸多工具程序,其常見的如下所示。
Manager 節(jié)點(diǎn):
masterha_check_ssh:MHA 依賴的 SSH 環(huán)境檢測(cè)工具;
masterha_check_repl:MySQL 復(fù)制環(huán)境檢測(cè)工具;
masterha_manager:MHA 服務(wù)主程序;
masterha_check_status:MHA 運(yùn)行狀態(tài)探測(cè)工具;
masterha_master_monitor:MySQL master 節(jié)點(diǎn)可用性監(jiān)測(cè)工具;
masterha_master_switch:master 節(jié)點(diǎn)切換工具;
masterha_conf_host:添加或刪除配置的節(jié)點(diǎn);
Node 節(jié)點(diǎn):
save_binary_logs:保存和復(fù)制 master 的二進(jìn)制日志:
apply_diff_relay_logs:識(shí)別差異的中繼日志事件并應(yīng)用于其它 slave:
filter_mysqlbinlog:去除不必要的 ROLLBACK 事件(MHA 已不再使用這個(gè)工具):
自定義擴(kuò)展:
secondary_check_script:通過多條網(wǎng)絡(luò)路由檢測(cè) master 的可用性;
master_ip_failover_script:更新 application 使用的 masterip;
shutdown_script:強(qiáng)制關(guān)閉 master 節(jié)點(diǎn);
report_script:發(fā)送報(bào)告;
init_conf_load_script:加載初始配置參數(shù);
測(cè)試故障轉(zhuǎn)移
在master節(jié)點(diǎn)上面關(guān)閉mariadb服務(wù)
[root@master ~]# killall -9 mysqld mysqld_safe
查看日志發(fā)現(xiàn),172.16.1.3這個(gè)節(jié)點(diǎn)down了,172.16.1.4提升為master。
使用zabbix完成masterha-manager重新啟動(dòng)
大致步驟
略過zabbix server和agent端的安裝步驟,我在manager主機(jī)上同時(shí)安裝了zabbix server和zabbix agent,監(jiān)控剛才設(shè)置的nohup啟動(dòng)的manager管理進(jìn)程,一旦發(fā)現(xiàn)這個(gè)后臺(tái)命令執(zhí)行結(jié)束了,立即通過zabbix里面設(shè)置的條件和觸發(fā)器,來調(diào)用腳本,使得manager進(jìn)程始終運(yùn)行在manager上。
在agent上需要完成的配置:
1.zabbix用戶擁有所需要的管理權(quán)限
編輯/etc/sudoers文件
注釋如下行:因?yàn)橄到y(tǒng)默認(rèn)是要能夠通過tty登陸的用戶,執(zhí)行命令,zabbix沒有可以登錄系統(tǒng)的權(quán)限,所以要把這個(gè)注釋
添加如下行:這樣做不怎么安全,生產(chǎn)環(huán)境下,要用更為安全的方法
#Defaults requiretty
zabbix ALL=(ALL)NOPASSWD:ALL
2.agent進(jìn)程要允許執(zhí)行遠(yuǎn)程命令
開啟遠(yuǎn)程命令,即將/etc/zabbix/zabbix_agentd.conf配置文件中的該配置設(shè)置為1即可。
EnableRemoteCommands=1
3.開啟服務(wù)
[root@manager ~]# systemctl start zabbix-agent.service
4.在客戶端的界面上設(shè)置Hosts,items,Triggers,Actions(Action,Conditions,Operations),
需要注意的是Operations需要設(shè)置Commands調(diào)用腳本來啟動(dòng)MHA程序
[root@manager ~]# cat mannager.sh
nohup masterha_manager --conf=/etc/masterha/app1.cnf > /data/masterha/app1/manager.log 2>&1 &
5.可以測(cè)試zabbix是否根據(jù)設(shè)置的事務(wù)動(dòng)作,完成腳本的調(diào)用,完成manager的后臺(tái)啟動(dòng)
關(guān)閉nohup執(zhí)行的進(jìn)程用
[root@manager ~]# kill -9 +id #這個(gè)id號(hào)需要先查詢
手動(dòng)get獲取:
[root@manager ~]# zabbix_get -s 172.16.1.2 -k masterha.manager
2
再次get獲?。?/p>
[root@manager ~]# zabbix_get -s 172.16.1.2 -k masterha.manager
當(dāng)這里顯示是0了,同時(shí)通過ps命令可以查看這個(gè)進(jìn)程確實(shí)已經(jīng)啟動(dòng)了,于是使用zabbix完成masterha-manager重新啟動(dòng)就成功了。
zabbix_get是在命令行下獲取數(shù)值的zabbix命令:
-s 要查的ip地址,本地或者遠(yuǎn)程的都可以
-p zabbix_agentd的端口
-k key值
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:mysql3-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://aaarwkj.com/article6/cccsog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、標(biāo)簽優(yōu)化、網(wǎng)站營銷、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容