88 期 - 實戰 ESXi 5 設置 MPIO 打造 IP-SAN 負載平衡容錯

網管人雜誌

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





文章目錄

1、前言
2、實作環境
3、實作網路架構圖
4、iSCSI 運作原理說明
5、ESXi 5.1 主機開啟 SSH 通訊協定
6、建立 MPIO 專用 VMkernel Port
          GUI 圖形介面設定
          CLI 指令介面設定
7、啟用 ESXi 主機 iSCSI Initiator 功能
          GUI 圖形介面設定
          CLI 指令介面設定
8、啟用 vmknic-Based Multipathing 機制
          GUI 圖形介面設定
          CLI 指令介面設定
9、連結 iSCSI Target 儲存設備
          GUI 圖形介面設定
          CLI 指令介面設定
10、掛載 iSCSI Target 儲存資源
11、測試 MPIO 負載平衡及容錯移轉機制
          測試 Fixed 容錯移轉機制
          測試 Round Robin 負載平衡機制
12、結語





1、前言

目前企業運作環境當中對於共用儲存設備的存取方式約略可以區分為三種  直接連接儲存(Direct Attached Storage,DAS)、網路連接儲存(Network Attached Storage,NAS)、儲存區域網路(Storage Area Network,SAN),其中儲存區域網路 SAN 又因為所使用的傳輸媒體介質不同,因此又可以區分為使用光纖作為傳輸媒介的(Fiber Channel SAN,FC-SAN)以及使用一般乙太網路的(iSCSI SAN,IP-SAN)。

圖 1、DAS、NAS、SAN 技術混合解決方案

網際網路工程任務小組(Internet Engineering Task Force,IETF),於 2003 年 2 月正式通過由 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 技術迅速竄紅的原因之一。

本次實作內容中將設定 VMware vSphere ESXi 5.1 擔任 iSCSI Initiator 角色,透過設定 MPIO(MultiPath Input / Output)機制使多片實體網路卡能同時連接 iSCSI Target 儲存設備,達成平時將傳輸流量「負載平衡」到多片網路卡之間,當發生災難時如 網路卡損壞、網路交換器損壞時具備「容錯移轉」之目的。

圖 2、iSCSI 網路架構示意圖





2、實作環境






3、實作網路架構圖

下圖為此次實作環境的網路架構示意圖。

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

4、iSCSI 運作原理說明

iSCSI 技術可以區分為 iSCSI 目標端 (iSCSI Target) 及 iSCSI發起端 (iSCSI Initiator),其中iSCSI Target 可以區分為 硬體式/軟體式 二種技術來建置完成:

  • 硬體式 iSCSI Target: 儲存設備中內部的硬體控制器通常內含有可以同時處理 TCP/IP 封包進行 I/O 加速的 TCP 卸載引擎 (TCP Offload Engine,TOE) 以及專門用於處理 iSCSI PDU 封包晶片的磁碟陣列控制器所組合而成,因此在不管是一般網路的 TCP/IP 封包或是傳送資料的 iSCSI 封包其處理效能上非常優異但是相對來說其設備費用較為昂貴。
  • 軟體式 iSCSI Target: 通常為站在成本因素考量上使用一般的伺服器配合作業系統及相關軟體套件來建置稱之,利用軟體式接收及處理 iSCSI Initiator 所傳輸過來的 iSCSI 指令集以取代費用高昂的 IP-SAN 儲存設備,因此在 TCP/IP 封包及 iSCSI 封包處理效能上與專用的儲存設備相比之下較為普通。


