89 期 - 在 Windows Server 2012 設置 MPIO 負載平衡 IP-SAN

網管人雜誌

          本文刊載於 網管人雜誌第 89 期 - 2013 年 6 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

1、前言
2、實作環境
3、實作網路架構圖
4、MPIO 裝置及路徑探索流程
5、MPIO 負載平衡機制
6、iSCSI Target 主機新增角色
          初始化儲存硬碟
          新增 iSCSI 虛擬磁碟
7、iSCSI Initiator 主機新增多重路徑功能
          新增 MPIO 裝置
          iSCSI Initiator 主機 MPIO 設定
8、測試 MPIO 負載平衡及容錯切換功能
9、結語





1、前言

於 2003 年 2 月網際網路工程任務小組(Internet Engineering Task Force,IETF),正式通過由 Cisco 與 IBM 一同發起網際網路小型計算機系統介面(Internet SCSI,iSCSI)的標準。iSCSI SAN 又常常簡稱為 IP-SAN,此項技術為將傳統上僅能用於本機傳輸的 SCSI 協定使其可以透過 TCP/IP 乙太網路承載以達到資料高速傳輸的需求。

iSCSI 傳輸協定透過 TCP/IP 的 Port 860 及 3260 作為溝通管道,使得二台主機之間(iSCSI Target、iSCSI Initiator)可以利用 iSCSI 協定來交換資料傳輸的 SCSI 指令集,因此這項技術使得二台主機之間可以透過高速的區域乙太網路將身處於遠端的儲存設備模擬為本地端的儲存設備,同時此項技術最大的優點在於其使用的 傳輸線材、網路交換器、網路卡 皆可以使用企業原有的網路架構來達成,這也是近幾年來 iSCSI 技術迅速竄紅的原因之一。

圖 1、iSCSI Target 及 iSCSI Initiator 運作示意圖

在 2011 年 4 月微軟首次發行「Microsoft iSCSI Software Target(最新版本為 3.3)」,至目前為止已經超過六萬次的下載,您只要在舊版的 Windows Server 2008 R2 中安裝後便能讓伺服器具備 iSCSI Target 的能力。現在新一代的 Windows Server 2012 已經將 iSCSI 目標伺服器「內建」在伺服器角色當中,您可以很輕鬆便能建立「區塊儲存區(Block Storage Leverages)」環境,進而提供下列應用場景:

  • 無磁碟網路開機環境(Diskless Boot)
  • 伺服器應用程式儲存區(Server Application Storage)
  • 支援非 Windows iSCSI Initiator 的異質儲存區
  • 開發、測試、示範、實驗室…等 SAN 儲存環境

圖 2、Windows 儲存架構及裝置驅動程式

本文實作內容中將設定 Windows Server 2012 新增「iSCSI 目標伺服器」以擔任 iSCSI Target 共用儲存設備的角色,另一台 Windows Server 2012 則擔任 iSCSI Initiator 角色,並透過設定 MPIO(MultiPath Input / Output)機制使多片實體網路卡能同時連接 iSCSI Target 儲存設備,達成平時將傳輸流量「負載平衡」到多片網路卡之間,當發生災難事件如 網路卡損壞、網路交換器損壞時又具備將網路流量「容錯移轉」之目的。

圖 3、多重路徑(Multipath)運作示意圖





2、實作環境






3、實作網路架構圖

下圖為本文中,實作環境的網路架構示意圖。

圖 4、iSCSI MPIO 實作網路架構圖





4、MPIO 裝置及路徑探索流程

Windows MPIO 機制允許一台 Windows Server 主機,可以同時連接到不同的儲存設備進行存取作業,這表示一台 Windows Server 可以安裝多個「DSM(Device-Specific Module)」,如圖 5 所示為 MPIO 機制在運作時針對「裝置(Device)及路徑(Path)」的探索流程。

圖 5、MPIO 裝置及路徑探索流程圖





5、MPIO 負載平衡機制

