HA集羣之Heartbeat v1 高可用安裝講解

什麼是高可用集羣

       高可用集羣是指一組通過硬件和軟件連接起來的獨立計算機,它們在用戶面前表現爲一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點停止工作,服務會從故障節點切換到正常工作的節點上運行,不會引起服務中斷。從這個定義可以看出,集羣必須檢測節點和服務何時失效,何時恢復爲可用。這個任務通常由一組被稱爲“心跳”的代碼完成。在Linux-HA裏這個功能由一個叫做heartbeat的程序完成。


Heartbeat簡介

       Heartbeat是Linux-HA工程的一個組件,自1999年開始到現在,發佈了衆多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內得到了廣泛的應用,這裏分析的是2007年1月18日發佈的版本2.0.8。

       隨着Linux在關鍵行業應用的逐漸增多,它必將提供一些原來由IBM和SUN這樣的大型商業公司所提供的服務,這些商業公司所提供的服務都有一個關鍵特性,就是高可用集羣。


Heartbeat 工作原理

       heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗 餘鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。

--------------------------以上部分截取自百度百科--------------------------


wKiom1UsgDjSTXsVAAFQz-liG8I769.jpg

演示環境:

CentOS6.5:

lvs1 lvs01.ssc.com eth0 10.19.166.197

lvs2 lvs02.ssc.com eth0 10.19.166.198

VIP信息:10.19.166.20

注意:主機名要一致

請 uname -n //查看自己環境的主機名,我這裏的主機名lvs01.ssc.com,lvs02.ssc.com


關閉:

selinux disabled

iptables off


包組與類庫:

Compatibility libraries

Development tools

Server Platform Development

注意:請提前安裝好這些包和庫(減少後面安裝rpm包出現各種問題)


1、修改本機的hostname, # vi /etc/sysconfig/network 如下圖:

wKioL1Usy_ah6UloAAA-z8t2J3o551.jpg

修改 lvs1,lvs2主機的hosts,# vim /etc/hosts,如下圖:  

注:裏面依次填入 IP,主機名,主機名短格式名稱

wKiom1UsyFqRtCuOAAC2Cp0AdFA566.jpg

對ping下短格式名稱是否能ping通

wKiom1UsyZvA9kDpAAEt8Ud6_do142.jpg

wKioL1Usyu2DejuDAAElu0BKN0c645.jpg


2、利用ssh密鑰打通兩臺主機的鏈接,做爲兩主機的互信機制

1)生成ssh密鑰

wKioL1UszxXC0LFrAAKbrLooBBQ671.jpg


2)把 lvs1 的公鑰copy到 lvs2 ,把lvs2的公鑰copy到lvs1,下圖拿lvs1舉例,總之就是雙方互通;

wKiom1UszpCD5WekAABNDl2wT_E501.jpg

測試是否打通

wKiom1UszxXB1DG1AACzxoxh2p4928.jpg

3)同步兩臺節點服務器的系統時間(注:系統時間必須一致)(兩臺節點服務器都要設置)

沒有ntpdate的,請先安裝ntpdate,安裝方式爲: # yum install tnpdate -y

同步網絡上的時間服務器,如國家授權中心服務器IP:210.72.145.44(注意:不過老是同步報錯)

所以我這裏用的是上海交大的網絡中心NTP服務器的地址,202.120.2.101 (已測可用)

在crontab 裏添加一條每五分鐘自動執行的任務,保證兩臺服務器的時間與網絡時間一致,這點很重要

wKiom1Us0QDD6Gg0AABWl6GeRVo521.jpg


3、安裝heartbeat(我這裏的包,最後放在附件打包給大家,包是馬哥做的,請支持原作者,如需更多學習資料,請報名馬哥教育)

注:這裏只演示lvs1這臺服務器,lvs2同理,只是把lvs1這些包,拷過去安裝就行; 

這裏把我heartbeat rpm包,已經分別放在了兩臺測試服務器的 /opt目錄下

1)安裝帶有libnet的epel源(這個源是我在網上找的,一併打包給各位)

wKiom1Us2kzA9XgaAABj42R2rO8281.jpg

2)yum 安裝相關依賴包

wKioL1Us3b2BeswMAABrR1iHG_E379.jpg

3)安裝heartbeat rpm包

wKiom1Us4Kjy_9Q4AADJwyXWz_Q129.jpg


4、組播IP地址介紹,摘自馬哥文檔


組播IP地址用於標識一個IP組播組。IANA(internet assigned number authority)把D類地址空間分配給IP組播,其範圍是從224.0.0.0到239.255.255.255。如下圖所示(二進制表示),IP組播地址前四位均爲1110八位組⑴ 八位組⑵ 八位組⑶ 八位組⑷1110

XXXX XXXXXXXX XXXXXXXX XXXXXXXX組播組可以是永久的也可以是臨時的。組播組地址中,有一部分由官方分配的,稱爲永久組播組。永久組播組保持不變的是它的ip地址,組中的成員構成可以發生變化。永久組播組中成員的數量都可以是任意的,甚至可以爲零。那些沒有保留下來供永久組播組使用的ip組播地址,可以被臨時組播組利用。

224.0.0.0~224.0.0.255爲預留的組播地址(永久組地址),地址224.0.0.0保留不做分配,其它地址供路由協議使用。

