本文將實作建立 lagg 虛擬網路介面,以達到 FreeNAS 主機網路發生故障時的轉移功能,並且分別解說由 Console 或由 GUI 圖形介面進行的修改方式,設定完成後會進行 Lagg 故障轉移機制測試。
- 作業系統:FreeNAS-8.0.2-RELEASE(32 位元版本)
- 網路卡:em0、em1
- 區域網路 IP 網段:10.10.75.0 / 255.255.255.0
- Default Gateway:10.10.75.254
Lagg 是將 FreeNAS 主機上多片實體網路卡群組之後所產生的一片虛擬網路卡,它可以讓實體網路卡具備故障轉移 (Failover),以及頻寬合併 (LACP、FEC) 或流量均衡負載 (Loadbalance, Round-robin) 的能力,若設定為 None 模式則會禁止任何網路流量,但不會禁止 lagg 介面的建立。
要設定 FreeNAS 主機 Lagg 故障轉移功能以前,請先將網卡上的網路線拔除,以避免主機一開機就尋找區網內 DHCP Server 干擾設定。Console 介面手動設定固定 IP 位址的步驟如下:
▲ 圖1:建立 Lagg 虛擬網路介面
▲ 圖2:設定固定 IP 位址至 Lagg 網路介面
▲ 圖3:設定 Default Gateway 至 Lagg 網路介面
▲ 圖4:設定 Domain 及 DNS 至 Lagg 網路介面
▲ 圖5:建立 Lagg 虛擬網路介面及選取成員網卡
▲ 圖6:設定固定 IP 位址至 Lagg 網路介面
▲ 圖7:設定主機名稱、網域、Default Gateway、DNS 至 Lagg 網路介面
▲ 圖8:重新啟動 FreeNAS 主機
故障轉移 (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 (https://www.youtube.com/watch?v=F1Y9vWCVdHk),有興趣的朋友不妨參考看看。