真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux高可用集群方案之heartbeat基礎(chǔ)原理及邏輯架構(gòu)-創(chuàng)新互聯(lián)

 這篇文章我們主要學(xué)習(xí)heartbeat高可用集群的基礎(chǔ)原理及邏輯架構(gòu)

成都創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營銷策劃、做網(wǎng)站、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、小程序開發(fā)、H5頁面制作、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗、成都全網(wǎng)營銷推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 

Linux高可用集群方案之heartbeat基礎(chǔ)原理及邏輯架構(gòu)



 ll本文導(dǎo)航

  · heartbeat之基本原理

 · heartbeat之版本介紹

 · heartbeat之相關(guān)術(shù)語

 · heartbeat之集群組件

 · heartbeat之心跳連接

 · heartbeat之配置文件


 ll 要求

掌握heartbeat高可用集群的相關(guān)組件及簡單配置

  heartbeat之基本原理

 heartbeat是一個集群軟件,它主要由心跳信息檢測和資源管理兩大核心部分組成。

 heartbeat構(gòu)建的集群中,各服務(wù)器會向其他集群節(jié)點(diǎn)發(fā)送心跳信息(報文)并予以收集、分析,以判斷該節(jié)點(diǎn)的狀態(tài),從而認(rèn)為節(jié)點(diǎn)是否有效。當(dāng)服務(wù)器在指定的時長內(nèi)檢測不到其他節(jié)點(diǎn)的心跳信息或無法通過網(wǎng)絡(luò)等方式連接時,會認(rèn)為對方節(jié)點(diǎn)失效,此時,服務(wù)器需要啟動資源接管模塊來接管失效節(jié)點(diǎn)上的服務(wù)和資源。

 heartbeat僅能完成心跳信息檢測和資源監(jiān)管,不會監(jiān)視其他資源和應(yīng)用服務(wù)。若要監(jiān)控其他資源和應(yīng)用服務(wù)是否可用,需要安裝第三方插件;如ipfail, ldirectord等。

 同樣,對于操作系統(tǒng)自身的問題heartbeat同樣無法監(jiān)控。若主節(jié)點(diǎn)因操作系統(tǒng)問題無法向備節(jié)點(diǎn)發(fā)送心跳信息,則備節(jié)點(diǎn)無法接收主節(jié)點(diǎn)的信息,從而認(rèn)為主節(jié)點(diǎn)已經(jīng)失效,此時會啟動資源接管模塊來接管主節(jié)點(diǎn)的服務(wù)和資源。而主節(jié)點(diǎn)資源和服務(wù)并沒有釋放,此時主備節(jié)點(diǎn)會發(fā)生資源爭用的情況,嚴(yán)重時可能會導(dǎo)致共享資源的數(shù)據(jù)損壞或者文件系統(tǒng)的崩潰。對于linux系統(tǒng)而言,要解決這個問題,需要在內(nèi)核中開啟watchdog模塊,開啟此模塊后,watchdog會定時向/dev/watchdog設(shè)備文件執(zhí)行寫操作,從而確定系統(tǒng)是否正常運(yùn)行。如果watchdog認(rèn)為內(nèi)核掛起,就會自動重新啟動系統(tǒng),從而釋放節(jié)點(diǎn)的服務(wù)和資源。

  heartbeat之版本介紹

 heartbeat分為v1.x和v2.x兩個版本,最新的版本為v3.x。

 v2.x的版本是兼容v1.x的配置文件的,從功能的角度來看,v2.x要比v1.x強(qiáng)大很多。而v3.x則是v2.x的修訂版本,主要是修復(fù)v2.x中的一些bug,最重要的區(qū)別是將CRM資源管理器更改pacemaker,并將一些的模塊集成到了pacemaker(心臟起搏器)中?;贑entOS6.5,從安裝的角度來說,heartbeat-pils包與cluster-glue包沖突,如果使用yum安裝,則不會安裝安裝heartbeat-pils包的,默認(rèn)是安裝cluster-glue包,但是heartbeat v2.x無法調(diào)用版本過高的cluster-glue包的。所以在安裝的時候,需要手動解決依賴關(guān)系。

 1、heartbeat v1.x

    v1.x的資源文件為haresources,配置接口也較haresources。

    heartbeat v1.x允許集群和節(jié)點(diǎn)資源通過/etc/ha.d下的兩個文件進(jìn)行配置。

    ha.cf:定義集群節(jié)點(diǎn)、失效檢測和切換的時間間隔,集群日志機(jī)制和Fence方法。

    haresources:定義集群資源組,每行可以定義失效切換的集群節(jié)點(diǎn)和一組資源,資源包括IP地址、文

    件系統(tǒng)、應(yīng)用程序服務(wù)和存儲等。

 2、heartbeat v2.x

    heartbeat v2.x相較于v1.x做了很大的改動,引進(jìn)了集群資源管理器CRM,并且2.x基于CRM管理的

    資源文件變更為cib.xml。由于引進(jìn)了CRM,在運(yùn)行的heartbeat服務(wù)節(jié)點(diǎn)上,會獨(dú)立運(yùn)行一個進(jìn)程

    crm,用戶可以同過此進(jìn)程發(fā)送請求。而在server端,需要運(yùn)行crmd進(jìn)程,它監(jiān)聽在一個套接字上,

    端口是5560。用戶可以通過客戶端crm向server端發(fā)送請求,crm實(shí)際上是一個crm shell(crmsh)命

    令行接口,用戶可以通過這個接口配置集群服務(wù);另外,heartbeat v2.x還增加了GUI圖形配置工具,

    此模塊名稱就叫heartbeat-gui,用戶可以通過此工具在圖形化場景中配置集群服務(wù)。

    v2.x支持LSB、OCF、STONITH等形式的Resource Agent(資源代理)。

    v2.x支持GUI圖形界面的配置和管理工具。

    v2.x對多資源組進(jìn)行獨(dú)立監(jiān)控,不在需要mom或ldirctored等第三方腳本。

    v1.x只支持雙節(jié)點(diǎn),而v2.x基于CRM(Cluster Resource Manager)資源管理器模式最多支持16

    個節(jié)點(diǎn)。該模式使用基于XML的CIB(Cluster Infomation Base)資源信息的配置。cib文件會在各節(jié)

    點(diǎn)間自動復(fù)制,可以實(shí)現(xiàn)以下操作:

     集群節(jié)點(diǎn)的配置、監(jiān)控;

     集群資源的粘性、約束、組和依賴性的配置;

     日志、監(jiān)控、仲裁和Fence標(biāo)準(zhǔn)管理;

     當(dāng)服務(wù)失敗或設(shè)定的標(biāo)準(zhǔn)滿足時,需要執(zhí)行某些動作;

  3、heartbeat v3.x

