Cluater 文件系统OCFS2实战

         在過往印象中,高可用度叢集系統(High-Availability cluster 又名 HA Cluster)應用,對於一般的中小企業來說,是多麼遙不可及的感覺。主因是 HA Cluster 在過去只出現在 IBM、HP、Sun 等等廠商的大型主機系統而並非存在於一般 x86 伺服器,由大型主機所建構成的叢集系統不僅建置成本高、維護的價格也是相當驚人,倘若應用系統所執行的任務並非極度重要,一般來說是沒有資金能夠供養這些堅不可摧的大型主機叢集系統。

由於這幾年來軟硬體的進步,使得許多企業應用 PC 伺服器搭配 Linux 作業系統,漸漸地擔任企業重要的應用程式任務,像是 ERP、EIP、Web、Mail、DataBase 等等,若執行的任務越是重要,就會更需要高可用度叢集來執行7x24不間斷的服務。當我們建置高可用度叢集系統的伺服節點(Node)時,經常會做共享磁碟(Shared Storage)架構(如下圖)必須使用到叢集檔案系統(Cluster File System),本文提到的 OCFS2 檔案系統就是知名的叢集檔案系統之一,而另一個知名 Linux 叢集檔案系統就是 RedHat 主推的 GFS(Global File System)。

快照自維基百科「高可用度叢集」示意圖(網址:http://upload.wikimedia.org/wikipedia/en/6/63/2nodeHAcluster.png),我們這次的主題落在「OCFS2」叢集檔案系統建置,這個 OCFS2 是用於 SAN(Storage Area Network)內的 Disk(例如 Disk 1)由 Server 1 與 Server 2 所共享的叢集檔案系統。

相較於一般檔案系統是一個檔案系統由一台主機控制(一對一方式),頂多是再透過 NFS 或 CIFS 分享給網路上的其他主機存取,也就是 NAS(Network Attach Storage)方式;叢集檔案系統與一般檔案系統不同的是,一個叢集檔案系統可同時提供多台電腦來控制,也就是一個檔案系統對應多台電腦的完全控制,且每台電腦擁有相同存取權限、存取能力與存取效率(通常需要有 SAN 的架構)。

微基百科 2node Cluster 系統架構圖檔

筆者初次見到 OCFS2 的實機示範是在 Novell SuSE Linux Enterprise Server 10 發表會場上,會場示範將網站資料(Web data)放置在 OCFS2 磁區上,而由多台 Apache 網頁伺服器共同來存取使用,當時筆者就很想親自玩玩看 OCFS2 的實際操作,後來在 Oracle 原廠網站與 Novell WiKi 網站上找到相關文件(可惜大多是英文的資料)並實際測試後,接著就與讀者朋友分享 OCFS2 建置實做流程。

溫馨提示:一個關於叢集檔案系統之 Enterprise 級應用,就是最近當紅的 Xen 配合叢集檔案系統所做到的「Live Migration」(在線遷徙)DomU 功能。

基礎觀念

OCFS2

OCFS(Oracle Cluster File System)原本是軟體公司 Oracle 為其知名的高可用度叢集資料庫 Oracle RAC(Real Application Cluster)所設計的叢集檔案系統,至今已發展到第二版(Version 2,也就是 OCFS2),應用也更加的廣泛,除了給 Oracle RAC 資料庫使用外,也可以給一些常見的 Unix Daemon 使用(像是 NFS、Samba、Apache、Mail 與 ftp 等等)甚至亦有可能支援其他廠牌的資料庫來應用。

使用到 OCFS2 這種「叢集檔案系統」至少要有兩個節點(Node)去共享儲存設備(Shared Storage),也因為如此這促使我們必須先有 SAN(Storage Area Network)架構才行,談到 Linux 上面常用 SAN 有三種:Fibre Channel、iSCSI 與 AoE(ATA Over Ethernet),為求測試簡便我們採用 AoE 以 Ethernet 為基礎的 SAN 來實戰 OCFS2 建置。

溫馨提示:AoE(ATA Over Ethernet)別以為這是微軟出的「世紀帝國」遊戲喔!她其實是在乙太網路上跑的 ATA 磁碟傳輸方式,筆者曾於本雜誌第七期專欄介紹過,是一個便宜又大碗的 Ethernet SAN Storage。

叢集應用程式

Oracle RAC 資料庫是「支援叢集檔案系統」應用程式,很多常見的資料庫以及 Unix Daemon 預設都不是這種「支援叢集檔案系統」的應用程式,『不是叢集軟體』不代表一定不能夠用在叢集檔案系統,而是使用上要特別的小心注意,尤其又以資料庫軟體最容易發生問題。

簡單的說:若應用程式已經運行在共享的 NFS、CIFS 磁區資料上而沒有問題的話,那大概跑在叢集檔案系統上面應該也沒有太大的問題。

如果應用程式(例如 資料庫)會例行性的快取(Cache)磁碟資料在記憶體的話,叢集內各個節點與節點之間就必須相互知會這些「快取資料」的同步與鎖定(尤其是最終需要寫入磁碟的資料),雖然最終的讀寫會由叢集檔案系統來統籌處理,這些『非叢集軟體』(尤其是「非叢集資料庫軟體」)很容易發生在各節點的資料不同步而發生資料遺失、不正確或損毀問題。

溫馨提示:所以若要跑商用資料庫在「叢集檔案系統」的話,最好還是要找專業資料庫廠商以及專門的系統整合商(SI)會比較保險。

測試環境與測試流程

測試 OCFS2 需要有三台 Linux 作業系統的電腦,筆者是使用兩台 SLES10(SuSE Linux Enterprise Server 10)搭配一台 FC5(Fedora Core 5),兩台 SLES10 任務是叢集的兩個節點 Node 1 與 Node 2;而共享磁碟則由 FC5 上提供 AoE(ATA Over Ethernet)來辦理,提供 AoE 磁碟的主機她所安裝的 Linux 版本就比較沒有限制,記得要裝上『編譯工具』來 Compiler AoE 的 Target 工具程式 vblade 就可以了。

下圖 iSCSI+Lun 部份換成 AoE SAN 的話,就是我們以下實做的架構,圖片快照自 Novell 官方網站說明文件,官方文件建議使用的共享磁碟是採用 Linux 主機搭配 iSCSI Target 軟體做出來的 Lun 磁碟,筆者覺得準備 SAN 環境使用 AoE 會比使用 iSCSI 簡單許多,能簡化測試 OCFS2 叢集檔案系統的流程。

OCFS2 系統架構圖檔

SLES10 硬體需求

SLES10 對於硬體要求主要瓶頸在於「記憶體」,事實上記憶體 128 MB 就可以裝、可以用(只是會跑的很慢、且大量存取 Swap),而筆者是使用 256 MB 勉強還 OK,至於要跑的順的話則建議要 512 MB 以上。

溫馨提示:若是您的主機配備還不錯(例如:記憶體 1 GB)甚至可以一台實體機器虛擬(使用 Xen 或 VMWare)出三台 Linux 主機來實戰以下的測試。

使用 SLES10 測試 OCFS2 的好處就是不需要自行編譯 OCFS2 相關程式 ocfs2-tools 與 ocfs2console 這兩個套件,SLES10 已經與 OCFS2 整合的很不錯了,若是您要使用別的 Linux 版本來實做 OCFS2 的話,請參考 OCFS2 網頁 http://oss.oracle.com/projects/ocfs2/ 內有詳細介紹。

網路部份的配置

有了三台 Linux(兩個 SLES10 Node1 與 Node2、一個 AoE Target 磁碟)後,接著使用 Ethernet+Switch 連接起來後,測試用到的「作業系統」、「電腦硬體」與「網路架構」大致上就算搞定了。

溫馨提示:其實測試環境 Ethernet 線路也只有一個星狀網路,所以我們測試時的 SAN 與 LAN 是混在一起的。

測試流程概況

測試的整個流程概況如下:

  • 作業系統、電腦硬體與網路架構基礎建設
  • 架構 SAN 也就是共享磁碟的建置(使用 AoE 方式)
  • 配置 OCFS2 檔案系統於共享磁碟裝置

架構 SAN(使用 AoE 方式)

筆者曾在本刊(NetAdmin 網管人雜誌)第七期(2006年八月號)中介紹如何使用 AoE(ATA Over Ethernet)打造 Ethernet SAN 建置,因為本篇重點在於「OCFS2」故底下所述 AoE 的建置流程會比較精簡,也請讀者多多包含!

AoE Target 端配置流程

AoE Target 端主機(提供共享磁碟的主機),需完成 AoE Target 端的建置,建置完成後 Target 端才能提供出這個共享磁碟。

溫馨提示:請準備好編譯工具,像是 gcc、make 與 glibc-devel 等等,這樣才能編譯 vblade 軟體。

第一步:至 http://sourceforge.net/projects/aoetools/ 下載一個名為『vblade』的軟體,筆者以 vblade-14.tgz 為例。

第二步:使用指令「tar -zxf vblade-14.tgz」解開包裹後,並進入 vblade 目錄

第三步:使用指令「make」來編譯 vblade 程式

第四步:使用指令「dd if=/dev/zero f=disk.iso seek=2097152 count=1」來製造一個虛擬磁碟名為 disk.iso 且磁碟的大小為 1 GB(可利用 seek 數字來調整空間大小)

第五步:使用指令「./vblade 1 2 eth0 disk.iso」執行 vblade 程式,來將 disk.iso 變成 AoE 的 Target 磁碟

溫馨提示:欲使用實體裝置(device)來當作 Target 磁碟也可以(例如 /dev/sdb1),效能會比用一般檔案當 Target 磁碟來的好許多。

AoE setup 圖檔

AoE Initiator 端配置流程

AoE Initiator 端主機(也就是兩個節點的主機),需完成 AoE Initiator 端的建置,建置完成後兩個節點才能抓到 AoE Target 端共享磁碟。

AoE Initiator 端的驅動程式(在 Linux 稱為 Kernel Module)新版本的 Linux 都已經內建了,所以只要使用指令「modprobe aoe」來載入 AoE 核心模組即可。(使用指令 modprobe -r aoe 來移除載入的 AoE 模組)

載入 AoE 模組後,所有發現的 AoE 磁碟都會位於 /etc/etherd 底下(例如 /etc/etherd/e1.2 這一顆)

若要下次開機就自動載入 AoE 核心模組的話,SLES 10 是寫到 /etc/sysconfig/kernel 的 MODULES_LOADED_ON_BOOT 參數內。

溫馨提示:接著我們就是要在共用的 /dev/etherd/e1.2 磁碟上面使用 OCFS2 檔案系統。

AoE Initiator setup 圖檔

配置 OCFS2

我們就從兩個節點皆標準安裝好 SLES 10 且已經設定好開機自動載入 aoe 模組開始吧!大部分安裝流程與一般預設安裝方式沒什麼差異,只需注意的部份為建議您於安裝期間就先行『關閉防火牆』,以簡化測試流程,若是安裝完成後要調整防火牆,請使用指令「yast2 firewall」呼叫出防火牆管理視窗即可輕鬆調整。

溫馨提示:防火牆並非不能開啟,而是要知道 OCFS2 用到那些埠號(或是採用以主機 IP-Based 的開放),才能用來調整防火牆的相關設定。

安裝 OCFS2 相關套件

標準安裝完成的 SLES 10 預設沒有安裝 OCFS2 相關套件,在 SuSE 可使用指令「yast2 sw_single」呼叫出軟體管理視窗,搜尋「ocfs」關鍵字後,將 OCFS2 相關軟體「ocfs2console」與「ocfs2-tools」勾選安裝。

溫馨提示:請記得兩個節點主機都要安裝 OCFS2 相關套件。

用 YaST2 來安裝 OCFS2 相關軟體

設定主機名稱與 IP 位址

底下為此次測試所使用的主機名稱與 IP 的對應表:

 

角色完整主機名稱短的主機名稱IP 位址
Node 1sles10n1.olsles10n1172.16.1.3
Node 2sles10n2.olsles10n2172.16.1.4

OCFS2 對於「主機名稱對應 IP 解析」是否正確相當的敏感(有些 Unix Daemon 程式也是這樣),所以最好是先行將主機設定成『固定 IP』並且『主機名稱能夠正確的解析到對應的 IP 位址』即可,不論您使用「DNS 解析」或「/etc/hosts 解析」都可行,特別要注意到的是,不論採用那一種解析方式,設定後的 FQDN(完整主機名稱)或是短的主機名稱(不含『點』的主機名稱,也就是指令 hostname -s 顯示出來的名稱)最好是都要正確對應才行。

SuSE 可使用指令「yast2 network」來設定固定 IP 以及主機名稱,若測試環境沒有 DNS 解析,那就設定這兩台主機的 /etc/hosts 檔案內容吧!範本如下:

在 Node 1 則是新增解析 Node 2 這一行「172.16.1.4    sles10n2.ol sles10n2」

在 Node 2 則是新增解析 Node 1 這一行「172.16.1.3    sles10n1.ol sles10n1」

下圖為 Node 1 的 /etc/hosts 檔案內容

/etc/hosts 檔案內容

溫馨提示:設定重點在於『互相要能夠解析的到』、『短的主機名稱也要可以使用』。

採用 DNS 解析對於完整主機名稱(FQDN)一般來說都能夠正常解析,筆者建議最好順便也使得「短的主機名稱」解析正確無誤,解決方法就是增加或修改 /etc/resolv.conf 檔案內的 search domainname 來辦到,以筆者的環境來舉例,就是新增或修改 /etc/resolv.conf 檔案內的 search ol 那一行(ol 即是測試環境的網域名稱)。

/etc/resolv.conf 檔案內容

使用 ocfs2console 工具

第一步:在 Node 1 執行指令「ocfs2console」來呼叫出圖形設定工具,下拉選單【Cluster】→【Configure Node...】,分別將 sles10n1 與 sles10n2 這兩個 Node 以及各自的 IP 位址輸入進去。

溫馨提示:若要設定防火牆的話,所要開通的 7777 埠就是在這顯示出來啦!

ocfs2console 設定

溫馨提示:第一步驟完成後,其實就設定好 Node 1 主機 /etc/ocfs/cluster.conf 檔案,內容如下:

cluster.conf 檔案

第二步:繼續在 Node 1 使用「ocfs2console」圖形設定工具,下拉選單【Cluster】→【Propagate Configuration...】,她會將 sles10n1 主機的 cluster.conf 透過 ssh 方式,同步至 sles10n2 主機

propagate 設定

溫馨提示:ssh 在第一次連線時需肯定的回答「yes」用來確認我們相信對方是『真正的對方主機』

第三步:繼續在 Node 1 使用「ocfs2console」圖形設定工具,下拉選單【Tasks】→【Format...】,呼叫初格式化磁碟的介面,確認磁碟裝置是我們要 Format 的 AoE 磁碟後,按下「確定」按鈕來執行 Format 磁碟。

format 磁碟

第四步:接著分別在兩台 Node 主機使用指令 mkdir 建立掛載點,例如:指令「mkdir /ocfs2」,建立掛載點完成後再按下「ocfs2console」工具列「Mount」按鈕並填入掛載點目錄,例如 /ocfs2 並按下確定來掛載 ocfs2 磁區。

mount 磁碟

第五步:同樣也在 Node 2 使用「ocfs2console」工具來將 OCFS2 磁區掛載到 /ocfs2 目錄,掛載成功以後整體 OCFS2 設定流程算是完成囉。

至於測試的部份,您可以分別在兩個 Node 使用指令「df -h」來觀察掛載情況,或是輪流在 Node 1 新增檔案與資料夾於 Node 2 瀏覽、Node 2 新增檔案與資料夾於 Node 1 瀏覽。

溫馨提示:進一步的測試就是要模擬其中一個 Node 掛掉,重新開機又再度加入叢集。

測試與 df -h

結語

在完成 OCFS2 測試後,不難發現她與其他檔案系統似乎不太一樣,怎麼說呢?一般檔案系統例如:像是 Linux 用的 ext3/ext2、Reiserfs、Windows 用的 NTFS、FAT32 大多是用在本機磁碟;而來自於網路的檔案系統像是 Unix/Linux 用的 NFS、Windows/Samba 用的 CIFS 主要是用在 NAS 磁碟系統;而 OCFS2 與 GFS 比較適合用在有 Cluster 與 SAN 的叢集電腦系統環境。

要達到完全「無懈可擊」叢集系統(也就是「單點」故障不影響運作),並沒有辦法單靠「叢集檔案系統」來完成,以我們這次測試的例子來說:AoE 磁碟就沒有備援功能,如果還要「即時」備援 Storage 磁碟的話,還可以利用 DRBD(網址 http://www.drbd.org/)來作 Storage 磁碟的即時鏡像(透過網路)。

溫馨提示:DRBD(全名為 Distributed Replicated Block Device)能夠即時複製(Replicated)區塊裝置(Block Device)到網路上的另一台電腦的 Block Device 用以達到 HA 目的,有機會的話必定與讀者分享架設 DRBD 心得。

許多 HA Cluster 在交互偵測系統可用度方面,都使用 Heartbeat(心跳線)架構與機制(可參考本文最前面 Cluster 架構圖),不論 OCFS2 或 DRBD 也都不例外,她們也都可以搭配 heartbeat 軟體(現在出到 heartbeat2 版)來使用,關於 heartbeat 請參考網址 http://www.linux-ha.org/HeartbeatProgram,也就是 linux-ha 網站上關於 heartbeat 的說明與介紹。

筆者原先只使用一台電腦安裝 Linux 搭配 Xen 虛擬三台來測 OCFS2 建置,SLES10 就必須要讓 Heartbeat2 也正常運作才可以掛載使用 OCFS2 磁碟,也就是在 Xen 的 Dom0 與 DomU 架構下,可以 Format OCFS2 磁區但卻一直 mount 不起來,後來看說明設定好 Heartbeat2 後,就可以掛載使用 OCFS2 磁區。

筆者第二次測試改採三台獨立電腦,就不一定要設定 heartbeat2 就直接可以 mount OCFS2 磁區來使用,我想 SuSE 這樣的用意,在於 OCFS2 的 SAN 可以搭配 Xen 架構下的 Live Migration 並配合 heartbeat2 偵測,成為企業 Enterprise 級的 HA Cluster 應用方案。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-621100/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-621100/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值