為避免與虛擬通道端點 (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)。

程序

  1. 建立 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 timeout4 秒。
    • auto_recovery_initial_wait:此內容用於控制應在多長時間後啟動自動復原。最短初始等待時間為 300 秒,而最長等待時間為 3600 秒。如果初始等待時間為 300 秒,則會在 300 秒後啟動自動復原。
    • auto_recovery_max_backoff:在 auto_recovery_initial_wait 後嘗試初始復原。如果此復原失敗,則會在將之前的延遲時間增加一倍,然後進行額外的嘗試。當延遲達到 auto_recovery_max_backoff 時,延遲就會停止增加,並且每隔 auto_recovery_max_backoff 進行所有進一步的嘗試。
  2. 若要將 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 已停用。
  3. 若要取得在步驟 1 中建立的 TEP HA 設定檔識別碼,請執行下列 API:

    get https://<nsx-manager>/policy/api/v1/infra/host-switch-profiles/vtephaprofile1

    在 GET 回應中,您可以從 id 欄位中取得 TEP HA 設定檔的識別碼值。

  4. 若要驗證 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 設定檔時傳回的識別碼。

  5. 您也可以對故障 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 名稱。
  6. 如果 TEP 的 vmknic 出現故障,您可執行警示 API 以檢視與錯誤相關的詳細資料,或是在 NSX Manager 儀表板上檢視錯誤。

    如果 vmknic 出現故障,NSX 可能至少需要 60 秒才會發出警示。同樣地,在 TEP 從故障狀態重新啟動後,NSX 可能需要長達 60 秒才會反映新狀態。

    GET https://<nsx-manager>/api/v1/alarms?feature_name=tep_health
  7. 修正與 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 timeout4 秒。
如果故障 TEP 仍未重新啟動,則會將虛擬機器 vNIC 重新對應至主機上可用且狀況良好的 TEP。如果沒有狀況良好的 TEP,則會將虛擬機器 vNIC 對應至其原始 TEP。