在v3.x版本之后,heartbeat在功能上進(jìn)行了拆分,每個功能模塊獨(dú)立開發(fā)為不同的組件。在配置上,

    與v2.x版本基本相同。其架構(gòu)拆分為heartbeat、pacemaker(心臟起搏器)、cluster-glue(集群黏合

    器),它們可以結(jié)合其他的模塊工作。

    heartbeat:負(fù)責(zé)維護(hù)集群節(jié)點(diǎn)間的通信以及信息傳遞。

    pacemaker:也就是CRM,它是管理HA的控制中心,客戶端通過它配置和監(jiān)控整個集群。

    cluster-glue:相當(dāng)于一個中間件,它將heartbeat和pacmaker關(guān)聯(lián)起來,主要包含LRM和STONITH

    resource agent:用于控制服務(wù)的啟動和停止,監(jiān)控腳本服務(wù)的腳本集合;LRM調(diào)用這些腳本從而

    實(shí)現(xiàn)資源的啟動、停止和重啟等。

  heartbeat之相關(guān)術(shù)語

節(jié)點(diǎn)(node)

 運(yùn)行heartbeat進(jìn)程的一個獨(dú)立主機(jī),成為節(jié)點(diǎn);node是HA的核心組成部分,每個node上都運(yùn)行各自獨(dú)立的操作系統(tǒng)和heartbeat服務(wù)。在heartbeat集群軟件中,節(jié)點(diǎn)分為主節(jié)點(diǎn)、備用/備份節(jié)點(diǎn),主、備節(jié)點(diǎn)都有各自的hostname,并且擁有各自的一組資源。比如:文件系統(tǒng)、磁盤、ip地址和應(yīng)用程序服務(wù)等。主節(jié)點(diǎn)一般運(yùn)行的一個或多個服務(wù),而備節(jié)點(diǎn)則屬于監(jiān)控狀態(tài)。

資源(resource)

 資源是節(jié)點(diǎn)中可控制的實(shí)體,當(dāng)主節(jié)點(diǎn)發(fā)生故障時,備用節(jié)點(diǎn)將接管主節(jié)點(diǎn)上的資源。heartbeat服務(wù)中可以當(dāng)作資源的實(shí)體有:

 1、文件系統(tǒng)、磁盤分區(qū);

 2、NFS網(wǎng)絡(luò)存儲系統(tǒng);

 3、IP地址;

 4、應(yīng)用程序服務(wù);如:httpd、mysqld等

