標籤:heartbeat v2 mysql 高可用 叢集
主機規劃:
高可用伺服器安裝v2版本的heartbeat,同時這兩個節點上安裝有mysql,運行時只有一個節點可以運行mysql,另外一個節點備用,後端有一個nfs共用儲存,用於提供共用目錄,用於儲存資料庫的資料。
IP地址設定為:
HA1:172.16.103.1
HA2:172.16.103.2
NFS:172.16.103.3
實驗過程:
一、準備NFS伺服器
# mkdir -pv /nfs/shared# groupadd -g 3306 mysql# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql# chown -R mysql.mysql /nfs/shared# vim /etc/exportsnfs/shared 172.16.0.0/16(no_root_squash,rw,async)# service nfs start
二、配置HA1和HA2兩台伺服器,使得它們之間可以基於ssh公開金鑰方式通訊,而且資料互動基於hosts檔案來解析對方的主機名稱,並且同步好時間,這些是配置後面步驟的前提。具體步驟,請參考前面的部落格內容。
配置HA1:
安裝mysql前準備工作:
# groupadd -g 3306 mysql# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql# mkdir -pv /mydata/data# chown -R mysql.mysql /mydata/data
初始化資料庫:
# mount -t nfs 172.16.103.3:/nfs/shared /mydata/data# tar xf mariadb-5.5.30-linux-x86_64.tar.gz -C /usr/local/# cd /usr/local# ln -sv mariadb-5.5.39-linux-x86_64.tar.gz mysql# cd mysql# chown -R mysql.mysql ./# scripts/mysql_install_db --user=mysql --datadir=/mydata/data# cp support-files/my-large.cnf /etc/my.cnf #添加資料庫的資料目錄# vim /etc/my.cnfdatadir = /mydata/data# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
嘗試啟動資料庫並測試是否可以正常訪問,注意這時已經掛載了nfs,如果以後需要啟動或者停用資料庫,一定要注意nfs共用目錄是否在掛載狀態:
# service mysqld start
另外一個高可用的節點HA2的資料庫初始化方式和HA1是一致的,就不再重複。
在HA1和HA2兩個基點上安裝heartbeat:
解決依賴關係:
# yum install perl_TimeData net-snmp-libs libnet PyXML
安裝heartbeat:
# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
為heartbeat提供資源檔、秘鑰檔案以及設定檔:
# cd /usr/share/doc/heartbeat-2.1.4/# cp -p ha.cf haresources authkeys /etc/ha.d/
修改秘鑰檔案的屬性,因為heartbeat服務啟動時會檢測這個檔案的屬性,如果不是600,會報錯。
# cd /etc/ha.d# chmod 600 authkeys
修改設定檔添加對應的這兩個高可用的節點,添加組播地址和Pingnode裝置,其中最重要的一點是要啟用heartbeat V2的功能,在設定檔中添加一行內容為crm on即可,同時為兩個節點之間建立通訊使用的秘鑰,這部分內容請參考前面部落格的內容。
# vim ha.cfcrm on
在兩個節點的heartbeat都安裝完成後,嘗試啟動heartbeat,注意啟動之前一定要停用與mysql相關的服務,還要卸載掉掛載的nfs磁碟裝置。
# service heartbeat start
在服務啟動之後,可以查看一下Heartbeat服務監聽的連接埠是否正常。
# ss -tunlp tcp LISTEN 0 10 *:5560 *:*
heartbeat程式為用戶端程式連入伺服器端配置高可用服務時自動在/etc/passwd檔案中建立了一個使用者,該使用者名稱為hacluster,不過這個使用者建立時沒有設定密碼,需要為該使用者建立一個密碼,以便使用。
# passwd hacluster
啟動heartbeat的用戶端程式,hb_gui,在圖形介面下配置高可用服務,在windows中最好裝有xmanager等程式,以便啟動圖形介面。
# hb_gui &
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/1C/wKioL1QPBdDyf7daAAIXTSrFlpk614.jpg" title="2014-09-09 15_51_58-31_55_90_44 Player.jpg" alt="wKioL1QPBdDyf7daAAIXTSrFlpk614.jpg" />首先,mysql的高可用資源需要3個,IP,mysqld,nfs,這3個資源啟動順序上有限制,這3個資源都要運行在一個節點上,而且mysqld要在nfs啟動之後出能啟動,ip地址和mysqld服務之間倒沒有依賴關係,服務準備好後再啟動IP也可以的,高可用的httpd服務是需要先啟動IP的,因為服務啟動的時候明確需要IP地址的資源。這兩類高可用資源之間是不同的。
高可用資源的定義步驟如下,首先定義mysql使用的IP地址:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/1B/wKiom1QPCFeDyGVEAAIIs6ptUT0433.jpg" title="2014-09-09 22_01_36-Linux HA Management Client.jpg" alt="wKiom1QPCFeDyGVEAAIIs6ptUT0433.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/1B/wKiom1QPCJPDqWxBAAMAoDWF5J0885.jpg" title="2014-09-09 22_02_36-Linux HA Management Client.jpg" alt="wKiom1QPCJPDqWxBAAMAoDWF5J0885.jpg" />定義第二個資源,這三個資源都是native類型的。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/1C/wKioL1QPCSTT3v7XAAMowcvHn_Y006.jpg" title="2014-09-09 22_04_10-Linux HA Management Client.jpg" alt="wKioL1QPCSTT3v7XAAMowcvHn_Y006.jpg" />定義第三個資源:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/1C/wKioL1QPCW2SGC3kAALOw30_tZ0596.jpg" title="2014-09-09 22_05_54-Linux HA Management Client.jpg" alt="wKioL1QPCW2SGC3kAALOw30_tZ0596.jpg" />定義這三個資源之間的約束關係
nfs與mysqld要運行在一個節點上:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/1B/wKiom1QPCb6jECPgAAC76KQtXxo526.jpg" title="2014-09-09 22_07_37-Linux HA Management Client.jpg" alt="wKiom1QPCb6jECPgAAC76KQtXxo526.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/1C/wKioL1QPChbwTfoEAALLjODpjkU852.jpg" title="2014-09-09 22_08_56-Linux HA Management Client.jpg" alt="wKioL1QPChbwTfoEAALLjODpjkU852.jpg" />
mysqlip與mysql-service要運行在一個節點上:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/1B/wKiom1QPCnyCv2kIAALVwUdvJPM586.jpg" title="2014-09-09 22_10_40-Linux HA Management Client.jpg" alt="wKiom1QPCnyCv2kIAALVwUdvJPM586.jpg" />定義好這好Colocation約束後這3個資源會同時運行在同一個節點上。另外很重要的一點是mysqld服務要在nfs分區掛載之後啟動,所以要定義資源的順序約束:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/1B/wKiom1QPC0OQXmznAANiJVRsnNY554.jpg" title="2014-09-09 22_14_04-Linux HA Management Client.jpg" alt="wKiom1QPC0OQXmznAANiJVRsnNY554.jpg" />定義好啟動順序的約束之後還可以定義運行在哪個高可用服務節點的傾向性,在Locations約束中定義:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/1C/wKioL1QPDACTKrfhAAJY-HT_JwE937.jpg" title="2014-09-09 22_17_08-SueK1ng的部落格管理後台-51CTO技術部落格-領先的IT技術部落格.jpg" alt="wKioL1QPDACTKrfhAAJY-HT_JwE937.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/1B/wKiom1QPDCCzj6D9AAJSjeRZiE0794.jpg" title="2014-09-09 22_17_53-Linux HA Management Client.jpg" alt="wKiom1QPDCCzj6D9AAJSjeRZiE0794.jpg" />設定好ID及相應的資源之後,需要為該資源添加運算式及對該節點的傾向性:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/1D/wKioL1QPDLqAS933AAK0GH9-6bQ716.jpg" title="2014-09-09 22_19_53-Linux HA Management Client.jpg" alt="wKioL1QPDLqAS933AAK0GH9-6bQ716.jpg" />
現在可以嘗試啟動所有的資源,並查看資源在各個高可用基點間切換的效果,第一次啟動時,預設會依據運行在HA1節點上,因為資源約束定義傾向性時定義資源傾向運行在HA1上:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/1B/wKiom1QPDWnC7H3OAAH9BWq_v7A056.jpg" title="2014-09-09 22_21_57-Linux HA Management Client.jpg" alt="wKiom1QPDWnC7H3OAAH9BWq_v7A056.jpg" />
嘗試讓HA1運行於standby狀態,查看服務切換的效果:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/1D/wKioL1QPDceSVgGgAAHQf4cwPEo564.jpg" title="2014-09-09 22_24_36-Linux HA Management Client.jpg" alt="wKioL1QPDceSVgGgAAHQf4cwPEo564.jpg" />
現在資源都運行在HA2上。在主機端使用ifconfig等命令查看:
[[email protected] ha.d]# ifconfigeth0 Link encap:Ethernet HWaddr 00:0C:29:E1:37:51 inet addr:172.16.103.2 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fee1:3751/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:180619 errors:0 dropped:0 overruns:0 frame:0 TX packets:122944 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:110119869 (105.0 MiB) TX bytes:21043781 (20.0 MiB)eth0:0 Link encap:Ethernet HWaddr 00:0C:29:E1:37:51 inet addr:172.16.103.60 Bcast:172.16.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
配置的IP地址正常的運行在了HA2上。串連資料庫測試:
[[email protected] ha.d]# service mysqld statusMySQL running (22193) [ OK ][[email protected] ha.d]# mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 2Server version: 5.5.39-MariaDB-log MariaDB ServerCopyright (c) 2000, 2014, Oracle, Monty Program Ab and others.Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.MariaDB [(none)]>
資料庫訪問也正常。
基於heartbeat v2 crm實現配置基於nfs的mysql HA叢集