iSCSI Initiator 也可以區分為 硬體式/半硬體式/軟體式 等三種技術:

  • 硬體式 iSCSI Initiator: 在主機上安裝一片 iSCSI 主機匯流排介面卡 (iSCSI Host Bus Adapter, iSCSI HBA),此 iSCSI HBA 介面卡上含有一般 TCP/IP 網路控制晶片並加上專門處理 iSCSI PDU 指令集封包晶片,因此安裝此片介面卡的主機在運作時因為在介面卡部份它就可以直接處理 TCP/IP 封包及 iSCSI PDU 指令集,所以配備此介面卡能夠有效減輕主機端的運算效能但是在價格上與 FC HBA 相去不遠為其缺點也是至今無法普及的原因。
  • 半硬體式 iSCSI Initiator: 與一般網路卡最主要不同的地方在於其擁有 TCP 卸載引擎晶片 (TCP Offload Engine,TOE),因此此介面卡可以直接處理 TCP/IP 封包而主機端只要專心處理 iSCSI PDU 指令集封包即可,對於主機端的運算效能可以在某些程度上有所減輕其介面卡的價格約為一般網路卡的 3 ~ 5 倍。
  • 軟體式 iSCSI Initiator: 透過軟體模擬方式將現有主機及一般網路卡進行模擬,此方式最大的優點在於費用便宜並且使用原有的網路介面卡,但是由於使用軟體模擬的方式因此所有的 TCP/IP 封包及 iSCSI PDU 指令集的運算任務都將落在主機端上來負責封包的運算及處理,因此在主機端效能表現上是三種技術中最差的。


下列圖表為將 iSCSI Initiator 的連接程序從最底層的實體介面、乙太網路、介面卡驅動程式、TCP/IP 協定、iSCSI Layer、SCSI Layer 至最上層的作業系統進行三種技術的比較,透過下列比較及圖表相信讀者對於採用何種介面卡及技術時對於主機端效能的影響將更有概念。

  • 網路介面卡費用 (高至低): 硬體式 iSCSI HBA  >  半硬體式 TOE  >  軟體式
  • 消耗主機效能 (高至低): 軟體式  >  半硬體式 TOE  >  硬體式 iSCSI HBA

圖 4、不同的 iSCSI Initiator 所佔用主機端運算效能影響比較表





5、ESXi 5.1 主機開啟 SSH 通訊協定

在此次的 MPIO 設定實作中,我們會分別說明如何在 GUI 圖形介面以及 CLI 指令介面中進行設定,您可以使用 VMware vSphere Client 登入 ESXi 5.1 主機後依序點選「Configuration > Security Profile > Properties > SSH > Options > Start」,便可以啟動 SSH 通訊協定讓 SSH Client 端連上 ESXi 5.1 主機。

圖 5、VMware vSphere Client 啟動 ESXi 主機 SSH 通訊協定

或者在 ESXi 5.1 主機的 Console 畫面依序操作「F2 > 輸入 ESXi Host 管理帳號及密碼 > Troubleshooting Options > Enable SSH」即可,詳細資訊您可以參考 VMware KB-1017910





6、建立 MPIO 專用 VMkernel Port

GUI 圖形介面設定

在下列 MPIO 設定中首先我們會先建立一台虛擬交換器(Virtual Switch),名稱採用預設的「vSwitch1」,而安裝於 VMware vSphere ESXi 5.1 上的實體網路卡為「vmnic1、vmnic2」,並且建立二個 VMkernel Port 分別為「MPIO-1、MPIO-2」進行對應。其中設定 VMkernel Port 的重點在於對應的二片實體網路卡中必須設為「Active 及 Unused」Adapters 才行,並且給予固定 IP 位址「172.20.75.11、172.20.75.12」,整體設定結構如下:
vSwitch1(Virtual Standard Switch)
MPIO-1(VMkernel Port): vmnic1(Active Adapters)、vmnic2(Unused Adapters)
IP Address(vmk1): 172.20.75.11 / 255.255.255.0
MPIO-2(VMkernel Port): vmnic2(Active Adapters)、vmnic1(Unused Adapters)
IP Address(vmk2): 172.20.75.12 / 255.255.255.0


請使用 VMware vSphere Client 連接至 ESXi 5.1 主機後依序點選「Configuration > Networking > Add Networking > VMkernel」,建立 vSphere standard switch 並且勾選該虛擬交換器採用的實體網路卡為「vmnic1、vmnic2」,接著填入第一個 Port Group 名稱為「MPIO-1」並且給予固定 IP 位址「172.20.75.11 / 255.255.255.0」後建立完成。

圖 6、建立 vSwitch1 及第一個 VMkernel Port MPIO-1

接著再次按下Add Networking 並選擇剛才建立的 vSphere standard switch「vSwitch1」,接著填入第二個 Port Group 名稱為「MPIO-2」並且給予固定 IP 位址「172.20.75.12 / 255.255.255.0」後建立完成。

