heartbeat v2 實現HA (二)

heartbeat v2 版本簡介
v1版本通過haresource配置文件手動定義資源,然後手動複製到各個節點,非常不方便管理和使用,於是就催生了heartbeat v2 版本。

V2 版本不再基於haresoures配置文件,而是基於crm實現。XML,只需在任意一個節點定義資源之後就可以通知給所以節點。

  1. /var/lib/heartbeat/crm :用戶用XML格式定義資源文件的路徑

  2. 但是XML格式的文件一般用戶都不會寫,不用着急,heartbeast內置了一個程序會幫我們把haresoures格式文件翻譯爲XML格式文件:另外也可以用GUI圖像話界面配置。
    /usr/lib64/hearebeat/haresources2cib.py(python編寫)

基於GUI圖像化配置步驟(接v1版本配置)
spacer.gifwKiom1NSiZejADm0AAEghBkx58Y649.jpg
1、停掉heartbeat服務,刪除haresoures文件。
2、編輯配置文件ha.,(可以用scp,也可以用工具ha_paropagate:之複製authkeys和ha.)
[root@node1 ha.d]# vim ha.
node    node1.nyist.com
node    node2.nyist.com
#
crm on---------------啓動crm
[root@node1 ha.d]# /usr/lib64/heartbeat/ha_propagate
Propagating HA configuration files to node node2.nyist.com.
ha.                                                                                                               100%   10KB  10.4KB/s   00:00  
authkeys
3、要想安裝基於圖像話管理工具,需要兩個節點安裝heartbeat-gui
[root@node1 heartbeat2]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm
4、啓動heartbeat服務,可以看到mgmtd監聽在5560端口:只要這個進程一啓動,就可以使用crm命令管理資源了
root@node1 heartbeat2]# ss -tunlp | grep 5560
tcp    LISTEN     0      10                     *:5560                  *:*      users:(("mgmtd",11576,10))
mamtd:接收用戶的連接命令,並提供API接口的進程
此時就有了一大堆crm命令可以使用了
[root@node1 heartbeat2]# crm
crmadmin       crm_failcount  crm_resource   crm_uuid
crm_attribute  crm_master     crm_sh         crm_verify
crm_diff       crm_mon        crm_standby
5、管理資源需要一個用戶,安裝heartbeat的時候已經生成了一個hacluster用戶,這裏給其加密碼,我們需要用這個用戶登錄管理。
hacluster:x:496:493:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin
[root@node1 ~]# passwd hacluster
實例一
登錄管理,定義資源和約束
[root@node1 ~]# hb_gui &

wKioL1NSiaLhLjxhAAKupEzyL_k605.jpg

wKiom1NSic2wJ3kDAAJyrWMNSxk438.jpg

wKioL1NSiaTDstBUAABDoyAgrHg654.jpg

默認工作在負載均衡模式,兩個資源分別運行在不同節點。
定義排列約束(或資源組),讓兩個資源運行在一個節點上:
spacer.gif

wKiom1NSigGB7wVgAAKfd-Of4m8081.jpg

wKiom1NSigGi63u7AABC9ykOjYE885.jpg

定義位置約束:服務更傾向運行在哪個節點上
spacer.gifwKioL1NSihGzTdwdAAMHbci61kM636.jpg
定義順序約束:哪個資源優先啓動
spacer.gifwKioL1NSih-AWHMIAAKo6bz2Pao258.jpg

實例二、通過定義組來統一管理資源
定義組資源後就不用定義排列約束了

wKiom1NSiqPjfmIrAACd2Ujcpgw026.jpg

wKioL1NSinqRv2gzAAKHmx3Cepg966.jpg

wKiom1NSiqWAipKIAAKByJKu_Is286.jpg

wKioL1NSin3ydPkwAAJ17E3obmA272.jpg

wKiom1NSiqaDkWa4AABolKxFpe4077.jpg


STONITH
爲了防止退出集羣的節點對數據造成破壞,需要定義STONITH設備:當某節點發生故障時,集羣成員將其踢除。