224.0.1.0~238.255.255.255爲用戶可用的組播地址(臨時組地址),全網範圍內有效。

239.0.0.0~239.255.255.255爲本地管理組播地址,僅在特定的本地範圍內有效。常用的預留組播地址列表如下:

224.0.0.0 基準地址(保留)

224.0.0.1 所有主機的地址

224.0.0.2 所有組播路由器的地址

224.0.0.3 不分配

224.0.0.4dvmrp(Distance Vector Multicast Routing Protocol,距離矢量組播路由協議)路由器

224.0.0.5 ospf(Open Shortest Path First,開放最短路徑優先)路由器

224.0.0.6 ospf dr(Designated Router,指定路由器)

224.0.0.7 st (Shared Tree,共享樹)路由器

224.0.0.8 st主機

224.0.0.9 rip-2路由器

224.0.0.10 Eigrp(Enhanced Interior Gateway Routing Protocol,增強網關內部路由線路協議)路由器 224.0.0.11 活動代理

224.0.0.12 dhcp服務器/中繼代理

224.0.0.13 所有pim (Protocol Independent Multicast,協議無關組播)路由器

224.0.0.14 rsvp (Resource Reservation Protocol,資源預留協議)封裝

224.0.0.15 所有cbt 路由器

224.0.0.16 指定sbm(Subnetwork Bandwidth Management,子網帶寬管理)

224.0.0.17 所有sbms

224.0.0.18 vrrp(Virtual Router Redundancy Protocol,虛擬路由器冗餘協議)

239.255.255.255 SSDP協議使用


5、查看heartbeat默認端口(注此端口是IANA分給heartbeat固定端口)

wKioL1Us5R6w2hp6AAJVysIudag960.jpg


heartbeat v1的配置(修改這按個文件的配置信息):

        主配置文件:ha.cf

        認證密鑰:authkey,其權限必須爲組合其它無權訪問;

        用於資源的文件:haresources


1)拷貝文件到/etc/ha.d/目錄中

wKioL1Us6UHCT1BDAAKk8MbeEm8930.jpg

2)修改 authkeys 權限,# chmod 600  authkeys ,否則heartbeat無法啓動

3)修改配置文件 ha.cf,我這裏只啓用這幾項,並做了修改;

wKiom1Us6SrShbM2AADaM0QZU0k427.jpg

相關配置參數的講解(版權,馬哥)
logfile /var/log/ha-log
#指名heartbaet的日誌存放位置

#mcast eth0 225.100.90.101 694 1 0
#採用網卡eth0的Udp多播來組織心跳,一般在備用節點不止一臺時使用。Bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的三種方式,任選其一即可。

auto_failback on
#用來定義當主節點恢復後,是否將服務自動切回,heartbeat的兩臺主機分別爲主節點和備份節點。主節點在正常情況下佔用資源並運行所有的服務,遇到故障時把資源交給備份節點並由備份節點運行服務。在該選項設爲on的情況下,一旦主節點恢復運行,則自動獲取資源並取代備份節點,如果該選項設置爲off,那麼當主節點恢復後,將變爲備份節點,而原來的備份節點成爲主節點

node lvs01.ssc.com  
#主節點主機名,可以通過命令“uname –n”查看。
node lvs02.ssc.com  
#備用節點主機名

ping 10.19.166.1
#選擇ping的節點,ping 節點選擇的越好,HA集羣就越強壯,可以選擇固定的路由器作爲ping節點,但是最好不要選擇集羣中的成員作爲ping節點,ping節點僅僅用來測試網絡連接


4)修改authkeys配置

wKiom1Us7EWjnVtnAACkbv4XtyM133.jpg

注:這裏的加密方式是隨機的。(選用的方式和使用的方式必須保持一致)

# openssl rand -hex 8  //生成8位密鑰,如上圖所示

5)修改 haresources 文件

wKioL1Us7uDjCiYDAABRFDdqiaY273.jpg

lvs01.ssc.com //集羣節點

10.19.166.20/31/eth0/10.19.255.255 //VIP地址/掩碼位數/網卡/

httpd //apache啓動程序,如未安裝請yum install httpd -y 安裝


6)拷貝lvs1 上的 ha.cf haresources authkeys  到lvs2上的/etc/ha.d/目錄中


7)在apache 默認路徑創建頁面測試文件 index.html內容隨便寫,啓動httpd服務,curl測試網頁是否能夠訪問成功; (注:lvs1,lvs2 兩臺服務器都要設置),測試完成後,手動停止httpd服務(必須停止)。


8)啓動heartbeat服務,(lvs2主機也啓動)

wKioL1Us8p_hjccjAAC_LVvxils477.jpg

查看啓動狀態:

wKioL1Us8uvSU437AADqxvhj6vE836.jpg

同時查看80端口也已經自動啓動

wKiom1Us8kGRRCvjAAEdbDnIiJ0688.jpg

9)打開瀏覽器測試網頁

wKiom1Us8prw1sBMAABWaj1Jaz4089.jpg


我們接下來停止 lvs1的heartbeat後,我們看到已經自動轉到lvs2

wKioL1Us9GTRcpb2AABZRha2omM987.jpg


OK,就是這樣~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章