圖 7、在 vSwitch1 中建立第二個 VMkernel Port MPIO-2

然後設定在 Port Group MPIO-1 當中 vmnic1 為 Active Adapters、vmnic2 為 Unused Adapters,而 Port Group MPIO-2 當中 vmnic2 為 Active Adapters、vmnic1 為 Unused Adapters。

請於剛才建立的 vSwitch1 中按下「Properties」進行修改,在彈出視窗中請先點選「MPIO-1」後按下 Edit 鍵進行修改,請先勾選「Override switch failover order」項目接著點選「vmnic2」網卡後,利用 Move Down 鍵將其移動至 Unused Adapters 後按下 OK 鍵即可完成設定。

圖 8、設定 MPIO-1 中 vmnic1 為 Active 而 vmnic2 為 Unused

同樣的請點選「MPIO-2」後按下 Edit 鍵進行修改,請先勾選「Override switch failover order」項目接著點選「vmnic1」網卡後,利用 Move Down 鍵將其移動至 Unused Adapters 後按下 OK 鍵即可完成設定。

圖 9、設定 MPIO-2 中 vmnic2 為 Active 而 vmnic1 為 Unused

CLI 指令介面設定

          上述 GUI 圖形化介面建立 VMkernel Port、IP 位址、指派 Active/Unused Adapters的設定,其實您可以使用 SSH Client 登入 ESXi 5.1 主機後,透過如下指令達到同樣的設定效果:
# esxcfg-vswitch -a vSwitch1
# esxcfg-vswitch -L vmnic1 vSwitch1
# esxcfg-vswitch -A MPIO-1 vSwitch1
# esxcfg-vswitch -L vmnic2 vSwitch1
# esxcfg-vswitch -A MPIO-2 vSwitch1
# esxcfg-vswitch -N vmnic2 -p MPIO-1 vSwitch1
# esxcfg-vswitch -N vmnic1 -p MPIO-2 vSwitch1
# esxcfg-vmknic -a -i 172.20.75.11 -n 255.255.255.0 MPIO-1
# esxcfg-vmknic -a -i 172.20.75.12 -n 255.255.255.0 MPIO-2





7、啟用 ESXi 主機 iSCSI Initiator 功能

GUI 圖形介面設定

此次實作環境當中 ESXi 主機所安裝的實體網路卡為一般網路卡,所以我們採用啟動「iSCSI Software Adapter」的方式來建立 iSCSI Initiator。請於 VMware vSphere Client 操作畫面中依序點選「Configuration > Storage Adapters > Add > Add Software iSCSI Adapter > OK」即可。

順利產生 iSCSI Software Adapter(vmhba33)後,您可以按下「Properties」確認 Software Initiator Properties Status 狀態欄位為「Enabled」即可。

圖 10、新增並啟動 ESXi 主機 iSCSI Initiator 功能

CLI 指令介面設定

          您可以使用 SSH Client 登入 ESXi 5.1 主機後,透過如下指令來啟動 iSCSI Initiator 功能,並且在啟動完畢之後執行掃描得知 iSCSI Software Adapter 為 vmhba33:
# esxcfg-swiscsi -e   //啟動 iSCSI Initiator 功能
   Enabling software iSCSI...
# esxcfg-swiscsi -s   //掃描 Software iSCSI Adapter
   Scanning vmhba33...





8、啟用 vmknic-Based Multipathing 機制

GUI 圖形介面設定

將一開始新增的 VMkernel Port 與剛才啟用的 iSCSI Initiator 進行「Port Binding」的動作,同樣的我們會說明 GUI 圖形介面及 CLI 指令介面的設定方式,但您若是使用舊版的 VMware vSphere ESXi(4.0 或 4.1)那麼便只能使用CLI 指令介面的設定方式。

請於 VMware vSphere Client 操作畫面中依序點選「Configuration > Storage Adapters > vmhba33 > Properties」項目,接著切換到 Network Configuration 頁籤中按下 Add 鍵,將先前建立的「MPIO-1、MPIO-2」加入到 VMkernel Port Bindings 清單當中。