spacer.gif
spacer.gif

wKiom1NSitTyukAnAAMF5zbX-qo217.jpg

wKioL1NSiqzAmSXLAAKrdB_V4888.jpg




第二種集羣
將Mysql定義到集羣中:

wKioL1NSisrQgj-KAAFQd9TO5Ds921.jpg
   定義兩個組,一個web,一個mysql,heartbeat默認會提供負載均衡功能,會將兩個組資源分攤到兩個節點上。
創建共享存數,存放MySQL數據,
   mysql使用另外一個VIP 172.16.20.10

配置步驟:

1、創建NFS文件系統供Mysql掛載
[root@My2 ~]# mkdir /nfs
[root@My2 ~]# vim /etc/exports
/nfs  172.16.0.0/16(rw,no_root_squash)
[root@My2 ~]# groupadd -r -g 306 mysql
[root@My2 ~]# useradd -r -u 306 -g 306 mysql
[root@My2 ~]# id mysql
uid=306(mysql) gid=306(mysql) groups=306(mysql)
[root@My2 ~]# setfacl -m u:mysql:rwx /nfs
2、各節點提供和nfs中定義的Mysql的id號碼一致的mysql用戶,並測試其能正常讀寫
[root@node1 ~]# groupadd -r -g 306 mysql
[root@node1 ~]# useradd -r -g 306 -u 306 mysql
[root@node1 ~]# id mysql
uid=306(mysql) gid=306(mysql) groups=306(mysql)
3、各節點二進制安裝mysql數據庫,注意,只需要一個節點初始化數據庫即可。安裝前先掛載nfs.
[root@node1 ~]# mkdir /mydata
[root@node1 ~]# mount -t nfs 172.16.20.62:/nfs /mydata/
[root@node1 ~]# su mysql
bash-4.1$ cd /mydata/
bash-4.1$ mkdir data binlogs relaylogs
[root@node1 ~]# tar -xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/
[root@node1 ~]# cd /usr/local/
[root@node1 local]# ln -sv mariadb-10.0.10-linux-x86_64/ mysql
[root@node1 mysql]# cd mysql
[root@node1 mysql]# chown root.mysql .* -R
[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@node1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node1 mysql]# vim /etc/my.cnf
datadir=/mydata/data
bin-log=/mydata/binlogs/mysql-bin
導出頭文件,PATH環境變量,庫文件,幫助文件
[root@node1 mysql]# vim /etc/man.config
[root@node1 mysql]# vim /etc/profile.d/mysql.sh
[root@node1 mysql]# ln /usr/local/mysql/include /usr/include/
[root@node1 mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
`/usr/include/mysql' -> `/usr/local/mysql/include'
[root@node1 mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@node1 mysql]# ldconfig
4、關閉mysql服務,注意不要讓其開機自啓。卸載nfs文件系統。(此時爲了提高安全性可以把掛載選項no_root_squash去掉了)
5、然後就可以定義一個mysql的資源組來創建集羣服務了

wKiom1NSi0Gi_O29AAN4hFei7Do446.jpg

wKioL1NSixjwJwPGAAKXmSBpc70764.jpg

wKioL1NSixmDAeFRAAJhmrG2TdU899.jpg

6、heartbeat默認具有負載均衡的功能,所以當你定義兩個資源的時候,會平均分配到兩個節點上。停掉一個節點,資源會轉移到另一個節點上。

wKiom1NSi0TCKS7yAAKRG3Il_nw035.jpg

wKioL1NSixzzhLZoAAKTb2f42R8639.jpg

5、授權一個遠程客戶端登錄mysql驗證HA效果。
[root@node2 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.10-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> grant all on *.* TO 'xuqimin'@'172.16.%.%' IDENTIFIED BY 'xuqimin';
Query OK, 0 rows affected (0.00 sec)
[root@My2 nfs]# mysql -uxuqimin -h172.16.20.10 -pxuqimin
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.0.10-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databeses;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'databeses' at line 1
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| xuxu               |
+--------------------+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章