負載均衡是一項困難的任務。我們經常需要通過nfs(網路檔案系統)或其他機制來為資料提供中心位址,從而共享檔案系統。雖然你的安全機制可能可以讓你免於web伺服器節點的故障,但是你仍然需要通過**儲存節點來共享資料。
通過gfs(全域性檔案系統)——linux的乙個免費集群檔案系統——你可以建立乙個不需要依賴其他伺服器的真正穩定的集群。在這篇文章中,我們將展示如何正確地設定gfs.
從概念上來說,乙個集群檔案系統可以允許多個作業系統載入同乙個檔案系統並可以在同一時間內向同一檔案系統寫入資料。現在有許多集群檔案系統,包括sun的lustre,oracle的ocfs(oracle集群檔案系統),以及linux的gfs.
有許多方法可以讓乙個塊裝置同時被多個伺服器所使用。你可以分割槽出乙個對多個伺服器都可視的san(儲存區域網)lun(邏輯單元號),設定好相應的iscsi(網際網路小型計算機系統介面),或使用drbd(分布式複製塊裝置)在兩台伺服器之間複製乙個分割槽。在使用drbd的時候,你將需要在主/主節點中設定好drbd以使用gfs.
gfs要求
執行gfs意味著你在執行乙個集群。目前為止,執行gfs的最簡單的手段就是使用red hat cluster suite(rhcs:red hat集群套件)。這個套件在centos中就有。此外,還需要下面這些包:cman——集群管理器;lvm2-cluster——使lvm(邏輯卷管理器)可以支援集群的clvm(集群邏輯卷管理器)包;kmod-gfs——gfs核心模組;最後是gfs-utils.
集群管理器(cman)包含必要的工具,比如分布式鎖管理器。除非你希望花時間來確認各種不同的分發版本是如何採用cman的,否則我們強烈推薦使用centos或rhel.同時,你還將獲得rh(red 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"狀態。
gfs設定
首先,我們需要設定clvm,這樣我們才可以通過gfs使用lvm.啟用clvm只要在lvm.conf中設定"locking type=3"就可以了。
然後,就像平常一樣建立乙個lvm捲組和卷,但是使用的是共享的塊裝置。如果你使用的是drbd,你將有可能使用/dev/drbd0.我建立了乙個物理卷,然後建立乙個名為vg01的捲組,然後建立乙個名為web1的邏輯卷,這個卷在:/dev/vg01/web1.
最後,我們需要建立檔案系統:
gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 /dev/vg01/web1
-t中給定的名稱必須是集群的名稱,然後後面是你給這個檔案系統所起的名字。只有web1集群的成員才可以載入這個檔案系統。然後,設定分布式鎖管理器的鎖鑰型別,指明你需要兩份journal(因為這是乙個雙節點集群)。如果你預計未來要增加更多的節點,那麼你需要在這時設定足夠高的journal數量。 總結
我們現在可以開始使用這個檔案系統了。在兩個節點上啟動"clvmd"和"gfs"服務。現在你就可以通過"-t gfs"來將型別指定為gfs,從而載入檔案系統。
在開始啟動之前,一定要設定好cman,clvmd和gfs服務。你最好能熟悉clustat和gfs_tool命令,因為在系統出現問題的時候,你可以用這些命令來查詢問題所在。
不要指望gfs能很快。如果有乙個節點在進行大量的寫入操作的話,那麼在訪問檔案系統的時候出現停頓是很正常的。對於乙個資料讀取操作比資料寫入操作多得多的web集群來說,這倒不是什麼問題。如果出現明顯延遲,那麼首先要檢查一下所有元件的狀況,然後評估正在寫入的資料。防止延遲現象的最常見措施就是確保http對話中的資料不是寫入gfs卷。
Facebook利用蘋果和谷歌弱點打造出億級業務
現在是兩強壟斷市場,人們已經習以為常了。然而,facebook ceo馬克 扎克伯格 mark zuckerberg 似乎認為,蘋果和谷歌在應用程式發行方面的壟斷地位恰恰是他可以利用的弱點。蘋果和谷歌不擅長推廣應用程式 它們的應用程式市場出奇地紊亂,所有的應用開發者都自稱是創新者和破壞者。蘋果有意無...
Linux集群的總結和思考
前言 在涉及到對外專案,經手許多小中型 的架構,f5 lvs及nginx都比較多,我想一種比較通俗易懂的語氣跟大家說明下何謂負載均衡,何謂linux集群,幫助大家走出這個誤區,真正意義上來理解它們。一 目前 架構一般分成負載均衡層 web層和資料庫層,我其實一般還會多加一層,即檔案伺服器層,因為現在...
原創 UNIX和Linux打造NFS共享連線
linux端配置為nfs伺服器,主要修改的檔案 etc export 1 從linux連線linux下的nfs共享 mount t nfs ip share test 2 從aix端連線linux下的nfs共享 nfso o nfs use reserved ports 1 mount ip sha...