當您後續為 Windows Server 2012 設定好 MPIO 多重路徑機制時,在負載平衡原則下拉式選單中您將會發現可使用多種 MPIO 負載平衡機制,預設會採用「循環配置資源(Round Robin)」方式也就是會嘗試平均分配所有傳入要求,如果您有其它需求的話也可以調整負載平衡原則:
  • 僅限容錯移轉(Failover Only): 同一時間只有「一個」主要使用路徑,當主要路徑失效時備用路徑便會接手 I/O。
  • 循環配置資源(Round Robin): 採用「Active-Active」機制會平均使用所有可用路徑。
  • 以子集循環配置資源(Round Robin with Subnet): 除了循環配置之外再增加一組備用路徑,例如有 A、B、C 三條可用路徑其中 A、B 為主要路徑而 C 為備用路徑,除非 A、B 路徑都失效否則不會使用到 C 備用路徑。
  • 最小佇列深度(Least Queue Depth): 統計目前可用路徑當中累積「最少佇列 I/O」的路徑,便將後續的 I/O 分配給該路徑。
  • 加權路徑(Weighted Paths): 可自行分配「路徑權重」數值越大則優先順序越低
  • 最少區塊(Least Blocks): 統計目前可用路徑當中累積「最少待處理 I/O 位元組」的路徑,便將後續的 I/O 分配給該路徑。





6、iSCSI Target 主機新增角色

在 Windows Server 2012 當中已經「內建」iSCSI 目標伺服器(iSCSI Target),因此將先為擔任 iSCSI Target 主機進行伺服器角色的安裝動作。
  1. 請依序點選「伺服器管理員 > 管理 > 新增角色及功能」項目。
  2. 由於所要安裝的「iSCSI 目標伺服器」屬於伺服器角色(Server Role),因此請選擇「角色型或功能型安裝」項目後按「下一步」鍵繼續新增角色程序。
  3. 在選取目的地伺服器頁面中,請選擇「從伺服器集區選取伺服器」項目(預設值),接著點選要安裝 iSCSI 目標伺服器角色的主機。
  4. 在選取伺服器角色頁面中,請勾選位於「檔案和存放服務 > 檔案和 iSCSI 服務」下的「iSCSI 目標伺服器」項目將會彈出新增相依角色視窗請按「新增功能」鍵 (如圖 6 所示)。
  5. 在選取功能頁面中因為不需要安裝任何伺服器功能項目,因此請按「下一步」鍵繼續新增角色程序。
  6. 在確認安裝選項頁面中,您可以勾選或不勾選「必要時自動重新啟動目的地伺服器」項目(安裝此伺服器角色並不需要重新啟動主機),因此是否勾選此項目並不影響動作,確認要進行 iSCSI 目標伺服器安裝程序請按下「安裝」鍵,便可以完成此伺服器角色的安裝作業(如圖 7 所示)。
圖 6、新增 iSCSI 目標伺服器角色

圖 7、iSCSI 目標伺服器角色安裝完畢



初始化儲存硬碟

為 iSCSI Target 主機安裝好 iSCSI 目標伺服器角色後,接著為處理用於屆時擔任儲存空間的 100 GB 硬碟進行「上線、初始化、格式化」的動作。
  1. 將 100GB 硬碟進行「上線」作業也就是準備執行硬碟初始化的前置動作,請點選離線硬碟後按下滑鼠右鍵接著於右鍵選單中選擇「上線」項目(如圖 8 所示)。
  2. 此時將會出現磁碟上線警告訊息,提示您如果此硬碟已經有其它伺服器掛載使用中(例如 該硬碟 Pass-through),那麼您強制執行磁碟上線作業可能會導致原有的資料遺失,不過因為這顆硬碟並沒有其它用途,所以可以放心的按下「」鍵繼續執行,當磁碟上線作業完成之後,您會看到該硬碟狀態欄位轉變為「連線」而唯讀欄位的勾選狀態則「打勾消失」。
  3. 接著請再次按下滑鼠右鍵後於右鍵選單中選擇「初始化」項目。此時將會出現磁碟初始化警告訊息,提示您會刪除該磁碟中所有資料並且初始化為 GPT 格式的磁碟(支援超過 2 TB 磁碟空間),請按下「是」鍵執行磁碟初始化的動作,當磁碟初始化作業完成之後,您會看到該硬碟未配置欄位由原本的 100 GB 轉變為「99.9 GB」,而磁碟分割欄位狀態由未知轉變為「GPT」(如圖 9 所示)。
  4. 最後選擇「新增磁碟區」項目以便格式化硬碟,只要依照精靈互動設定給予「磁碟機代號」以及「磁碟區標籤」後,按下「建立」鍵即可完成磁碟區格式化作業(如圖 10 所示)。