事件(event)

 事件是指集群中可能發(fā)生的事情。比如:節(jié)點(diǎn)系統(tǒng)故障、網(wǎng)絡(luò)通信故障、網(wǎng)卡故障、應(yīng)用程序故障等等,這些事件都可能會導(dǎo)致節(jié)點(diǎn)中的資源發(fā)生轉(zhuǎn)移。HA的測試也是基于這些事件來進(jìn)行的。

動作(action)

 動作是指事件發(fā)生時HA的響應(yīng)方式,它是由shell腳本控制的。比如,當(dāng)主節(jié)點(diǎn)發(fā)生故障后,備份節(jié)點(diǎn)將通過實(shí)現(xiàn)設(shè)定好的腳本來進(jìn)行服務(wù)的關(guān)閉或啟動,從而接管故障節(jié)點(diǎn)的資源。

  heartbeat之集群組件

Linux高可用集群方案之heartbeat基礎(chǔ)原理及邏輯架構(gòu)

heartbeat:heartbeat軟件的整個通信模塊,所有節(jié)點(diǎn)之間的通信都是靠此模塊來完成。這個模塊會根據(jù)不同類型的通信啟動不同的事件handler,當(dāng)監(jiān)聽到不同的通信請求后會交給不同的handler處理。這一點(diǎn)從這個heartbeat日志中可以看出來。

