為避免與虛擬通道端點 (TEP) 關聯的工作負載 (虛擬機器或容器) 發生連線中斷,請設定 TEP HA 主機交換器設定檔,並將其套用至叢集傳輸節點或個別傳輸節點。
由於跨 L2 或 L3 網路的覆疊網路使用封裝通訊協定,工作負載 (虛擬機器或容器) 的傳出或傳入封包將會封裝在虛擬通道端點 (TEP) 的外部封包中。如果 TEP 進入故障狀態,則與其關聯的虛擬機器將無法連線。虛擬機器與 TEP 之間存在一對一對應。
若發生以下任一情況,TEP 將出現故障:
- 由於底層網狀架構中的問題,TEP 的所有 BFD 工作階段均已關閉。
- TEP 沒有 IP 位址。
狀況良好的 TEP 具有以下特性:
- 具有 IP 位址。
- 至少有一個涉及 TEP 的 BFD 工作階段處於啟動狀態。
當 NSX 發現某個 TEP 已關閉時,虛擬機器的 vNIC 將從故障 TEP 移轉至相同 ESXi 主機上狀況良好的 TEP。如果 ESXi 具有兩個 TEP,而這兩個 TEP 均出現故障,則無法移轉虛擬機器 vNIC。
每個虛擬機器都可以有多個 vNIC。每個 vNIC 都與單一 TEP 相關聯。來自 vNIC 的封包將先封裝,然後再通過上行發出。可以有多個 vNIC 對應至單一 TEP。將根據上行整併原則確定對應。
備註: TEP HA 僅支援 IPv4 TEP。
必要條件
在單一 ESXi 主機上至少設定兩個 TEP。請確定用來建立傳輸節點設定檔 (TNP) 或個別傳輸節點組態的上行設定檔至少使用兩個作用中上行 (TEP)。
程序
- 建立 TEP HA 主機交換器設定檔。
PUT https://<nsx-policy-manager>/policy/api/v1/infra/host-switch-profiles/vtephaprofile1
{
"enabled": "true",
"failover_timeout":"5",
"auto_recovery" : "true",
"auto_recovery_initial_wait" : "300",
"auto_recovery_max_backoff" : "86400",
"resource_type": "PolicyVtepHAHostSwitchProfile",
"display_name": "VtepHAProfile1"
}
其中,
- enabled:指示是否已啟用 TEP HA。[true] 值表示 TEP HA 已啟用,[false] 則表示已停用。
- failover_timeout:TEP 高可用性容錯移轉逾時 (以秒為單位)。此內容用於控制一旦在 vmknic 上偵測到故障,應在多長時間後將虛擬機器 vNIC 移至狀況良好的備用 TEP。預設逾時為 5 秒。支援的最大值為 60 秒。
- auto_recovery:指定 TEP 高可用性功能的自發復原選項的狀態。如果將 auto_recovery 設定為 true,則會在每次循環序列後在內部檢查發生故障的 vmknic。如果故障 vmknic 復原,虛擬機器將移回其初始 TEP 對應,前提是已將虛擬機器 vNIC 對應至該 TEP。依預設,auto_recovery 設定為 true。在自動復原期間,如果 TEP 仍處於故障狀態,虛擬機器將面臨中斷問題。中斷時間使用以下公式計算:
failover_timeout + bfd timeout + 1
。預設 bfd timeout
為 4 秒。
- auto_recovery_initial_wait:此內容用於控制應在多長時間後啟動自動復原。最短初始等待時間為 300 秒,而最長等待時間為 3600 秒。如果初始等待時間為 300 秒,則會在 300 秒後啟動自動復原。
- auto_recovery_max_backoff:在 auto_recovery_initial_wait 後嘗試初始復原。如果此復原失敗,則會在將之前的延遲時間增加一倍,然後進行額外的嘗試。當延遲達到 auto_recovery_max_backoff 時,延遲就會停止增加,並且每隔 auto_recovery_max_backoff 進行所有進一步的嘗試。
- 若要將 TEP HA 設定檔連結至所有 ESXi 主機,請建立一個 TNP 並在其 [主機交換器設定檔] 區段新增 TEP HA 設定檔中的金鑰和值內容,或者使用 TEP HA 設定檔中的金鑰和值內容準備個別的傳輸節點。
PUT https://<nsx-policy-manager>/policy/api/v1/infra/host-transport-node-profiles/<tnp-id>
在 <tnp-id>
參數中,輸入傳輸節點設定檔識別碼。
{
"host_switch_spec": {
"host_switches": [
{
"host_switch_name": "vtepha_vds",
"host_switch_id": "50 22 ee c4 f6 40 79 8b-0e a4 2b da 6a 4c 36 b3",
"host_switch_type": "VDS",
"host_switch_mode": "ENS_INTERRUPT",
"host_switch_profile_ids": [
{
"key": "UplinkHostSwitchProfile",
"value": "/infra/host-switch-profiles/b32e6ce6-f1ba-4e31-a2c4-33d550505cdd"
},
{
"key": "VtepHAHostSwitchProfile",
"value": "/infra/host-switch-profiles/vtephaprofile1"
}
],
"uplinks": [
{
"vds_uplink_name": "Uplink 1",
"uplink_name": "uplink-1"
},
{
"vds_uplink_name": "Uplink 2",
"uplink_name": "uplink-2"
}
],
"is_migrate_pnics": false,
"ip_assignment_spec": {
"ip_pool_id": "/infra/ip-pools/v4",
"resource_type": "StaticIpPoolSpec"
},
"cpu_config": [],
"transport_zone_endpoints": [
{
"transport_zone_id": "/infra/sites/default/enforcement-points/default/transport-zones/de47a6b9-fa4c-4bf3-bd75-385859895949",
"transport_zone_profile_ids": []
}
],
"not_ready": false
}
],
"resource_type": "StandardHostSwitchSpec"
},
"ignore_overridden_hosts": false,
"resource_type": "PolicyHostTransportNodeProfile"
}
備註: 如果您未使用 TEP HA 設定 TNP,NSX 會建立預設的 TEP HA 設定檔。此預設 TEP HA 設定檔會以預設值設定。TEP HA 已停用。
- 若要取得在步驟 1 中建立的 TEP HA 設定檔識別碼,請執行下列 API:
get https://<nsx-manager>/policy/api/v1/infra/host-switch-profiles/vtephaprofile1
在 GET 回應中,您可以從 id
欄位中取得 TEP HA 設定檔的識別碼值。
- 若要驗證 TEP HA 主機交換器設定檔是否已套用至傳輸節點,請執行下列 API。
GET https://<nsx-manager>/policy/api/v1/infra/host-transport-nodes-profiles/<tnp_id>
"host_switch_profile_ids": [
{
"key": "VtepHAHostSwitchProfile",
"value": "/infra/host-switch-profiles/<vtephaprofile1>"
}
],
<vtephaprofile1>
是您在步驟 1 中建立 TEP HA 設定檔時傳回的識別碼。
- 您也可以對故障 TEP 進行手動復原,並將關聯的虛擬機器移轉至狀況良好的 TEP,而無需等待自動復原開始進行。
POST https://<nsx-mgr>/policy/api/v1/infra/sites/<site-id>/enforcement-points/<enforcementpoint-id>/host-transport-nodes/<host-transport-node-id>/vteps/actions
{
"action_type": "TransportNodeVtepRecoveryRequest",
"device_name": "vmk10"
}
其中,vmk10 為 TEP 名稱。
- 如果 TEP 的 vmknic 出現故障,您可執行警示 API 以檢視與錯誤相關的詳細資料,或是在 NSX Manager 儀表板上檢視錯誤。
如果 vmknic 出現故障,NSX 可能至少需要 60 秒才會發出警示。同樣地,在 TEP 從故障狀態重新啟動後,NSX 可能需要長達 60 秒才會反映新狀態。
GET https://<nsx-manager>/api/v1/alarms?feature_name=tep_health
- 修正與 IP 或 BFD 相關的錯誤後,請驗證 state 參數以瞭解 vmknic 或 TEP 狀態。
GET https://<nsx-manager>/api/v1/transport-nodes/<node-id>/network/interfaces?source=realtime
{
"interfaceId": "vmk10",
"linkStatus": "UP",
"adminStatus": "UP",
"mtu": "1600",
"interfaceAlias": [{
"broadcastAddress": "133.117.22.255",
"ipAddress": {
"ipv4": 2239043120
},
"ipConfiguration": "STATIC",
"netmask": "255.255.255.0",
"macAddress": "00:50:56:66:67:a6"
}],
"state": "NORMAL"
},
結果
如果 BFD 已關閉,NSX 會使用自動復原或手動復原機制,確定故障 TEP 是否已重新啟動。
如果 IP 最初不可用但被重新指派給故障 TEP,NSX 將使用內建機制來確定 TEP 是否已重新啟動,而不會依賴於手動或自動復原機制。
如果故障 TEP 未重新啟動:
- 在自動復原或手動復原過程中,虛擬機器 vNIC 可能會發生網路暫時中斷的問題。
- 之所以會發生網路中斷,可能是因為在 BFD 檢查期間,虛擬機器 vNIC 仍對應至故障 TEP。
- 網路中斷時間是以下列公式計算而得:
failover_timeout + bfd timeout + 1
,即 10 秒。預設 bfd timeout
為 4 秒。
如果故障 TEP 仍未重新啟動,則會將虛擬機器 vNIC 重新對應至主機上可用且狀況良好的 TEP。如果沒有狀況良好的 TEP,則會將虛擬機器 vNIC 對應至其原始 TEP。