負載平衡是一項困難的任務。我們經常需要通過NFS網路檔案系統)或其他機制來為資料提供中心地址,從而共用檔案系統。雖然你的安全機制可能可以讓你免於Web伺服器節點的故障,但是你仍然需要通過中央儲存節點來共用資料。
通過GFS通用檔案系統)——Linux的一個免費叢集檔案系統——你可以建立一個不需要依賴其他伺服器的真正穩定的叢集。在這篇文章中,我們將展示如何正確地設定GFS.
從概念上來說,一個叢集檔案系統可以允許多個作業系統載入同一個檔案系統並可以在同一時間內向同一檔案系統寫入資料。現在有許多叢集檔案系統,包括Sun的Lustre,Oracle的OCFSOracle叢集檔案系統),以及Linux的GFS.
有許多方法可以讓一個塊裝置同時被多個伺服器所使用。你可以分區出一個對多個伺服器都可視的SAN儲存區域網路)LUN邏輯單元編號),設定好相應的iSCSI互連網小型電腦系統介面),或使用DRBD分布式複製塊裝置)在兩台伺服器之間複製一個分區。在使用DRBD的時候,你將需要在主/主節點中設定好DRBD以使用GFS.
GFS要求
運行GFS意味著你在運行一個叢集。目前為止,運行GFS的最簡單的手段就是使用Red Hat Cluster SuiteRHCS:Red Hat叢集套件)。這個套件在CentOS中就有。此外,還需要下面這些包:cman——叢集管理器;lvm2-cluster——使LVM邏輯卷管理器)可以支援叢集的CLVM叢集邏輯卷管理器)包;kmod-gfs——GFS核心模組;最後是gfs-utils.
叢集管理器cman)包含必要的工具,比如分布式鎖管理器。除非你希望花時間來確認各種不同的分發版本是如何採用cman的,否則我們強烈推薦使用CentOS或RHEL.同時,你還將獲得RHRed Hat)所維護的各種最新版本的叢集服務,此外你還可以獲得一個比較穩定的環境。
Fencing阻絕)機制是絕對必要的。一些指導性文章建議將阻絕模式設定成"手動",因為阻絕設定有可能比較複雜。阻絕意味在叢集中進行隔離,或馬上中斷某些危險節點的運作。如果叢集無法阻絕某個發生故障的節點,那麼你的GFS將會出現很多問題,因此不要跳過這個步驟。
建立叢集設定
你可以通過/etc/cluster/裡面的cluster.conf完成大部分的叢集設定。我不建議使用各種叢集管理應用程式來建立這個設定檔案。即使是完全支援的RHEL應用程式,比如兩個月前發布的Conga,也經常會建立一些無效的cluster.conf檔案,並且無法被必要的服務所解析。
下面是一個cluster.conf檔案的例子。這個設定檔案採用漂亮的XML格式,其內容非常直接。首先,我們對叢集進行命名,我們將這個叢集稱作"Web.1".
先跳過fence daemon選項,下一個部分就是叢集主體的設定內容。你需要在clusternodes部分定義兩個節點。設定檔案將同時存放在兩個節點上,這樣這兩個節點就都知道彼此的情況。
叢集內的每個節點都聲明其阻絕方式的名稱是獨一無二的。在clusternames結束標籤下面,我們看到fencedevice部分定義了每個節點如何阻絕其他節點的方式。使用一個支援IPMI智能平台管理介面)的伺服器是最好的方式,而且其設定也是相當簡單。你只要將IPMI的地點以及登入方式告訴IP就可以了。為了避免在cluster.conf中留下密碼,你可以將它指向一個由根所擁有的指令碼並由這個指令碼來返回密碼.
我們還要指出的是我們在設定中定義了兩個節點。這是必須的,因為通常來說,除非大部分節點都同意自己的狀態,否則叢集無法達到"Quorate"狀態。如果只有兩個節點的話,沒有肯定多數,因此這種方式讓叢集只能在兩個節點下工作,而不能只在只有一個節點的情況下工作。這是設定基本叢集的必要方式。
在每個節點上運行"service cman start",系統應該可以開始正常運作。你可以檢查"clustat"或"cman nodes"來確認節點是否良好運行。如果有哪個必要的部分沒有啟動,那麼叢集將不會顯示"Quorate"狀態。