故障域是 NSX Edge 集群中 NSX Edge 节点的逻辑分组。故障域遵循自动放置算法,可在发生影响多个 NSX Edge 节点的故障时保证服务可用性。

在故障域中,Tier-1 SR 的活动和备用实例或子集群成员始终在不同的故障域中运行。如果没有故障域,可能会将 Tier-1 SR 自动放置在位于同一机架中的 NSX Edge 节点上。因此,如果 Rack1 发生故障,此 Tier-1 SR 的活动和备用实例也会失败。

未配置故障域:

图 1.

- 在包含四个 Edge 节点(EdgeNode1、EdgeNode2、EdgeNode3、EdgeNode4)的 Edge 集群中,任何处于 A/S 模式的新 Tier-1 网关都将自动放置在这四个 Edge 节点的任何两个节点中。

- 但是,如果 Tier-1 A/S 部署在 Rack1 中,而 Tier-2 A/S 部署在 Rack2 中,则无法实现高可用性。如果 Rack1 发生故障,EdgeNode1 和 EdgeNode2 上的 Tier-1 A/S 将丢失,因为它们位于同一故障域中。

配置了故障域:

图 2.

- EdgeNode1 和 EdgeNode2 配置为故障域 1 的一部分,而 EdgeNode3 和 EdgeNode4 位于故障域 2 中。创建新的 Tier-1 SR 时,如果该 Tier-1 的活动实例托管在 EdgeNode1 上,则将在故障域 2(EdgeNode3 或 EdgeNode4)中实例化备用 Tier-1 SR。

- 在 Edge 集群上配置故障域后,任何新 Tier-1 活动/备用 SR 将正确放置在不同的故障域中。

过程

  1. 使用 API 为将添加到有状态 A-A 集群的每个 Edge 节点创建故障域,例如,FailureDomain1 中包含 FD1-EdgeNode1 和 FD1-EdgeNode2 中,FailureDomain2 中包含 FD2-EdgeNode3 和 FD2-EdgeNode4。对于两个故障域中的 Edge 节点,将参数 preferred_active_edge_services 设置为 true。仅当在主动故障切换模式下创建 Tier-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 模式下配置 Tier-0 网关。