이 페이지에서는 내부 패스 스루 네트워크 부하 분산기 또는 내부 애플리케이션 부하 분산기(미리보기)가 서비스 디렉터리에 자동으로 등록되도록 구성하는 방법을 설명합니다.
부하 분산기를 만들 때 원하는 기존 서비스 디렉터리 네임스페이스 및 서비스에 엔드포인트로 등록할 수 있습니다. 그런 다음 클라이언트 애플리케이션은 서비스 디렉터리 (HTTP 또는 gRPC 사용) 또는 DNS (서비스 디렉터리 DNS 영역을 만든 경우)를 사용하여 내부 부하 분산기 서비스의 주소를 확인하고 직접 연결할 수 있습니다.
제한사항
서비스 디렉터리와 내부 부하 분산의 통합에는 다음과 같은 제한사항이 있습니다.
- 자동 등록은 내부 및 네트워크 부하 분산기에만 적용됩니다. GKE 통합을 사용하여 Google Kubernetes Engine 부하 분산 서비스를 등록할 수 있습니다. 서비스 디렉터리 API를 호출하여 글로벌 부하 분산기, Google Kubernetes Engine 인그레스 및 게이트를 등록할 수 있습니다.
- 자동 등록은 전달 규칙을 만들 때만 사용할 수 있습니다. 이미 존재하는 전달 규칙에 Google Cloud CLI 업데이트를 사용한 자동 등록은 사용할 수 없습니다.
- 공유 VPC 네트워크 설정의 호스트 또는 서비스 프로젝트에서 내부 부하 분산기를 서비스 디렉터리에 등록할 수 있습니다. 하지만 모든 부하 분산 구성요소와 백엔드는 동일한 프로젝트에 있어야 합니다. 자세한 내용은 내부 부하 분산 제한사항을 참고하세요.
- 서비스 디렉터리는 연결을 제공하지 않습니다. 즉, 서비스 디렉터리에 내부 부하 분산기의 가상 IP 주소가 저장되어 있더라도 서비스 디렉터리에서 내부 부하 분산기를 조회한다고 해서 가상 IP 주소에 연결할 수 있는 것은 아닙니다.
시작하기 전에
이 안내를 따르려면 다음이 필요합니다.
이미 서비스 디렉터리 네임스페이스와 서비스가 있어야 합니다. 네임스페이스가 없는 경우 서비스 디렉터리 구성의 절차에 따라 네임스페이스와 서비스를 만듭니다.
서비스 디렉터리 네임스페이스와 서비스는 생성 중인 내부 부하 분산기 전달 규칙과 동일한 프로젝트 및 리전에 있어야 합니다.
내부 부하 분산기 전달 규칙을 만들기 위해 필요한 리소스를 이미 설정했어야 합니다.
- 내부 패스 스루 네트워크 부하 분산기를 만드는 방법에 대한 자세한 내용은 내부 패스 스루 네트워크 부하 분산기 설정을 참고하세요.
- 내부 애플리케이션 부하 분산기를 만드는 방법에 대한 자세한 내용은 내부 애플리케이션 부하 분산기 설정을 참고하세요.
서비스 디렉터리에 내부 부하 분산기를 등록하도록 전달 규칙 설정
서비스 디렉터리에 내부 부하 분산기를 등록하려면 전달 규칙을 설정해야 합니다. 내부 패스 스루 네트워크 부하 분산기 또는 내부 애플리케이션 부하 분산기를 등록하려면 다음 섹션을 참고하세요.
내부 패스 스루 네트워크 부하 분산기 등록
내부 패스 스루 네트워크 부하 분산기를 등록하려면 gcloud compute forwarding-rules
create
명령어를 실행하고 service-directory-registration
플래그를 설정합니다.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --region=REGION \ --load-balancing-scheme=INTERNAL \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --address=RESERVED_IP_ADDRESS \ --ip-protocol=PROTOCOL_TYPE \ --ports=PORT_NUMBER \ --backend-service=BACKEND_SERVICE_NAME \ --backend-service-region=REGION \ --service-directory-registration=SD_SERVICE_NAME
다음을 바꿉니다.
FORWARDING_RULE_NAME
: 만들려는 전달 규칙의 이름REGION
: 전달 규칙을 만들 리전NETWORK_NAME
: 이 전달 규칙이 적용되는 네트워크SUBNET_NAME
: 이 전달 규칙이 적용되는 서브네트워크RESERVED_IP_ADDRESS
: 전달 규칙이 제공하는 IP 주소PROTOCOL_TYPE
: 규칙이 제공하는 IP 프로토콜PORT_NUMBER
: 쉼표로 구분된 포트 목록BACKEND_SERVICE_NAME
: 트래픽을 수신하는 대상 백엔드 서비스SD_SERVICE_NAME
: 엔드포인트를 등록할 서비스 디렉터리 서비스의 정규화된 이름 (생성되는 전달 규칙과 동일한 프로젝트 및 리전에 있어야 함) 예: projects/PROJECT
/locations/REGION
/namespaces/NAMESPACE_NAME
/services/SERVICE_NAME
내부 애플리케이션 부하 분산기 등록
리전별 내부 애플리케이션 부하 분산기를 등록하려면 gcloud compute forwarding-rules
create
명령어를 실행하고 service-directory-registration
플래그를 설정합니다.
gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \ --region=REGION \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK_NAME \ --address=RESERVED_IP_ADDRESS \ --target-https-proxy=PROXY_NAME \ --target-https-proxy-region=PROXY_REGION \ --ports=PORT_NUMBER \ --service-directory-registration=SD_SERVICE_NAME
다음을 바꿉니다.
FORWARDING_RULE_NAME
: 만들려는 전달 규칙의 이름REGION
: 전달 규칙을 만들 리전NETWORK_NAME
: 이 전달 규칙이 적용되는 네트워크RESERVED_IP_ADDRESS
: 전달 규칙이 제공하는 IP 주소PROXY_NAME
: 트래픽을 수신하는 대상 프록시PROXY_REGION
: 작동할 프록시의 리전PORT_NUMBER
: 쉼표로 구분된 포트 목록SD_SERVICE_NAME
: 엔드포인트를 등록할 서비스 디렉터리 서비스의 정규화된 이름. 이 서비스는 생성되는 전달 규칙과 동일한 프로젝트 및 리전에 있어야 합니다. 예: projects/PROJECT
/locations/REGION
/namespaces/NAMESPACE_NAME
/services/SERVICE_NAME
엔드포인트 확인
내부 부하 분산기를 등록할 때 생성되는 하나 이상의 서비스 디렉터리 엔드포인트는 다음과 같은 특성을 갖습니다.
- 엔드포인트의 이름은 지정된 포트 번호 (
<forwarding rule name>-<port>
)가 있는 전달 규칙의 이름과 동일합니다. 예를 들어--port=8080
로 전달 규칙RULE
를 만들면RULE-8080
라는 엔드포인트가 생성됩니다. 동일한 규칙에서 포트--port=8080, 8081
를 두 개 지정하면 엔드포인트RULE-8080
및RULE-8081
가 두 개 생성됩니다.--port=ALL
를 지정하면 서비스 디렉터리 엔드포인트가 포트0
에 등록됩니다. 내부 부하 분산기 소유자인 경우 API 호출자가 연결할 포트를 알고 있는지 확인해야 합니다. - 공개 서비스 디렉터리 API를 사용하여 엔드포인트를 수정하거나 삭제할 수 없습니다. 전달 규칙을 삭제할 때만 엔드포인트가 자동으로 삭제됩니다. 즉, 전달 규칙이 존재하는 동안 엔드포인트가 있는 서비스와 네임스페이스를 삭제할 수 없습니다.
- 엔드포인트 자체에는 요금이 청구되지 않지만 엔드포인트에 대한 모든 API 호출에는 일반 가격 세부정보가 적용됩니다.
엔드포인트가 생성되었는지 확인하려면 서비스 디렉터리에서 서비스를 확인합니다. 지정된 포트 번호와 함께 전달 규칙의 이름과 동일한 이름의 엔드포인트가 표시됩니다.
서비스 디렉터리에서 서비스를 확인하려면 다음 단계를 따르세요.
gcloud
gcloud service-directory services
resolve
명령어를 실행합니다.
gcloud service-directory services resolve SD_SERVICE_NAME \ --namespace=SD_NAMESPACE_NAME \ --location=REGION
다음을 바꿉니다.
SD_SERVICE_NAME
: 확인할 서비스 디렉터리 서비스의 이름입니다. 서비스 디렉터리 네임스페이스 이름에 있어야 합니다.SD_NAMESPACE_NAME
: 서비스를 포함하는 네임스페이스에 지정한 이름입니다.REGION
: 네임스페이스가 포함된 Google Cloud 리전입니다. 전달 규칙을 만든 리전과 동일해야 합니다.
선택사항: Cloud DNS를 사용하여 서비스 디렉터리 영역 만들기
이 통합을 통해 등록된 서비스 디렉터리 엔드포인트는 다른 서비스 디렉터리 엔드포인트와 마찬가지로 DNS를 사용하여 확인할 수 있습니다. Cloud DNS를 사용하여 서비스 디렉터리 영역을 만들려면 서비스 디렉터리 영역 구성을 참고하세요.
영역이 올바르게 설정되어 있는지 확인하려면 서비스 디렉터리 영역의 DNS 쿼리를 실행하면 됩니다. DNS를 사용하여 쿼리하는 방법에 대한 안내는 DNS를 사용하여 쿼리를 참고하세요. 영역이 올바르게 구성된 경우 명령어 출력에 내부 부하 분산기의 IP 주소가 표시됩니다.
삭제
만든 리소스를 삭제하려면 다음 단계를 따르세요.
gcloud
전달 규칙을 삭제하려면
gcloud compute forwarding-rules delete
명령어를 실행합니다.gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \ --region=REGION \
다음을 바꿉니다.
FORWARDING_RULE_NAME
: 내가 만든 전달 규칙의 이름REGION
: 전달 규칙의 리전입니다.
자세한 내용은 전달 규칙 삭제를 참고하세요.
전달 규칙을 삭제하면 서비스 디렉터리에서 엔드포인트가 자동으로 삭제되었는지 확인하려면 서비스 디렉터리 서비스의 엔드포인트 확인 섹션에 설명된
gcloud service-directory services resolve
명령어를 실행합니다.영역을 삭제하려면(만들어진 경우) 관리형 영역 삭제의 안내를 따르세요.
서비스 디렉터리 네임스페이스 및 서비스를 삭제하려면 리소스 삭제를 참고하세요.
다음 단계
- 서비스 디렉터리에 대한 개요는 서비스 디렉터리 개요를 참고하세요.
- 서비스 디렉터리를 사용할 때 발생할 수 있는 일반적인 문제에 대한 해결책을 찾으려면 문제 해결을 참고하세요.