CCM(cluster consensus menbership)集群共識成員;它起到承上啟下的作用。監(jiān)聽底層的心跳信息,當(dāng)監(jiān)聽不到心跳信息時,將重新計算這個集群的票數(shù)和收斂狀態(tài)信息,并將結(jié)果發(fā)送給上層處理,上層將通過此結(jié)果采取何種決策。ccm還能生成一個集群節(jié)點(diǎn)的拓?fù)涓庞[圖,以本節(jié)點(diǎn)為參照,保證該節(jié)點(diǎn)在特殊情況下能夠采取相應(yīng)的動作。

CRM(cluster resource manager):集群資源管理器,也就是pacemaker。它主要管理集群節(jié)點(diǎn)服務(wù)的資源配置信息,實(shí)現(xiàn)對資源的分配與調(diào)度。根據(jù)資源的配置信息以及運(yùn)行狀態(tài),CRM決定資源該在哪個節(jié)點(diǎn)運(yùn)行,但是,CRM并不直接參與動作,而是交給其他組件完成。CRM通過heartbeat組件收集到的各個成員節(jié)點(diǎn)的基本信息轉(zhuǎn)交給CCM來更新整個集群的membership信息。指揮LRM對當(dāng)前節(jié)點(diǎn)的各資源執(zhí)行 start|stop|restart|status|monitor 等操作,同時接收LRM執(zhí)行操作后的反饋信息并作出相應(yīng)的決策進(jìn)行后續(xù)工作。CRM還負(fù)責(zé)將各個組件反饋回來的信息通過調(diào)用設(shè)定的日志記錄程序記錄進(jìn)日志文件中。

LRM(local resource manager):本地資源管理器;它是heartbeat中一個直接操作集群管理中各個資源的模塊;負(fù)責(zé)對資源的啟動、停止、重啟或監(jiān)控等;這個模塊目前支持4種resource agent,分別是:heartbeat自身、LSB、OCF、STONITH;四種類型調(diào)用的腳本位置如下:

    heartbeat:/etc/ha.d/resource.d/

    LSB:/etc/rc.d/init.d/

    OCF:/usr/lib/resource.d/heartbeat/

    STONITH(Shot The Other Node In The heat):俗稱“爆頭”;這種方式是直接通過控制電源

開關(guān)執(zhí)行關(guān)閉或重新啟動節(jié)點(diǎn)的方式。在heartbeat高可用集群中,如果主節(jié)點(diǎn)因為特殊原因無法與備節(jié)點(diǎn)響應(yīng)心跳信息時,此時備節(jié)點(diǎn)會認(rèn)為主節(jié)點(diǎn)已經(jīng)失效,會立即啟動資源接管模塊接管主節(jié)點(diǎn)上的資源,導(dǎo)致集群中主備節(jié)點(diǎn)產(chǎn)生資源爭用的情況。為了避免因資源爭用導(dǎo)致的文件損壞或文系統(tǒng)奔潰,此時,備節(jié)點(diǎn)接管資源后,就會通過網(wǎng)絡(luò)發(fā)送關(guān)機(jī)或重啟的命令給主節(jié)點(diǎn),從而讓主節(jié)點(diǎn)釋放資源,這就是我們所說的“爆頭”。需要注意的是,STONITH機(jī)制需要硬件的支持。

LRM就是通過調(diào)用以上路徑下的各個腳本實(shí)現(xiàn)對資源的控制,腳本可以自行定義,只需要遵循特定的參數(shù):start|stop|restart|status

PE(policy engine): 策略引擎;主要負(fù)責(zé)將CRM發(fā)送過來的信息對比配置文件中的參數(shù)配置進(jìn)行計算、分析,并將計算、分析出來的結(jié)果通過CRM發(fā)送給TE去分析后續(xù)需要執(zhí)行的動作。PE需要計算、分析的信息主要是有哪些節(jié)點(diǎn),各節(jié)點(diǎn)的狀態(tài),當(dāng)前管理了哪些資源,各資源當(dāng)前運(yùn)行在哪個節(jié)點(diǎn),及資源在各個節(jié)點(diǎn)的狀態(tài)。

TE(translation engine):主要分析PE的計算結(jié)果,然后根據(jù)配置信息轉(zhuǎn)換成后續(xù)所需的相應(yīng)操作。

PE和TE并不直接通信,它們都是通過CRM來傳遞信息的,且PE和TE只有處在active的節(jié)點(diǎn)被啟動。

CIB(cluster infomation base):集群信息庫;CIB是集群中的各資源配置、節(jié)點(diǎn)信息的初始狀態(tài)及變化后的搜集中心,是一個不斷變化的信息庫。當(dāng)集群中資源、節(jié)點(diǎn)信息發(fā)生變化并被CIB收集到時,CIB會立即更新集群信息庫并分發(fā)給其他節(jié)點(diǎn),但是,分發(fā)動作并不是由CIB本身完成,而是有heartbeat組件完成的。CIB的配置文件名稱為cib.xml,CIB在運(yùn)行時,cib.xml中的配置信息常駐于DC(desginnated coordinator,主節(jié)點(diǎn))的內(nèi)存中,且只有DC才會經(jīng)常讀取并修改此文件的內(nèi)容,以保證每個節(jié)點(diǎn)的各資源、節(jié)點(diǎn)信息的更新至最新狀態(tài),其他節(jié)點(diǎn)上的cib.xml配置文件都是通過heartbeat組件從DC上復(fù)制的。

  heartbeat之心跳連接

heartbeat部署至少需要兩臺服務(wù)器完成。這兩臺服務(wù)器的心跳信息傳遞通過何種物理鏈路來進(jìn)行連接呢?

 1、串行線纜(選,缺點(diǎn)是距離不能太長)

 2、將一條以太網(wǎng)線連接兩臺服務(wù)器的網(wǎng)卡(推薦)

 3、兩臺服務(wù)器連到同一交換機(jī)(次選,增加了交換機(jī)設(shè)備的故障率;同時,線路不是專用心跳線,容易受其他數(shù)據(jù)傳輸?shù)挠绊懀?/p>

  heartbeat之配置文件

heartbeat的默認(rèn)配置文件目錄為/etc/ha.d/,此目錄下包含authkey、ha.cf、haresources三個主要的配置文件。

配置文件
作用
描述
/etc/ha.d/authkeyheartbeat認(rèn)證文件
高可用服務(wù)器對之間根據(jù)此文件對對端進(jìn)行認(rèn)證
/etc/ha.d/ha.cfheartbeat的基本參數(shù)配置文件配置heartbeat的基本參數(shù)
/etc/ha.d/haresourcesheartbeat的資源配置文件配置IP資源及腳本等

ha.cf配置文件部分參數(shù)詳解:

autojoin   none

#集群中的節(jié)點(diǎn)不會自動加入

logfile /var/log/ha-log

#指名heartbaet的日志存放位置

keepalive 2

#指定心跳使用間隔時間為2秒(即每兩秒鐘在eth2上發(fā)送一次廣播)

deadtime 30

#指定備用節(jié)點(diǎn)在30秒內(nèi)沒有收到主節(jié)點(diǎn)的心跳信號后,則立即接管主節(jié)點(diǎn)的服務(wù)資源

warntime 10

#指定心跳延遲的時間為十秒。當(dāng)10秒鐘內(nèi)備份節(jié)點(diǎn)不能接收到主節(jié)點(diǎn)的心跳信號時,就會往日志中寫入一個警告日志,但此時不會切換服務(wù)

initdead 120

#在某些系統(tǒng)上,系統(tǒng)啟動或重啟之后需要經(jīng)過一段時間網(wǎng)絡(luò)才能正常工作,該選項用于解決這種情況產(chǎn)生的時間間隔。取值至少為deadtime的兩倍。

udpport 694

#設(shè)置廣播通信使用的端口,694為默認(rèn)使用的端口號。

baud   19200

#設(shè)置串行通信的波特率

bcast  eth0

# Linux  指明心跳使用以太網(wǎng)廣播方式,并且是在eth0接口上進(jìn)行廣播。

#mcast eth0 225.0.0.1 694 1 0

#采用網(wǎng)卡eth0的Udp多播來組織心跳,一般在備用節(jié)點(diǎn)不止一臺時使用。Bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的三種方式,任選其一即可。

#ucast eth0 192.168.1.2

#采用網(wǎng)卡eth0的udp單播來組織心跳,后面跟的IP地址應(yīng)為雙機(jī)對方的IP地址

auto_failback on

#用來定義當(dāng)主節(jié)點(diǎn)恢復(fù)后,是否將服務(wù)自動切回,heartbeat的兩臺主機(jī)分別為主節(jié)點(diǎn)和備份節(jié)點(diǎn)。主節(jié)點(diǎn)在正常情況下占用資源并運(yùn)行所有的服務(wù),遇到故障時把資源交給備份節(jié)點(diǎn)并由備份節(jié)點(diǎn)運(yùn)行服務(wù)。在該選項設(shè)為on的情況下,一旦主節(jié)點(diǎn)恢復(fù)運(yùn)行,則自動獲取資源并取代備份節(jié)點(diǎn),如果該選項設(shè)置為off,那么當(dāng)主節(jié)點(diǎn)恢復(fù)后,將變?yōu)閭浞莨?jié)點(diǎn),而原來的備份節(jié)點(diǎn)成為主節(jié)點(diǎn)

#stonith baytech /etc/ha.d/conf/stonith.baytech

# stonith的主要作用是使出現(xiàn)問題的節(jié)點(diǎn)從集群環(huán)境中脫離,進(jìn)而釋放集群資源,避免兩個節(jié)點(diǎn)爭用一個資源的情形發(fā)生。保證共享數(shù)據(jù)的安全性和完整性。

#watchdog /dev/watchdog

#該選項是可選配置,是通過Heartbeat來監(jiān)控系統(tǒng)的運(yùn)行狀態(tài)。使用該特性,需要在內(nèi)核中載入"softdog"內(nèi)核模塊,用來生成實(shí)際的設(shè)備文件,如果系統(tǒng)中沒有這個內(nèi)核模塊,就需要指定此模塊,重新編譯內(nèi)核。編譯完成輸入"insmod softdog"加載該模塊。然后輸入"grep misc /proc/devices"(應(yīng)為10),輸入"cat /proc/misc |grep watchdog"(應(yīng)為130)。最后,生成設(shè)備文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能

node node1.magedu.com

#主節(jié)點(diǎn)主機(jī)名,可以通過命令“uanme –n”查看。

node node2.magedu.com

#備用節(jié)點(diǎn)主機(jī)名

ping 192.168.12.237

#選擇ping的節(jié)點(diǎn),ping 節(jié)點(diǎn)選擇的越好,HA集群就越強(qiáng)壯,可以選擇固定的路由器作為ping節(jié)點(diǎn),但是最好不要選擇集群中的成員作為ping節(jié)點(diǎn),ping節(jié)點(diǎn)僅僅用來測試網(wǎng)絡(luò)連接

ping_group group1 192.168.12.120 192.168.12.237

#類似于ping  ping一組ip地址

apiauth pingd  gid=haclient uid=hacluster

respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s

#該選項是可選配置,列出與heartbeat一起啟動和關(guān)閉的進(jìn)程,該進(jìn)程一般是和heartbeat集成的插件,這些進(jìn)程遇到故障可以自動重新啟動。最常用的進(jìn)程是pingd,此進(jìn)程用于檢測和監(jiān)控網(wǎng)卡狀態(tài),需要配合ping語句指定的ping node來檢測網(wǎng)絡(luò)的連通性。其中hacluster表示啟動pingd進(jìn)程的身份。

#下面的配置是關(guān)鍵,也就是激活crm管理,開始使用v2 style格式

crm respawn

#注意,還可以使用crm yes的寫法,但這樣寫的話,如果后面的cib.xml配置有問題

#會導(dǎo)致heartbeat直接重啟該服務(wù)器,所以,測試時建議使用respawn的寫法

#下面是對傳輸?shù)臄?shù)據(jù)進(jìn)行壓縮,是可選項

compression   bz2

compression_threshold 2

 本文到此先告一段落,歡迎大家指出其中的問題,后續(xù)還會不斷的完善。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站標(biāo)題:Linux高可用集群方案之heartbeat基礎(chǔ)原理及邏輯架構(gòu)-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/dpcesj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部