失敗網域是在 NSX Edge 叢集內對 NSX Edge 節點進行的邏輯分組。失敗網域遵循自動放置演算法,確保在影響多個 NSX Edge 節點的失敗情況下服務的可用性。

在失敗網域中,第 1 層 SR 的作用中和待命執行個體或子叢集成員始終在不同的失敗網域中執行。如果沒有失敗網域,可能會將第 1 層 SR 自動放置在位於同一機架中的 NSX Edge 節點上。因此,如果機架 1 發生故障,此第 1 層 SR 的作用中和待命執行個體也會失敗。

未設定失敗網域:

圖 1.

- 在包含四個 Edge 節點 (EdgeNode1、EdgeNode2、EdgeNode3、EdgeNode4) 的 Edge 叢集中,任何處於 A/S 模式的新第 1 層閘道都會自動放置在這四個 Edge 節點的任何兩個節點中。

- 但是,如果將第 1 層 A/S 部署在機架 1 中,而第 2 層 A/S 部署在機架 2 中,則無法實現高可用性。如果機架 1 發生故障,由於它們處於同一個失敗網域,EdgeNode1 和 EdgeNode2 上的第 1 層 A/S 都將遺失。

設定了失敗網域:

圖 2.

- EdgeNode1 和 EdgeNode2 設定為失敗網域 1 的一部分,而 EdgeNode3 和 EdgeNode4 則屬於失敗網域 2。當建立新的第 1 層 SR 且該第 1 層的作用中執行個體託管在 EdgeNode1 上時,則將在失敗網域 2 (EdgeNode3 或 EdgeNode4) 中具現化待命第 1 層 SR。

- 在 Edge 叢集上設定失敗網域後,任何新的第 1 層作用中/待命 SR 將正確放置在不同的失敗網域中。

程序

  1. 使用 API,為每個將新增至可設定狀態 A-A 叢集的 Edge 節點建立失敗網域,例如,在 FailureDomain1 中包括 FD1-EdgeNode1 和 FD1-EdgeNode2,而在 FailureDomain2 中包括 FD2-EdgeNode3 和 FD2-EdgeNode4。將兩個失敗網域中 Edge 節點的參數 preferred_active_edge_services 設定為 true。在建立第 1 層閘道時,preferred_active_edge_services 參數僅在先佔式容錯移轉模式下才有用。
    POST /api/v1/failure-domains
    {
    "display_name": "FD1-EdgeNode1",
    "preferred_active_edge_services": "true"
    "display_name": "FD1-EdgeNode2",
    "preferred_active_edge_services": "true"
    }
    
    POST /api/v1/failure-domains
    {
    "display_name": "FD2-EdgeNode3",
    "preferred_active_edge_services": "true"
    "display_name": "FD2-EdgeNode4",
    "preferred_active_edge_services": "true"
    }
  2. 使用 API,將每個 Edge 節點與該站台的失敗網域建立關聯。先呼叫 GET /api/v1/transport-nodes/<transport-node-id> API 以取得有關 Edge 節點的資料。使用 GET API 的結果作為 PUT /api/v1/transport-nodes/<transport-node-id> API 的輸入,並適當地設定其他內容 failure_domain_id。例如,
    GET /api/v1/transport-nodes/<transport-node-id>
    Response:
    {
        "resource_type": "TransportNode",
        "description": "Updated NSX configured Test Transport Node",
        "id": "77816de2-39c3-436c-b891-54d31f580961",
        ...
    }
    PUT /api/v1/transport-nodes/<transport-node-id>
    {
        "resource_type": "TransportNode",
        "description": "Updated NSX configured Test Transport Node",
        "id": "77816de2-39c3-436c-b891-54d31f580961",
        ...
        "failure_domain_id": "<UUID>",
    }
    
  3. 使用 API 設定 Edge 叢集,以根據失敗網域配置節點。先呼叫 GET /api/v1/edge-clusters/<edge-cluster-id> API,以取得 Edge 叢集的相關資料。使用 GET API 的結果作為 PUT /api/v1/edge-clusters/<edge-cluster-id> API 的輸入,並適當地設定其他 allocation_rules 內容。例如,
    GET /api/v1/edge-clusters/<edge-cluster-id>
    Response:
    {
        "_revision": 0,
        "id": "bf8d4daf-93f6-4c23-af38-63f6d372e14e",
        "resource_type": "EdgeCluster",
        ...
    }
    PUT /api/v1/edge-clusters/<edge-cluster-id>
    {
        "_revision": 0,
        "id": "bf8d4daf-93f6-4c23-af38-63f6d372e14e",
        "resource_type": "EdgeCluster",
        ...
        "allocation_rules": [
            {
                "action": 
                    {
                     "enabled": true,
                     "action_type": "AllocationBasedOnFailureDomain"
                    }
            }
        ],
    }

結果

NSX Edge 節點參考到不同的失敗網域。現在,您可以使用這些節點來建立叢集,並在 A-A 可設定狀態的 HA 模式下,設定第 0 層閘道。