장애 도메인은 NSX Edge 클러스터 내에서 NSX Edge 노드의 논리적 그룹입니다. 장애 도메인은 자동 배치 알고리즘을 보완하고 여러 NSX Edge 노드에 영향을 미치는 장애가 있는 경우 서비스 가용성을 보장합니다.

장애 도메인에서 Tier-1 SR의 활성 및 대기 인스턴스 또는 하위 클러스터의 멤버는 항상 서로 다른 장애 도메인에서 실행됩니다. 장애 도메인이 없으면 Tier-1 SR을 동일한 랙에 있는 NSX Edge 노드에 자동으로 배치할 수 있습니다. 따라서 rack1이 실패하면 이 Tier-1 SR의 활성 및 대기 인스턴스도 모두 실패합니다.

장애 도메인을 구성하지 않은 경우:

그림 1.

- 4개의 Edge 노드(EdgeNode1, EdgeNode2, EdgeNode3, EdgeNode4)로 구성된 Edge 클러스터에서 A/S 모드의 모든 새 Tier-1 게이트웨이는 이러한 4개의 Edge 노드 중 2개에 자동으로 배치됩니다.

- 그러나 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에서 호스팅되면 대기 Tier-1 SR이 장애 도메인 2(EdgeNode3 또는 EdgeNode4)에서 인스턴스화됩니다.

- 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로 설정합니다. 이 preferred_active_edge_services는 Tier-1 게이트웨이가 선점 페일오버 모드로 생성된 경우에만 유용합니다.
    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 노드에 대한 데이터를 가져옵니다. 추가 속성인 failure_domain_id를 적절하게 설정하여 GET API의 결과를 PUT /api/v1/transport-nodes/<transport-node-id> API 입력으로 사용합니다. 예를 들면 다음과 같습니다.
    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 클러스터에 대한 데이터를 가져옵니다. 추가 속성인 allocation_rules를 적절하게 설정하여 GET API의 결과를 PUT /api/v1/edge-clusters/<edge-cluster-id> API 입력으로 사용합니다. 예를 들면 다음과 같습니다.
    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 게이트웨이를 구성할 수 있습니다.