站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

利用 FreeNAS 打造儲存設備 (7) - Failover (故障轉移)

OpenFoundry

本文刊載於 [OpenFoundry 電子報第 186 期 - 利用 FreeNAS 打造儲存設備 (7)-Failover (故障轉移)] 於 2011 年 12 月 13 日出刊,您可至 [OpenFoundry 電子報總覽] 輸入您的 E-Mail 即可訂閱。

前言

本文將實作如何建立 lagg 虛擬網路介面,以達到 FreeNAS 主機運作中網路卡故障轉移功能,並且分別解說由 Console 或由 GUI 圖形介面進行修改方式,設定完成後會進行Lagg 故障轉移機制測試。

實作環境

Lagg 虛擬網路卡

[Lagg] 為將 FreeNAS 主機上多片實體網路卡群組起來之後所產生的一片虛擬網路卡,它可以提供實體網路卡具備故障轉移 (Failover),以及頻寬合併 (LACP、FEC) 或流量均衡負載 (Loadbalance、Round-robin) 的能力,若設定為 None 模式則會禁止任何網路流量,但是不會禁止 lagg 介面的建立。

Console 設定 Lagg 故障轉移功能

要設定 FreeNAS 主機 Lagg 故障轉移功能以前,請先將網卡上的網路線拔除,以避免主機一開機就尋找區網內 DHCP Server 干擾設定,以下為 Console 介面手動設定固定 IP 位址的步驟:

1. 輸入「2」 進入 「Configure Link Aggregation」: 設定 Lagg 故障轉移功能

2. 輸入「1」 進入 「Configure Network Interfaces」:設定網卡 IP 位址

3. 輸入「4」進入 「Configure Default Route」: 設定主機預設閘道 IP 位址

4. 輸入「6」 進入 「Configure DNS」: 設定主機使用名稱解析伺服器 IP 位址

5. 輸入「10」 進入 「Reboot」 選項將主機重新啟動

6. 主機重新啟動的同時,此時請將主機網路卡(em0、em1)與網路交換器之間的網路線插上。

圖1、建立 Lagg 虛擬網路介面 圖2、設定固定 IP 位址至 Lagg 網路介面 圖3、設定 Default Gateway 至 Lagg 網路介面 圖4、設定 Domain 及 DNS 至 Lagg 網路介面

GUI 設定 Lagg 故障轉移功能

  1. 先將 FreeNAS 主機其中一片網路卡接上網路線(只插 em0),區域網路中已有架設 DHCP 伺服器,主機由 em0 網路卡取得 IP 位址 10.10.75.52。
  2. 開啟瀏覽器後於網址列輸入 FreeNAS 主機暫時的 IP 位址「http://10.10.75.52」,此時將自動登入 FreeNAS GUI 圖形介面(IE Browser 已可正常操作)。
  3. 切換至「Network > Link Aggregations > Create Link Aggregation 」,選擇及輸入相關資訊:
    1. Lagg protocol: 顯示 Lagg 故障轉移功能支援的六種模式,選擇「Failover」。
    2. Physical NICs in the LAGG:顯示於開機流程中偵測到的網路卡清單,請選擇要加入 Lagg 功能的實體網路卡編號,選擇「em0、em1」後按下「OK」鍵。
  4. 切換至「View All Link Aggregations」按下「lagg0」項目的「Edit Interface」鈕,輸入 IP 位址資訊:
    1. Interface Name: 請輸入此網路卡的別名(此為必填欄位無法忽略!!),採用預設值「lagg0」即可。
    2. IPv4 Address:請輸入設定於此網路卡上的固定 IP 位址,此例輸入「10.10.75.10」。
    3. IPv4 Netmask:請於下拉選單中選擇適合的網路遮罩值,此例選擇「/24 (255.255.255.0)」。
    4. Save: 當上述設定確認無誤按下 「Save」 鈕確定套用設定值。
    5. 切換到 FreeNAS Console,輸入「10」 進入 「Reboot」 選項,將主機重新啟動。

圖5、建立 Lagg 虛擬網路介面及選取成員網卡 圖6、設定固定 IP 位址至 Lagg 網路介面 圖7、設定主機名稱、網域、Default Gateway、DNS 至 Lagg 網路介面 圖8、重新啟動 FreeNAS 主機

測試 Lagg 故障轉移機制

故障轉移 (Failover) 功能啟用時,會將第一片加入 Lagg 的實體網卡視為「主要(Master)」 網卡,而此網卡的 MTU 設定值也將會是 Lagg 虛擬網卡的預設 MTU 值,於之後加入的網卡則皆為故障轉移的備用網卡(之後加入的網卡 MTU 時須配合 Master,以免影響網路功能運作)。

其中只有當 Master 網卡不可用時才會啟用另一個備用網卡,而該網卡具有「Active」者才會進行封包的發送及接收,並且 FreeNAS 的故障轉移具有「Failback 機制」,也就是當 Master 網卡故障時備用網卡會接手流量,但是當 Master 網卡復原時會把「Active」控制權搶回來進行封包的發送及接收,那麼該如何在 Console 及 GUI 查看哪一片網卡是 Master?

圖9、Console 查看 Lagg 網卡成員狀態 圖10、GUI 查看 Lagg 網卡成員狀態

可以在 Console 中進入 Shell 模式後,輸入「systat -ifstat 1」指令來即時查看網卡流量,此時 Master/Active 為 em0 網卡,若 em1 網卡故障當然不影響整體運作,下列將以 em0 網卡故障時(以拔除網路線為測試方式),Failover 及 Failback 影響網路流量的時間。

圖11、即時查看網卡流量

採用持續 ping 的方式來查看 FreeNAS 主機的流量,經實測當 em0 網卡故障後,整個故障轉移的 Failover 過程大約掉了 2 ~ 3 個 ping 封包,而當 em0 網卡恢復後將主控權搶回的 Failback 過程大約也掉了 4 ~ 5 個 ping 封包。

如果您覺得這樣的反應時間太長,您還可以透過調整「net.link.lagg.failover_rx_all」參數值改善情況,此預設值為「0」使用指令 「sysctl net.link.lagg.failover_rx_all=1」 調整參數值後,經實測 Failover 及 Failback 過程皆 「不會掉封包」 的情況發生。

如果您希望該參數值當 FreeNAS 重新啟動仍能繼續有效,則可以透過修改「/conf/base/etc/sysctl.conf」設定檔達成,不過 FreeNAS 是嵌入式設計,所以要先把根目錄設定為「非唯讀」狀態才有效,操作步驟如下:

 #mount | grep read-only
  /dev/ufs/FreeNASs1a on / (ufs, local, read-only, soft-updates)
 #mount -uw /
 #mount | grep s4
  /dev/ufs/FreeNASs4 on /data (ufs, local, noatime, soft-updates)
 #echo 'net.link.lagg.failover_rx_all=1'  >> /conf/base/etc/sysctl.conf

結語

至此 FreeNAS 的網卡故障轉移功能已設定完成,並且通過災難測試。FreeNAS 官方有錄製教學影片 [FreeNAS™ 8: LAGG and VLAN],有興趣的朋友不妨參考看看。

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com