圖 11、將 MPIO-1、MPIO-2 加入到 VMkernel Port Bindings 清單中

CLI 指令介面設定

您可以使用 SSH Client 登入 ESXi 5.1 主機後,透過如下指令設定 VMkernel Port Bindings:
# esxcli iscsi networkportal add --nic vmk1 --adapter vmhba33
# esxcli iscsi networkportal add --nic vmk2 --adapter vmhba33
# esxcfg-vmknic -l vmhba33
Interface  Port Group/DVPort   IP Family IP Address     Netmask         Broadcast       MAC Address       MTU     TSO MSS   Enabled Type
vmk1       MPIO-1              IPv4      172.20.75.11   255.255.255.0   172.20.75.255   00:50:56:67:13:a2 1500    65535     true    STATIC
vmk2       MPIO-2              IPv4      172.20.75.12   255.255.255.0   172.20.75.255   00:50:56:6d:07:c3 1500    65535     true    STATIC
# esxcli iscsi networkportal list --adapter vmhba33
vmhba33
   Adapter: vmhba33
   Vmknic: vmk1
   MAC Address: 00:0c:29:59:a9:5c
   MAC Address Valid: true
   IPv4: 172.20.75.11
   IPv4 Subnet Mask: 255.255.255.0
   IPv6:
   MTU: 1500
   Vlan Supported: true
   Vlan ID: 0





9、連結 iSCSI Target 儲存設備

GUI 圖形介面設定

完成 MPIO 機制設定後便可以設定連結 iSCSI Target 儲存設備(請先於 iSCSI 儲存設備端確認 ESXi 主機的 iSCSI Initiator 名稱在允許存取清單中),請於 VMware vSphere Client 操作畫面中依序點選「Configuration > Storage Adapters > vmhba33 > Properties」項目,接著切換到 Dynamic Discovery 頁籤中按下 Add 鍵,分別將 iSCSI Target 儲存設備 IP 位址「172.20.75.101、172.20.75.102」加入到 Send Targets 清單當中。

圖 12、新增 iSCSI Target 儲存設備 IP 位址

當您完成設定按下 Close 鍵時,系統將會彈出 Rescan 重新掃描的提示視窗,請按下「是」鍵進行重新掃描作業,完成後在 vmhba33 的 Details 區塊中您便會看到存取到 iSCSI Target 所分享的儲存空間(此實作為 100 GB)。

圖 13、順利存取 iSCSI Target 所分享的儲存空間

CLI 指令介面設定

您可以使用 SSH Client 登入 ESXi 5.1 主機後,透過如下指令連結 iSCSI Target 儲存設備:
# esxcli iscsi adapter discovery sendtarget add -a 172.20.75.101:3260 -A vmhba33
# esxcli iscsi adapter discovery sendtarget add -a 172.20.75.102:3260 -A vmhba33
# esxcli iscsi session list --adapter vmhba33
 vmhba33,iqn.1991-05.com.microsoft:iscsi-target,00023d000001
   Adapter: vmhba33
   Target: iqn.1991-05.com.microsoft:iscsi-target
   ISID: 00023d000001
   TargetPortalGroupTag: 1
   AuthenticationMethod: none
   DataPduInOrder: true
   DataSequenceInOrder: true
   DefaultTime2Retain: 0
 ...略...





10、掛載 iSCSI Target 儲存資源

順利連結 iSCSI Target 儲存資源後,請於 VMware vSphere Client 操作畫面中依序點選「Configuration > Storage > Add Storage」,接著跟著精靈指示選擇「Disk/LUN > LUN0 > VMFS-5 > 輸入 Datastore 名稱」即可完成 iSCSI 儲存資源的掛載動作。

圖 14、ESXi 主機掛載 iSCSI 儲存資源





11、測試 MPIO 負載平衡及容錯移轉機制