圖 8、為 100GB 硬碟進行初始化的前置動作

圖 9、硬碟初始化完成後新增磁碟區

圖 10、完成磁碟區格式化作業



新增 iSCSI 虛擬磁碟

          本文實作中規劃建立二顆 iSCSI 虛擬磁碟在剛才格式化的 100 GB 硬碟當中,其中一顆 iSCSI 虛擬硬碟大小為 1 GB 擔任容錯移轉叢集環境當中的「仲裁磁碟(Quorum Disk)」,而另一顆虛擬硬碟大小則為剩下空間的 98.8 GB 擔任屆時容錯移轉叢集環境當中「共用儲存磁碟(Storage 1 Disk)」。
  1. 請於 iSCSI Target 主機開啟伺服器管理員並依序點選「檔案和存放服務 > iSCSI」項目,接著在 iSCSI 虛擬磁碟設定區塊中點選「若要建立 iSCSI 虛擬磁碟,請啟動新增 iSCSI 虛擬磁碟精靈」連結。
  2. 在彈出的新增 iSCSI 虛擬磁碟精靈視窗中,請在依磁碟區選取區塊中點選剛才格式化的「E 槽」後(100 GB 硬碟)。
  3. 在指定 iSCSI 虛擬磁碟名稱頁面中,請在「名稱」欄位輸入iSCSI 虛擬磁碟名稱「LUN0」在輸入的同時您會看到在「路徑」欄位中會建立 LUN0.vhd 檔案(因為是 iSCSI Software Target),在描述欄位輸入此 iSCSI 虛擬磁碟用途「Failover Cluster Quorum Disk」 (如圖 11 所示)。
  4. 在指定 iSCSI 虛擬磁碟大小頁面中,請在大小欄位中輸入數字「1」單位為預設的 GB 即可(Quorum Disk 大小 1 GB 已經非常足夠)。
  5. 在指派 iSCSI 目標頁面中請選擇「新增 iSCSI 目標」,接著請在名稱欄位輸入「Quorum」(此名稱為屆時 iSCSI Initiator 會看到的 iSCSI Target 名稱),並在描述欄位輸入此 iSCSI 虛擬磁碟用途「Failover Cluster Quorum Disk」。
  6. 在指定存取伺服器頁面中,為設定屆時哪些 iSCSI Initiator 可以存取 iSCSI Target 資源,此實作中加入 Node 1 及 Node 2 主機的 iSCSI Initiator IQN名稱(如圖 12 所示)。
  7. 此外本文實作未使用到 CHAP 驗證機制,再次檢視相關的組態設定內容確認無誤後按下「建立」鍵即完成新增 iSCSI 虛擬磁碟的動作(如圖 13 所示)。
圖 11、設定 iSCSI 虛擬磁碟名稱

圖 12、允許 Node 1、Node 2 主機可存取儲存資源

圖 13、完成第一顆 iSCSI 虛擬磁碟建立動作

請依照同樣的建立動作將剩餘的 98.9 GB 空間給予另一個 iSCSI 虛擬磁碟,其中虛擬磁碟名稱為「LUN1」而目標名稱為「Storage 1」即可。

