NCP는 각 서비스 포트에 대해 계층 4 로드 밸런서 가상 서버와 풀을 생성합니다.

이 기능에 대한 세부 정보:
  • TCP와 UDP가 모두 지원됩니다.
  • 각 서비스에는 고유한 IP 주소가 할당됩니다.
  • 이 서비스에는 LoadBalancer 정의의 loadBalancerIP 필드를 기준으로 외부 IP 풀의 IP 주소가 할당됩니다. loadBalancerIP 필드는 비워 둘 수 있고 IP 풀의 IP 주소, 이름 또는 ID를 포함할 수 있습니다. loadBalancerIP 필드가 비어 있으면 ncp.ini[nsx_v3] 섹션에 있는 external_ip_pools_lb 옵션에서 지정한 외부 IP 풀에서 IP가 할당됩니다. external_ip_pools_lb 옵션이 없는 경우 external_ip_pools에서 지정한 풀이 사용됩니다. LoadBalancer 서비스는 이 IP 주소와 서비스 포트를 사용합니다.
  • 구성을 변경하고 NCP를 다시 시작하여 다른 IP 풀로 변경할 수 있습니다.
  • loadBalancerIP에서 지정한 IP 풀에는 태그 scope: ncp/owner, tag: cluster:<cluster_name>이 있어야 합니다.

  • 정책 모드에서는 선택기 없는 유형 LoadBalancer의 서비스가 지원됩니다. 이러한 서비스의 경우 NSX 로드 밸런서 SNAT IP는 LoadBalancer 유형 서비스의 IP가 됩니다. LoadBalancer 유형 서비스의 IP를 업데이트하면 NSX 로드 밸런서 SNAT IP가 업데이트됩니다. 선택기 없는 서비스를 선택기 없이 다른 서비스의 끝점으로 구성할 수 없습니다.
  • 정책 모드에서는 주석 ncp/transparent-lbtrue로 설정하여 로드 밸런서 풀에서 SNAT를 사용하지 않도록 설정할 수 있습니다. 이 기능은 단일 계층 토폴로지에서만 지원됩니다.
  • 기본적으로 NSX에는 로드 밸런서의 가상 서버, 서버 풀 및 풀 멤버 수에 대한 제한이 있습니다. [nsx_v3] relax_scale_validationtrue로 설정하여 이러한 제한을 우회할 수 있습니다.
  • 기본적으로 NCP는 모든 로드 밸런서의 풀 멤버 수에 대한 제한을 적용하지 않습니다. [nsx_v3] ncp_enforced_pool_member_limit 매개 변수를 사용하여 이 동작을 변경할 수 있습니다. 이 기능은 정책 모드에서만 지원되며 [nsx_v3] l4_lb_auto_scalingfalse로 설정해야 합니다. ncp_enforced_pool_member_limit의 경우 옵션은 다음과 같습니다.
    • DEACTIVATE - NCP는 풀 멤버 제한을 적용하지 않습니다.
    • ACTIVATE - NCP는 로드 밸런서가 CPU 또는 메모리를 너무 많이 사용하지 못하도록 풀 멤버 제한을 적용합니다. relax_scale_validationfalse로 설정되고 members_per_small_lbs 또는 members_per_medium_lbsNSX 확장 제한보다 높은 값으로 설정된 경우 NSX 확장이 적용되어 이 구성이 필요하지 않습니다.
  • 오류는 서비스에 주석으로 추가됩니다. 오류 키는 ncp/error.loadbalancer입니다. 다음과 같은 오류가 발생할 수 있습니다.
    • ncp/error.loadbalancer: IP_POOL_NOT_FOUND

      이 오류는 사용자가 loadBalancerIP: <nsx-ip-pool>을 지정했지만 <nsx-ip-pool>이 없음을 나타냅니다. 이 경우 서비스는 비활성 상태입니다. 이 오류를 해결하려면 올바른 IP 풀을 지정하고, 서비스를 삭제한 후 다시 생성하십시오.

    • ncp/error.loadbalancer: IP_POOL_EXHAUSTED

      이 오류는 사용자가 loadBalancerIP: <nsx-ip-pool>을 지정했지만 해당 IP 풀이 IP 주소를 모두 사용했음을 나타냅니다. 이 경우 서비스는 비활성 상태입니다. 이 오류를 해결하려면 사용 가능한 IP 주소가 있는 IP 풀을 지정하고, 서비스를 삭제한 후 다시 생성하십시오.

    • ncp/error.loadbalancer: IP_POOL_NOT_UNIQUE

      이 오류는 여러 IP 풀에 loadBalancerIP: <nsx-ip-pool>에서 지정한 이름이 있음을 나타냅니다. 이 경우 서비스는 비활성 상태입니다.

    • ncp/error.loadbalancer: POOL_ACCESS_DENIED

      이 오류는 loadBalancerIP에서 지정한 IP 풀에 태그 scope: ncp/owner, tag: cluster:<cluster_name>가 없거나 태그에 지정된 클러스터가 Kubernetes 클러스터의 이름과 일치하지 않음을 나타냅니다.

    • ncp/error.loadbalancer: LB_VIP_CONFLICT

      이 오류는 loadBalancerIP 필드의 IP가 활성 서비스의 IP와 동일함을 나타냅니다. 이 경우 서비스는 비활성 상태입니다.

  • 계층 4 로드 밸런서는 자동 크기 조정을 지원합니다. Kubernetes LoadBalancer 서비스가 생성 또는 수정되어 추가 가상 서버가 필요하고 기존의 계층 4 로드 밸런서에 용량이 충분하지 않으면 새로운 계층 4 로드 밸런서가 생성됩니다. 또한 NCP는 더 이상 가상 서버가 연결되지 않은 계층 4 로드 밸런서를 삭제합니다. 이 기능은 기본적으로 사용하도록 설정되어 있습니다. 이 기능을 사용하지 않도록 설정하려면 NCP ConfigMap에서 l4_lb_auto_scalingfalse로 설정해야 합니다.
  • LoadBalancer 유형의 서비스를 생성할 때 매개 변수 loadBalancerSourceRanges를 지정할 수 있습니다. 이 기능은 정책 모드에서만 지원됩니다. 예:
    kind: Service
    metadata:
      name: nginx-service-lb
      labels:
        app: nginx
    spec:
      type: LoadBalancer
      loadBalancerSourceRanges:
        - "10.30.88.116/24"
      ports:
        - port: 80
          targetPort: 80
          protocol: TCP
          name: tcp
    ...

    생성된 NSX 로드 밸런서는 지정된 소스 IP 주소의 트래픽만 허용합니다. 가상 서버의 액세스 목록 제어를 확인하여 NSX Manager에서 이 사항을 확인할 수 있습니다. 특정 그룹에 대한 액세스를 허용합니다. 이 그룹에는 loadBalancerSourceRanges에 지정된 IP 주소가 포함됩니다. 인벤토리 > 그룹으로 이동하여 이 그룹을 확인할 수 있습니다.