VMware vSphere ESXi 主機支援三種 MPIO 路徑方式分別是 Fixed、MRU(Most Recently Used)、Round Robin,這三種路徑各有不同的負載平衡及容錯移轉運作機制:
  • Fixed: 具備「容錯移轉」機制,平常只走 Preferred 所指定的路徑當主要路徑故障時才切換到備用路徑,但是當主要路徑恢復時 自動切換回來(FailBack),適用於 Active-Active Storage。
  • MRU(Most Recently Used): 具備「容錯移轉」機制,使用最近走過的 Preferred 指定路徑,當主要路徑故障時才切換到備用路徑,而當主要路徑恢復時 不會 切換回來(Non-FailBack),適用於 Active-Standby Storage。
  • Round Robin: 具備「負載平衡及容錯移轉」機制,使用輪詢機制將流量自動平均分配進行負載平衡,當其中一路徑故障時也不會影響到其它路徑的傳輸,您會看到所有的可用路徑狀態皆為 Active(I/O)。

測試 Fixed 容錯移轉機制

當 MPIO 機制設定完畢之後預設會採用的路徑機制為「Fixed」,我們可以做個簡單的測試首先建立一台 VM 虛擬主機,該 VM 虛擬主機儲存於剛才掛載的 iSCSI Target 儲存資源當中,接著開始安裝作業系統。

此時您可以使用 SSH Client 連上 ESXi 主機後依序鍵入指令「esxtop > s > 2 > n」,來查看網路卡流量資訊(每2秒更新數據),您可以看到目前二個網路卡中只有 vmnic2(vmk2) 有流量。

圖 15、目前二個網路卡中只有 vmnic2(vmk2) 有流量

然後您可以將接於 vmnic2 的網路線拔除,或者透過 VMware vSphere Client 操作介面進入到 vSwitch1 當中將 vmnic2 網路卡移除以便模擬該網路卡無預警損壞。接著您便可以回到 SSH Client 視窗查看 vmnic1 發現已經自動進行容錯移轉機制接手原有的傳輸流量(vmnic2 網路卡消失)。

圖 16、vmnic1 自動進行容錯移轉機制接手流量

測試 Round Robin 負載平衡機制

將接於 vmnic2 網路卡上的網路線接回後,由於 MPIO 機制預設採用的路徑機制為「Fixed」,請於 VMware vSphere Client 操作介面中依序點選「Configuration > Storage Adapters > vmhba33 > Devices > Manage Paths」,在 Path Selection 下拉式選單中選擇「Round Robin」項目後按下 Change 鍵,即可將 MPIO 路徑機制改為 Round Robin 您會看到每條路徑的狀態列都變更為「Active (I/O)」。

圖 17、變更 MPIO 路徑機制為 Round Robin

接著同樣的測試方式您可以看到,傳輸的流量自動平均分配到 vmnic1、vmnic2 當中達成流量負載平衡機制,當然若有任何一條路徑發生災難斷線時也不會影響到其它條路徑的流量傳輸。

圖 18、MPIO 路徑機制 Round Robin 流量自動平均分配





12、結語

iSCSI 儲存設備因為具備「資料區塊等級(Block Level)」並且可以使用乙太網路進行流量傳輸(IP-SAN),因此所建置出來的運作環境與光纖通道(FC-SAN)相比之下不但低廉許多卻又不失高效穩定的特性。

同時透過 MPIO 多重路徑機制的幫助下即便是 1 Gbps 的網路運作環境,只要 iSCSI 儲存設備端與 iSCSI Initiator 端主機配置具備多個網路卡 Port 時,不但平時可以達成流量負載平衡當災難發生時也具備容錯移轉機制。更甚者若採用的是 10 Gbps 的網路環境時還能搭建出不輸光纖通道的流量傳輸環境。

值得一提的是一般使用者常常因為 VMware vSphere ESXi 具備 NIC Teaming 機制,而會不經意的使用 NIC Teaming 機制來連結 iSCSI Target 儲存資源,造成儲存於 iSCSI Target 上的 VM 虛擬主機運作不順。因為 NIC Teaming 機制設計為運用於「File Level」類型的儲存設備存取之用(如 NAS / NFS),因此拿來存取 Block Level 的 iSCSI Target 時當然就會發生問題或異常現象。

因此讀者只要參考本篇實作為 VMware vSphere ESXi 主機設定 MPIO 多重路徑機制,便可以針對像 iSCSI Target 這種 Block Level 設計的儲存設備達到流量最佳化,並且具備負載平衡及容錯移轉的傳輸高可用性機制。