圖 14、完成二顆 iSCSI 虛擬磁碟的建立





7、iSCSI Initiator 主機新增多重路徑功能

本文實作中 Node 1、Node 2 主機已安裝 Hyper-V 伺服器角色,並且擔任 iSCSI Initiator 以存取 iSCSI Target 儲存資源(VM 虛擬主機儲存都存放於此),因此您可以想像到 iSCSI Target 與 iSCSI Initiator 之間會有頻繁的資料存取行為,那麼首當其衝的就是網路頻寬很有可能會是屆時的存取瓶頸(Bottleneck)。

因此採用「多重路徑(Multi-Path I/O,MPIO)」機制來達成 負載平衡、容錯切換 的目的,MPIO 機制為作用在乙太網路上透過 TCP/IP 協定傳輸 SCSI 指令來達到多條存取路徑到 iSCSI Target,同時建議您應該要將網路交換器也分開(如此本文實作網路架構圖),如此一來便可以避免發生「單點失敗(Single Point Of Failure,SPOF)」的問題。

請切換到擔任 iSCSI Initiator 角色的主機依序點選「伺服器管理員 > 管理 > 新增角色及功能」項目準備安裝多重路徑 I/O 伺服器功能。接著在新增角色及功能精靈的引導之下勾選「多重路徑 I/O」項目即可。

圖 15、新增多重路徑 I/O 功能



新增 MPIO 裝置

您必須在 iSCSI Initiator 主機先使用 iSCSI 啟動器連結 iSCSI Target(192.168.75.20),否則等一下將「無法」勾選新增 MPIO 裝置,請在伺服器管理員視窗中依序點選「工具 > iSCSI 啟動器」項目,會彈出視窗詢問您以後是否要開機自動啟動 Microsoft iSCSI 服務,請按下「是」鍵確認即可。

在開啟的 iSCSI 啟動器視窗中,請切換到「目標」頁籤中在目標欄位輸入 iSCSI Target 的 IP 位址「192.168.75.20」後按下「快速連線」鍵進行連結。請點選「iqn.1991-05.com.microsoft:iscsi-quorum-target」項目後按下「連線」鍵,此時在該列狀態將顯示為「已經連線」並且在進度報告區塊中顯示「登入成功」訊息,請按下「完成」鍵結束連線設定。

圖 16、先連結 iSCSI Target 以新增 MPIO 裝置

接著請於伺服器管理員視窗中依序點選「工具 > MPIO」項目,然後切換到「探索多重路徑」頁籤,勾選「新增 iSCSI 裝置的支援」項目(若未先連結 iSCSI 目標,則此項目將為灰色無法勾選),接著請按下「新增」鍵此時將會彈出「需要重新開機」視窗,請按下「是」鍵新增 MPIO 裝置並重新啟動主機。

圖 17、新增 MPIO 裝置



iSCSI Initiator 主機 MPIO 設定

請先將剛才為了新增 MPIO 裝置的連線記錄刪除後再重新設定,請再次開啟 iSCSI 啟動器並切換至「探索」頁籤後點選「探索入口」鍵,再彈出的搜尋目標入口視窗中填入 iSCSI Target 用於建立 MPIO 第一個連線的 IP 位址「192.168.75.20」後按下「確定」鍵。

請切換到「目標」頁籤後點選「iqn.1991-05.com.microsoft:iscsi-quorum-target」目標後按下「連線」鍵,再彈出連線到目標視窗中請勾選「啟用多重路徑」項目後按下「進階」鍵。再開啟的進階設定視窗中,在連線方式區塊內有三個下拉式選單項目請依序選擇為「Microsoft iSCSI Initiator、192.168.75.31、192.168.75.20 / 3260」,後按下「確定」鍵完成設定。

圖 18、設定 iSCSI 目標的第一組 MPIO 連線

