集群基礎構件:OpenAIS 、heartbeat或corosync
Corosync是集群管理套件的一部分,它在傳遞信息的時候可以通過一個簡單的配置文件來定義信息傳遞的方式和協議等。
它是一個新興的軟件,2008年推出,但其實它并不是一個真正意義上的新軟件。
在2002年的時候有一個項目Openais , 它由于過大,分裂為兩個子項目,其中可以實現HA心跳信息傳輸的功能就是Corosync ,它的代碼60%左右來源于OpenAIS. Corosync可以提供一個完整的HA功能,但是要實現更多,更復雜的功能,那就需要使用Openais了。Corosync是未來的發展方向。在以后的新項目里,一般采用Corosync,而hb_gui可以提供很好的HA管理功能,可以實現圖形化的管理。另外相關的圖形化有RHCS的套件luci+ricci,當然還有基于java開發的LCMC集群管理工具。
概述:
要說明corosync的由來,首先我們得從AIS說起,然后說明OpenAIS,最后才會說到corosync。
AIS概述:
應用接口規范(AIS)是用來定義應用程序接口(API)的開放性規范的集合,這些應用程序作為中間件為應用服務提供一種開放、高移植性的程序接口。是在實現高可用應用過程中是亟需的。服務可用性論壇(SA Forum)是一個開放性論壇,它開發并發布這些免費規范。使用AIS規范的應用程序接口(API),可以減少應用程序的復雜性和縮短應用程序的開發時間,這些規范的主要目的就是為了提高中間組件可移植性和應用程序的高可用性。SAF AIS是一個開放性工程,在不斷更新中。
OpenAIS概述:
OpenAIS是基于SA Forum 標準的集群框架的應用程序接口規范。OpenAIS提供一種集群模式,這個模式包括集群框架,集群成員管理,通信方式,集群監測等,能夠為集群軟件或工具提供滿足 AIS標準的集群接口,但是它沒有集群資源管理功能,不能獨立形成一個集群。OpenAIS組件包括AMF,CLM,CKPT,EVT,LCK,MSG,TMR,CPG,EVS等,因OpenAIS分支不同,組件略有不同。(下面介紹)OpenAIS主要包含三個分支:Picacho,Whitetank,Wilson。Wilson是最新的,比較穩定的版本是從openais 1.0.0到openais1.1.4。Whitetank現在是主流分支版本,比較穩定的版本是openais0.80到openais0.86。Picacho第一代的OpenAIS的分支,比較穩定的版本是openais0.70和openais0.71。現在比較常用的是Whitetank和Wilson,兩者之間有很多不同。OpenAIS從Whitetank升級到Wilson版本后,組件變化很大,Wilson把Openais核心架構組件獨立出來放在Corosync(Corosync是一個集群管理引擎)里面。Whitetank包含的組件有AMF,CLM,CKPT,EVT,LCK ,MSG, CPG,CFG,EVS, aisparser, VSF_ykd,bojdb等。而Wilson只含有AMF,CLM,CKPT,LCK, MSG,EVT,TMR(TMR,Whitetank里面沒有),這些都是AIS組件。其他核心組件被放到了Corosync內。Wilson被當做Corosync的一個插件。(詳細請查看官方文檔)
Corosync概述
Corosync是OpenAIS發展到Wilson版本后衍生出來的開放性集群引擎工程。可以說Corosync是OpenAIS工程的一部分。OpenAIS從openais0.90開始獨立成兩部分,一個是Corosync;另一個是AIS標準接口Wilson。Corosync包含OpenAIS的核心框架用來對Wilson的標準接口的使用、管理。它為商用的或開源性的集群提供集群執行框架。Corosync執行高可用應用程序的通信組系統,它有以下特征:
一個封閉的程序組(A closed process group communication model)通信模式,這個模式提供一種虛擬的同步方式來保證能夠復制服務器的狀態。
一個簡單可用性管理組件(A simple availability manager),這個管理組件可以重新啟動應用程序的進程當它失敗后。
一個配置和內存數據的統計(A configuration and statistics in-memory database),內存數據能夠被設置,回復,接受通知的更改信息。
一個定額的系統(A quorum system?),定額完成或者丟失時通知應用程序。
不管heartbeat,還是corosync都是高可用集群中的Cluster Messaging Layer(集群信息層),是主要傳遞發集群信息與心跳信息的,并沒有資源管理功能,資源管理還得依賴于上層的crm(Cluster resource Manager,集群資源管理器),最著名的資源管理器,就是pacemaker,它是heartbeat v3分離出去的子項目。而現在corosync+pacemaker成了高可用集群中的最佳組合。