1. 程式人生 > 實用技巧 >通過LAMP組合,基於heartbeat v2 crm實現HA

通過LAMP組合,基於heartbeat v2 crm實現HA

Heartbeat的定義
Heartbeat 專案是 Linux-HA 工程的一個組成部分,也是目前開源HA專案中最成功的一個例子,Linux-HA的全稱是High-Availability Linux,這個開源專案的目標是:通過社群開發者的共同努力,提供一個增強linux可靠性(reliability)、可用性 (availability)和可服務性(serviceability)(RAS)的群集解決方案,它實現了一個高可用集群系統。心跳服務和叢集通訊是 高可用叢集的兩個關鍵元件,在 Heartbeat 專案裡,由 heartbeat 模組實現了這兩個功能。

二、Heartbeat的版本與元件

說明:Heartbeat有三個版本分別為Heartbeat v1.x,Heartbeat v2.x,Heartbeat v3.x。Heartbeat v1.x和Heartbeat v2.x版本的組成結構十分簡單,所有模組都集中在heartbeat中,到了v3版本後,整個heartbeat專案進行了拆分,分為不同的專案來分別 進行開發。
1.Heartbeat v1.x與v2.x的元件
heartbeat:節點間通訊檢測模組

ha-logd:叢集事件日誌服務

CCM(Consensus Cluster Membership):叢集成員一致性管理模組

LRM (Local Resource Manager):本地資源管理模組

Stonith Daemon: 使出現問題的節點從叢集環境中脫離或重啟

CRM(Cluster resource management):叢集資源管理模組

Cluster policy engine: 叢集策略引擎

Cluster transition engine:叢集轉移引擎(也叫策略執行引擎)

Heartbeat v1.x與Heartbeat v2.x區別:在Heartbeat v2.x中增加了一個新的叢集資源管理器crm,在Heartbeat v1.x中的叢集資源管理器是haresource,Heartbeat v2.x中為了相容v1.x保留了haresource,但同時又新增了一個功能更強大的crm資源管理器。crm管理方式有,一種是基於命令列 crmsh,一種是基於圖形介面的hb_gui。

2.Heartbeat v3.x的元件
Heartbeat:將原來的訊息通訊層獨立為heartbeat專案,新的heartbeat只負責維護叢集各節點的資訊以及它們之前通訊。

Cluster Glue:相當於一箇中間層,它用來將heartbeat和pacemaker關聯起來,主要包含2個部分,即為LRM和STONITH。

Resource Agent:用來控制服務啟停,監控服務狀態的指令碼集合,這些指令碼將被LRM呼叫從而實現各種資源啟動、停止、監控等等。

Pacemaker:也就是Cluster Resource Manager(叢集資源管理器,簡稱CRM),用來管理整個HA的控制中心,客戶端通過pacemaker來配置管理監控整個叢集。


作業:通過LAMP組合,基於heartbeat v2 crm實現HA。


1、地址規劃

node1.test.com192.168.77.101
node2.test.com192.168.77.30
vip192.168.77.200


2、主機名解析

[[email protected]~]#uname-n
node1.test.com
[[email protected]~]#cat/etc/hosts
127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
192.168.77.101node1.test.comnode1
192.168.77.130node2.test.comnode2
[[email protected]~]#uname-n
node2.test.com
[[email protected]~]#cat/etc/hosts
127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
192.168.77.101node1.test.comnode1
192.168.77.130node2.test.comnode2

3、配置雙方互信

[[email protected]~]#ssh-keygen-trsa-f~/.ssh/id_rsa-P''
[[email protected]~]#ssh-copy-id-i.ssh/id_rsa.pub[email protected]om
[[email protected]~]#ssh-keygen-trsa-f~/.ssh/id_rsa-P''
[[email protected]~]#ssh-copy-id-i.ssh/id_rsa.pub[email protected]

4、配置時間同步

#yum-yinstallntpdate
#ntpdatetime.windows.com

5、安裝lamp

[[email protected]~]#yuminstallhttpmysql-serverphpphp-mysql

6、安裝heartbeat相關軟體包

[[email protected]~]#yuminstallnet-snmp-libslibnetPyXML
[[email protected]~]#rpm-ivhheartbeat-2.1.4-12.el6.x86_64.rpmheartbeat-pils-2.1.4-12.el6.x86_64.rpmheartbeat-stonith-2.1.4-12.el6.x86_64.rpm

7、配置heartbeat


複製ha.cf,authkeys,haresources到/etc/ha.d下
[[email protected]~]#cp/usr/share/doc/heartbeat-3.0.4/{ha.cf,authkeys,haresources}/etc/ha.d/

編輯authkeys檔案

[[email protected]~]#opensslrand-hex8>>authkeys#生成金鑰追加到authkeys檔案中
[[email protected]~]#viauthkeys#修改為以下配置,使用sha1加密
auth2
#1crc
#2sha1HI!
#3md5Hello!
2sha1d0071be771be703c

編輯ha.cf主配置檔案

[[email protected]~]#grep-v'^#'ha.cf|sed'/^$/d'
logfacilitylocal0
mcasteth1225.0.0.169410#修改心跳資訊的傳播方式|組播
auto_failbackon
nodenode1.test.com#配置叢集中的節點數
nodenode2.test.com#配置叢集中的節點數

編輯haresources配置檔案

[[email protected]~]#grep-v"#"haresources
node1.test.com192.168.77.200/24/eth1httpd

複製配置檔案導node2

[[email protected]~]#scp/etc/ha.d/{ha.cf,haresources,authkeys}[email protected]:/etc/ha.d/

五、節點提供httpd服務

編輯html

[[email protected]~]#echo"<h1>node1.test.com</h1>">/var/www/html/index.html

啟動httpd

[[email protected]~]#servicehttpdstart

瀏覽node1

wKioL1YrktuzoSaLAAC_Nl02afM037.jpg



node2關閉IPTABELS

[[email protected]~]#getenforce
Disabled
[[email protected]~]#serviceiptablesstop
iptables:將鏈設定為政策ACCEPT:natmanglefilter[確定]
iptables:清除防火牆規則:[確定]
iptables:正在解除安裝模組:[確定]
[[email protected]~]#

訪問node2節點

wKioL1Yrk8fDzG9iAACvyIUwVDs862.jpg

啟動heartbeat服務

[[email protected]~]#/etc/init.d/heartbeatstart
StartingHigh-Availabilityservices:INFO:Resourceisstopped
Done.

檢視vip

[[email protected]~]#ipaddr
eth1:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPqlen1000
link/ether00:0c:29:c7:14:97brdff:ff:ff:ff:ff:ff
inet192.168.77.101/24brd192.168.0.255scopeglobaleth1
inet192.168.77.200/24scopeglobaleth1
檢視httpd服務是否被heartbeat接管
[[email protected]~]#netstat-tnlpu|grephttpd2tcp00:::80:::*LISTEN2140/httpd

瀏覽器測試

wKiom1YrmxeDgU3MAACFFhcvWCY065.jpg


停止node1,httpd後測試

wKioL1Yrm4HSuS9LAACbbhshcd8637.jpg

轉載於:https://blog.51cto.com/blackhuuu/1705945