Pages

2008年11月10日

[ Linux 系統 ] 步驟:在 RHEL5 上面設定 RHCS 的一個範例

這是一個如何在 RHEL5 上面,設定 RHCS 實行 HA 的範例,以步驟的方式來說明。
  1. 安裝兩台 RHEL5,這邊的範例中,每台 RHEL5 有兩張網卡,一張網卡的 IP 為 10.0.0.xxx,另外一張為 192.168.254.xxx。
     
  2. 安裝完畢後,確認兩台時間同步。如果有 NTP 伺服器最好。由於 Red Hat Cluster Suite 運作時要求時間同步,如果環境內沒有 NTP 伺服器,可以考慮將其中一台作為可供另外一台對時用的 NTP 伺服器。
     
  3. 測試環境,可以將 firewall 與 SELinux 關閉。如果不熟悉 firewall 與 SELinux 的操作,建議關閉,否則後續將會遇到許多操作上的困難。
     
  4. 確認兩台伺服器的 /etc/hosts 內部同時記載兩台伺服器的所有 IP 與名稱對應的紀錄。內容類似如下:

    10.0.0.51 ha01.example.com
    10.0.0.52 ha02.example.com
    192.168.254.51 hb01.example.com
    192.168.254.52 hb02.example.com
     
    請依照實作環境的實際情況調整,以上只是本範例中所使用的情況。其中 ha01 是第一台伺服器對外用的連線,ha02 是第二台伺服器對外的連線。hb01 是第一台伺服器供 Cluster 運作所使用的連線,而 hb02 是第二台伺服器供 Cluster 運作所使用的連線。

    大多數的 clusterware 都會要求要有 public 與 private 兩條線路,其中 public 就是用來對外連線用的線路,而 private 則是作為 heartbeat 用的線路。但是在 RHCS 的架構中,並沒有這樣的設計。也就是說,如果只有一條線路,也可以架設 RHCS。但是如果這條線路中斷的時候,就會造成 heartbeat 中斷,此時預防腦分裂的動作就會開始實行。

    一般實作上,由於現代伺服器幾乎最少都會有兩個內建的網路卡,加上 RHCS 實行上會要求有 fence device 的設計,如果 fence device 是走 IP 通訊的話,結合以上兩點(兩個內建網路卡,透過 IP 與 fence device 通訊),通常會拿其中一張網路卡,與 fence device 透過一個獨立的 switch 連接,走另外一個 IP 網段,作為 RHCS daemon 溝通用。
     
  5. 設定 RHCS 有兩種方法:在 RHEL5 上面,可以透過傳統的 system-config-cluster 來設計,或是採用新的 luci 介面(Web 介面)來設計。基本上個人比較偏好使用 system-config-cluster 來設計,因為比較簡單好用。這邊主要介紹 system-config-cluster 來設計。
     
  6. 第一次啟動 system-config-cluster 時,會收到如下圖所示的一個警訊:

    按下 "Create New Configuration" 按鈕繼續。
     
  7. 接下來,要選擇 Lock Method:

    一般選擇預設的 DLM 即可。按下 "OK" 繼續。
     
  8. 此時進入主畫面。先點一下左側樹狀結構的「Cluster」,然後點一下右下角的 "Edit Cluster Properties" 按鈕。
     
  9. 在 Cluster Properties 視窗中,於 Name 欄位,為這個 cluster group 給予一個名稱。其他欄位維持預設值即可。按下 "OK" 關閉這個視窗。
     
  10. 點一下左側樹狀結構的「Cluster Nodes」,然後點一下右下角的 "Add a Cluster Node" 按鈕。
     
  11. 在 Node Properties 視窗中,在 Cluster Node Name 欄位輸入其中一台伺服器的 hostname 或是 FQDN。

    FQDN 是最好,請盡量不要輸入 IP。如果沒有 DNS,就是靠 /etc/hosts。

    在這個範例中,輸入的是 hb01.example.com。輸入完畢後,按下 "OK" 關閉這個視窗,然後重複這個步驟一次,再次輸入 hb02.example.com,將兩台伺服器都加入。
     
  12. (如果沒有 Fence Device,可以跳過此步驟)點一下左側樹狀結構的「Fence Devices」,點一下右下角的 "Add a Fence Device" 按鈕。
      
  13. 在 Fence Device Configuration 視窗,選擇對應的 Fence Device 並且填妥需要的設定值後,按下 "OK" 關閉視窗。別忘了,每台伺服器對應的 Fence Device 都需要一組設定。
     
  14. 加入所有 Fence Device 後,點一下左側樹狀結構的「Cluster Nodes」,點一下其中一台伺服器,然後右下角的 "Manage Fencing For This Node" 按鈕。
        
  15. 在 Fence Configuration 視窗,可以在左側看到伺服器名稱,然後點一下右下角的 "Add a New Fence Level" 按鈕。
       
  16. 點一下左側的 Fence-Level-1,然後點一下右下角的 "Add a New Fence to this Level" 按鈕。
       
  17. 在 Fence Properties 視窗,點一下左上角的下拉式選單,選擇屬於本機的 fence device 後,按下 "OK" 按鈕關閉這個視窗。

    這邊值得注意的是,不要選錯 fence device。fence device 是一個電源控制裝置,可以用來對伺服器進行 Power On,Power Off 以及 Power Cycle(先 Power Off 後 Power On)等動作,目的在於當某台伺服器當機,或是腦分裂的時候,用來強制重新啟動目標伺服器用的。

    所以,假設 fence01 控制的是 node01,fence02 控制的是 node02,在這個步驟設定時,如果是設定 node01 的 fence device,就應該選 fence01。

    如果選錯,將 node01 的 fence device 錯選為 fence02,那麼當 node02 當機時,node01 要將 node02 重開機時,卻會錯將 node01 重開機,而導致 HA 失效。所以在這個步驟千萬不要選錯。
       
  18. 回到 Fence Configuration 視窗,此時 fence device 已經新增完成。按下 "Close" 關閉這個視窗。
     
  19. 重複步驟 14 到 18,替第二台伺服器添增 fence device。
     
  20. 點一下左側樹狀結構的「Failover Domain」,點一下右下角的 "Create a Failover Domain" 按鈕。
     
  21. 在 Add Failover Domain 視窗,於 Name for new Failover Domain 欄位,給予一個名稱。輸入完畢後,按下 "OK" 按鈕。
     
  22. 上一步驟按下 "OK" 按鈕後,會直接開啟 Failover Domain Configuration 視窗。點擊 Available Cluster Nodes 處,會出現下拉式選單。先點選其中一台伺服器,此時會將該伺服器加入 Member Nodes 處,然後再點一次 Available Cluster Nodes 下拉式選單,此時會剩下一台伺服器,點擊該伺服器,則兩台伺服器都出現在 Memeber Node 處,而原本的 Available Cluster Node 處會變成 No Cluster Nodes Available。
  23. 在本視窗,右邊有兩個選項可勾選。

    Restrict Failover To This Domain Members:只有在三台以上的 HA 環境,這個選項才有意義。如果勾選這個選項,表示服務只能在這個 failover domain 的伺服器群之間移轉。如果沒有勾選,表示服務可以移轉到這個 failover domain 以外的伺服器。由於 HA 至少要兩台伺服器,所以一個 failover domain 至少有兩台伺服器。在這個範例中,也只有兩台伺服器,所以這個選項在這個範例中,是否勾選,都沒有影響。

    Prioritized List:如果這個選項被勾選,就可以用來決定這個 failover domain 中的所有伺服器的優先權。優先權較高的,則在啟動服務或是服務移轉(re-locate)時會被優先選擇。通常來說,在兩台伺服器的環境中,是沒有必要勾選這個選項的。
     
  24. 加入伺服器後,按下 "Close" 按鈕,關閉這個視窗。
     
  25. 點一下左側樹狀結構的「Resources」,然後點一下右下角的 "Create a Resource" 按鈕。
     
  26. 在 Resource Configuration 視窗,選擇要建立的 resource,並且填滿必要的欄位。然後按下 "OK" 來建立一個 resource。

    這邊提供一個經驗。在建立 GFS Resource 時,有個 File System ID,這個欄位不用填。當這個 resource 啟動時,RHCS 會自動給予一個 ID,並且加入設定檔中。另外就是,這個 GFS partition,如果是手動格式化的,請不要格式化成 GFS2 格式。即使是用 LVM Manager 建立的 LV,畫面上顯示是 GFS2 格式,但是實際上,請確定是 GFS 格式。因為 RHCS 只支援 GFS 格式而已。
     
  27. 建立好 resource 後,點一下左側樹狀結構的「Services」, 點一下右下角的 "Create a Service" 按鈕。

    所謂的 Service,就是一連串的 resource 與 failover domain 的集合。例如說,要啟動 MySQL,然後將檔案放在 storage 上面切出來的一個 LUN,格式化為 GFS 的 partition,並且綁上一個虛擬 IP,讓外面的 client 不用知道主機的 IP,只要連到這個虛擬 IP 就能取得服務。這個過程中,有三個 resource:虛擬 IP,GFS 檔案系統,跟 MySQL 服務。這時候就是建立一個 service,這個 service 包含了這三個 resource。
     
  28. 在 Add a Service 視窗,於 Name 欄位,給予這個 service 一個名稱。按下 "OK" 按鈕。
     
  29. 按下 "OK" 按鈕後,會開啟 Service Management 視窗。

    先在右上角的 Failover Domain 右側的 None 點一下,叫出下拉式選單,然後選擇對應的 Failver Domain。

    Autostart This Service:如果希望開機的時候自動執行這個 service,將這個打勾。

    Run Exclusive:如果希望這個服務執行的時候,執行的伺服器不會有其他服務切換過來,就將這個打勾。例如說,這個服務是一個需要極大系統資源的服務,如果這個服務在第一台伺服器運行的時候,不希望有其他服務也在第一台伺服器運行,以免系統資源不足以應付這個服務所需,此時,就將 Run Exclusive 打勾,就可以確保這個服務對於伺服器的獨佔性。

    Recovery Policy:
    Restart 的意思是,如果這個服務運行時發生異狀,先選擇在本機重新啟動,如果還是有問題,才移轉到另外一台伺服器。
    Relocate 的意思是,如果這個服務運行時發生異狀,則直接移轉到另外一台伺服器運行。
    Disable 的意思是,如果服務運行異常,則停止服務。
     
  30. 接下來,在 Service Resource List 處,由於先前已經設定好所有需要的 resource,因此直接按左下角的 "Add a Shared Resource to this service" 按鈕,然後在 Shared Resource Selection 視窗,先選擇一個 resource。

    選擇 resource 是一個學問。要注意到 resource 的依存性,來決定 resource 啟動的順序。

    以步驟 27 提到的 MySQL 為例,由於資料庫檔案是放在 shared disk 上面,而且 MySQL 需要聆聽虛擬 IP,由此可見 MySQL 一定是最後才啟動的 resource。而虛擬 IP 跟 GFS 需要比 MySQL 優先啟動。

    如果以 MySQL 為例,就可以先選虛擬 IP 或是 GFS 為第一個 resource。
     
  31. 如果要啟動的 resource 有依存性,此時先點擊方才加入的 resource,然後中間下面的 "Attach a Shared Resource to this selection",此時 Shared Resource Selection 視窗再度躍現,此時可以選擇第二個啟動的 resource。以 MySQL 為例,如果第一個是虛擬 IP,第二個就是 GFS。

    然後重複此步驟,再接續一個 resource,此時就是 MySQL 了。
     
  32. 同一層的 resource 啟動順序並不是按照畫面上的,由上往下啟動,而是同時啟動。也是因為這樣,所以對於有依存性的服務,需要採取步驟 30 到 31 的方式來設定。
     
  33. 如果還有其他的 resource 要添加,此時可以按 "Add a Shared Resource to this service" 來添加其他 resource。
     
  34. 如果在設定 service 時發現需要某樣 resource,但是之前並沒有加入的話,可以按 "Create a Shared Resource for this service" 來建立新的 resource。
     
  35. 設定完畢後,按 "Close" 按鈕關閉這個視窗。
     
  36. 回到 Cluster Configuration 視窗,此時按下左上角的 File,選擇 Save 儲存設定檔。畫面會提示儲存的位置為 /etc/cluster,檔名為 cluster.conf。請不要更改儲存路徑或檔名,這是預設的路徑與檔名,請接受。
     
  37. 儲存完畢後,可以關閉 Cluster Configuration 視窗。
     
  38. 將 /etc/cluster/cluster.conf 拷貝到另外一台伺服器,儲存於相同的路徑下。
     
  39. 確定以下服務有開啟開機時啟動:
    cman
    clvmd(如果有用到 GFS)
    rgmanager
     
  40. 將兩台伺服器重開機。
     
  41. 設定完成。

沒有留言: