TCP 트래픽 라우팅 설정

이 가이드에서는 Cloud Service Mesh를 사용하여 TCP 트래픽을 처리하는 서비스로 트래픽을 라우팅하는 방법을 보여줍니다. 이러한 서비스에는 특정 포트 또는 포트 범위에서 TCP 트래픽을 수신할 것으로 예상되는 데이터베이스, VOIP 서비스, 관리 플랫폼이 포함됩니다.

이 가이드는 이전 API를 사용하는 배포에 적용됩니다. 미리보기 상태인 새 서비스 라우팅 API를 사용하는 경우에는 TCPRoute 리소스를 사용하는 TCP 서비스에 대한 Cloud Service Mesh 설정을 참고하세요.

이 가이드를 사용하여 다음을 수행합니다.

  • 클라이언트의 TCP 요청을 허용하는 동일한 백엔드 또는 엔드포인트 컬렉션을 나타내는 서비스를 설정합니다.
  • Cloud Service Mesh가 구성하는 Envoy 프록시가 TCP 요청을 보낼 수 있도록 라우팅 규칙 맵을 설정합니다.

다음 다이어그램은 가상 머신(VM) 인스턴스와 네트워크 엔드포인트 그룹(NEG)에서 TCP 라우팅이 각각 작동하는 방식을 보여줍니다.

VM용 Compute Engine API 리소스입니다.
TCP, Compute Engine 백엔드용 Cloud Service Mesh 설정(확대하려면 클릭)


NEG용 Compute Engine API 리소스입니다.
TCP, NEG 백엔드용 Cloud Service Mesh 설정(확대하려면 클릭)

준비

  • 이 가이드는 서비스 메시용 Envoy 준비 가이드를 기반으로 하며 사용자가 Cloud Service Mesh의 기본 작동 원리를 이미 알고 있다고 가정합니다.
  • 이 가이드에서는 TCP 트래픽의 서비스 및 라우팅을 구성할 때 다른 Cloud Service Mesh 설정 측면을 중점적으로 설명합니다.
  • 이 가이드에서는 관리형 인스턴스 그룹(MIG) 또는 NEG를 이미 설정했다고 가정합니다.

부하 분산 리소스 구성

다음 단계에 따라 부하 분산 리소스를 구성합니다.

TCP 상태 확인 만들기

VM 설정

MIG를 구성하는 경우 다음 명령어를 사용하여 전역 상태 확인을 만듭니다. PORT를 이 상태 확인이 모니터링하는 TCP 포트 번호로 바꿉니다.

gcloud compute health-checks create tcp td-vm-health-check \
    --global \
    --port=PORT

NEG 설정

NEG를 구성하는 경우 다음 명령어를 사용하여 상태 확인을 만듭니다.

gcloud compute health-checks create tcp td-gke-health-check \
    --use-serving-port

상태 확인에 대한 자세한 내용은 다음을 참조하세요.

상태 확인에 대한 방화벽 규칙 만들기

이 규칙은 Google Cloud 상태 확인기의 상태 확인을 사용자의 백엔드에 도달할 수 있도록 사용 설정합니다.

gcloud

gcloud compute firewall-rules create fw-allow-health-checks \
  --action=ALLOW \
  --direction=INGRESS \
  --source-ranges=35.191.0.0/16,130.211.0.0/22 \
  --target-tags=TAGS \
  --rules=tcp:80

상태 확인을 위한 방화벽 규칙에 대한 자세한 내용은 다음을 참조하세요.

TCP 백엔드용 백엔드 서비스 만들기

Cloud Service Mesh를 사용하는 TCP의 백엔드 서비스 설정은 HTTP 설정과 약간 다릅니다. 다음 단계는 이러한 차이를 포착합니다.

VM 설정

MIG를 구성하는 경우 다음 명령어를 사용하여 백엔드 서비스를 만들고 상태 확인을 추가합니다.

 gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --health-checks=td-vm-health-check \
     --protocol=TCP \
     --global-health-checks

백엔드 서비스를 설정하는 마지막 단계는 백엔드를 추가하는 것입니다. 이 단계는 표준 Cloud Service Mesh 설정이므로(즉, TCP 기반 서비스에는 해당 없음) 여기에 표시되지 않습니다. 자세한 내용은 자동 Envoy 배포로 Compute Engine VM 설정 가이드의 백엔드 서비스 만들기를 참조하세요.

NEG 설정

NEG를 구성하는 경우 다음 명령어를 사용하여 백엔드 서비스를 만들고 상태 확인을 백엔드 서비스와 연결합니다.

gcloud compute backend-services create td-gke-service \
    --global \
    --health-checks=td-gke-health-check \
    --protocol=TCP \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

백엔드 서비스를 설정하는 마지막 단계는 백엔드 그룹을 추가하는 것입니다. 이 단계는 표준 Cloud Service Mesh 설정이므로(즉, TCP 기반 서비스에는 해당 없음) 여기에 표시되지 않습니다. 자세한 내용은 자동 Envoy 삽입으로 GKE pod 설정 가이드의 백엔드 서비스 만들기를 참조하세요.

TCP 기반 백엔드 서비스의 라우팅 설정

이 섹션에서는 전역 대상 TCP 프록시 및 전역 전달 규칙을 만듭니다. 이러한 리소스는 애플리케이션이 새로 생성된 백엔드 서비스를 통하여 트래픽을 백엔드로 전송할 수 있도록 설정합니다.

다음 사항을 고려하세요.

  • 전달 규칙에는 부하 분산 스키마 INTERNAL_SELF_MANAGED가 있어야 합니다.
  • 전달 규칙에 구성된 가상 IP 주소(VIP) 및 포트는 트래픽을 TCP 서비스로 전송할 때 애플리케이션에서 사용하는 VIP 및 포트입니다. 서브넷 중 하나에서 VIP를 선택할 수 있습니다. Cloud Service Mesh는 이 VIP 및 포트를 사용하여 클라이언트 요청을 특정 백엔드 서비스와 일치시킵니다.

    클라이언트 요청을 백엔드 서비스와 일치시키는 방법에 대한 자세한 내용은 서비스 검색을 참조하세요.

gcloud

  1. 다음 명령어를 사용하여 대상 TCP 프록시를 만듭니다. BACKEND_SERVICE를 이전 단계에서 만든 백엔드 서비스의 이름으로 바꿉니다. 다음 예시에서는 td-tcp-proxy를 대상 TCP 프록시의 이름으로 사용하지만 필요에 맞는 이름을 선택할 수 있습니다.

    gcloud compute target-tcp-proxies create td-tcp-proxy \
       --backend-service=BACKEND_SERVICE
    
  2. 전달 규칙을 만듭니다. 전달 규칙은 클라이언트 요청을 특정 백엔드 서비스와 일치시킬 때 사용되는 VIP 및 포트를 지정합니다. 자세한 내용은 gcloud 명령어 참조의 gcloud compute forwarding-rules create를 참조하세요.

    gcloud compute forwarding-rules create td-tcp-forwarding-rule \
        --global \
        --load-balancing-scheme=INTERNAL_SELF_MANAGED \
        --address=VIP\
        --target-tcp-proxy=td-tcp-proxy \
        --ports=PORT \
        --network=default
    

이 시점에서 Cloud Service Mesh는 전달 규칙에 지정된 VIP의 트래픽을 백엔드 전체에 부하 분산하도록 구성됩니다.

문제 해결

애플리케이션이 TCP 기반 서비스에 요청을 보내려고 하는 경우 다음을 수행하세요.

  • TCP 상태 확인 포트가 TCP 애플리케이션이 상태 확인 트래픽을 수신할 포트와 일치하는지 확인합니다.
  • 백엔드 서비스의 포트 이름이 인스턴스 그룹에 지정된 이름과 일치하는지 확인합니다.

다음 단계