請切換到「探索」頁籤點選「探索入口」鍵,填入 iSCSI Target 用於建立 MPIO 第二個連線的 IP 位址「192.168.76.20」後按下「確定」鍵。請切換至「目標」頁籤點選「iqn.1991-05.com.microsoft:iscsi-quorum-target」目標按下「內容」鍵,後按下「新增工作階段」鍵並勾選「啟用多重路徑」項目後按下「進階」鍵以設定第二組 MPIO 連線。在連線方式區塊內有三個下拉式選單項目請依序選擇為「Microsoft iSCSI Initiator、192.168.76.31、192.168.76.20 / 3260」,後按下「確定」鍵完成設定。

圖 19、設定 iSCSI 目標的第二組 MPIO 連線

若有多個 iSCSI 目標則依照上述設定方式,分別設定第一、二組的 MPIO 連線即可,接著我們來查看多重路徑 MPIO 所採用的負載平衡原則為何,請切換到「目標」頁籤後按下「裝置」鍵,在彈出的裝置視窗中按下「MPIO」鍵便可以查看或調整負載平衡原則,預設為採用「循環配置資源(Round  Robin)」方式也就是會嘗試平均分配所有傳入要求。

圖 20、查看或調整使用的 MPIO 負載平衡原則





8、測試 MPIO 負載平衡及容錯切換功能

將 iSCSI Initiator 主機 MPIO 機制設定完成,並且順利掛載 iSCSI Target 儲存資源之後,接著我們來著手測試 MPIO 負載平衡及容錯切換功能。我們可以將 VM 虛擬主機儲存於 iSCSI Target 儲存資源當中,並且為 VM 虛擬主機安裝作業系統即可驗證 MPIO 功能機制。

當 VM 虛擬主機安裝作業系統時,您可以切換到 iSCSI Target 及 iSCSI Initiator 主機分別開啟工作管理員,切換到「效能」頁籤您可以看到二片 MPIO 網卡的流量正同時衝高當中,表示 MPIO 機制當中的「負載平衡」功能正在運作當中。

圖 21、iSCSI Target 主機二片 MPIO 網路流量衝高當中

圖 22、iSCSI Initiator 主機二片 MPIO 網路流量衝高當中

當 VM 虛擬主機持續進行安裝程序中,我們來測試若是將 iSCSI Initiator 主機其中一片 MPIO 網卡停用(模擬網路卡損壞或網路斷線)時,是否真的如我們所規劃一樣 MPIO 網卡平時負載平衡,發生災難時也具備「容錯切換」功能。請在 iSCSI Initiator 主機開啟網路連線,接著點選「MPIO-1」網路卡後選擇「停用」。

當我們將 iSCSI Initiator 主機 MPIO-1 網路卡停用後,在工作管理員當中 MPIO-1 網路卡已經「消失」而您可以看到仍有一片 MPIO 網卡(MPIO-2)有流量,而相對應的 iSCSI Target 主機 MPIO-1 網路便不會有流量,MPIO 容錯切換功能順利達成。

圖 23、iSCSI Initiator 主機網路卡損壞一片仍能正常運作





9、結語

經過本文實作演練之後相信讀者已經了解到,在 MPIO 多重路徑機制的幫助之下即便是 1 Gbps 的網路運作環境,只要 iSCSI 儲存設備端與 iSCSI Initiator 端主機配置多片網路卡時,不但平時可以達成流量負載平衡以分散流量,當災難事件發生時也具備容錯切換機制。若採用的是 10 Gbps 的網路環境時甚至能架構出不輸光纖通道(FC-SAN)的流量傳輸環境。

此外需要注意的是因為 Windows Server 2012 已經內建 NIC Teaming 機制,因此有些使用者可能會不小心使用 NIC Teaming 機制來連結 iSCSI Target 儲存資源,造成儲存於 iSCSI Target 上的 VM 虛擬主機運作不順。因為 NIC Teaming 機制為設計使用於「File Level」類型的儲存設備存取之用(如 NAS / NFS),因此拿來存取 Block Level 的 iSCSI Target 時便會發生問題或異常現象。