서비스 검색

Traffic Director는 서비스 및 엔드포인트 검색을 제공합니다. 이러한 기능을 사용하면 코드를 실행하는 가상 머신(VM) 인스턴스와 컨테이너 인스턴스를 서비스의 엔드포인트로 그룹화할 수 있습니다.

Traffic Director는 이러한 서비스를 모니터링하여 최신 정보를 클라이언트와 공유할 수 있습니다. 따라서 애플리케이션 중 하나가 Envoy 사이드카 프록시와 같은 Traffic Director 클라이언트를 사용하여 요청을 전송할 때 서비스에 대한 최신 정보를 활용할 수 있습니다.

Traffic Director 컨텍스트에서 클라이언트는 VM 또는 컨테이너에서 실행되며 서버로 전송할 요청을 만드는 애플리케이션 코드입니다. 서버는 이러한 요청을 수신하는 애플리케이션 코드입니다. Traffic Director 클라이언트는 Traffic Director에 연결되는 Envoy, gRPC, 기타 xDS 클라이언트이며 데이터 영역에 포함됩니다.

데이터 영역에서 Envoy 또는 gRPC는 다음을 수행합니다.

  1. 요청을 검사하고 배포 중 구성하는 리소스인 백엔드 서비스에 대해 일치하는 요청을 찾습니다.
  2. 요청이 일치하면 Envoy 또는 gRPC가 백엔드 또는 엔드포인트를 선택하고 요청을 해당 백엔드 또는 엔드포인트로 전달합니다.

서비스 검색

Traffic Director는 서비스 검색을 제공합니다. Traffic Director를 구성하면 백엔드 서비스가 생성됩니다. 또한 특정 서비스에 대해 일치하는 아웃바운드 요청(애플리케이션 코드로 전송되고 Traffic Director 클라이언트로 처리되는 요청)을 찾는 방법을 지정하는 라우팅 규칙을 정의합니다. Traffic Director 클라이언트가 규칙과 일치하는 요청을 처리할 때 요청을 수신할 서비스를 선택할 수 있습니다.

예를 들면 다음과 같습니다.

  • 애플리케이션을 실행하는 VM이 있습니다. 이 VM에는 Traffic Director에 연결되는 Envoy 사이드카 프록시가 있고, 애플리케이션 대신 아웃바운드 요청을 처리합니다.
  • payments라는 백엔드 서비스가 구성되어 있습니다. 이 백엔드 서비스에는 payments 서비스에 대해 코드를 실행하는 여러 컨테이너 인스턴스를 가리키는 2개의 네트워크 엔드포인트 그룹(NEG) 백엔드가 있습니다.
  • 전달 규칙(예시 IP 0.0.0.0 및 포트 80 사용), 대상 프록시, URL 맵(payments 서비스를 가리키는 예시 호스트 이름 payments.example.com 사용)이 포함된 라우팅 규칙 맵을 구성했습니다.

이 구성에서 VM의 애플리케이션이 포트 80으로 HTTP 요청을 payments.example.com으로 전송하면 Traffic Director 클라이언트가 payments 서비스 대상 요청이라는 것을 알 수 있습니다.

Traffic Director를 프록시리스 gRPC 서비스에 사용하면 서비스 검색이 비슷하게 작동합니다. 하지만 Traffic Director 클라이언트 역할을 수행하는 gRPC 라이브러리는 xDS 리졸버를 지정한 서비스에 대한 정보만 가져옵니다. 기본적으로 Envoy는 Envoy 부트스트랩 파일에 지정된 Virtual Private Cloud(VPC) 네트워크에 구성된 모든 서비스에 대한 정보를 가져옵니다.

엔드포인트 검색

서비스 검색을 사용하면 클라이언트가 서비스에 대해 알 수 있습니다. 엔드포인트 검색을 사용하면 클라이언트가 코드를 실행 중인 인스턴스에 대해 알 수 있습니다.

서비스를 만들 때는 해당 서비스의 백엔드도 지정합니다. 이 백엔드는 관리형 인스턴스 그룹(MIG)의 VM이거나 NEG의 컨테이너입니다. Traffic Director가 이러한 MIG 및 NEG를 모니터링하기 때문에 인스턴스 및 엔드포인트가 생성 및 삭제될 때 이를 확인할 수 있습니다.

Traffic Director는 이러한 서비스에 대한 최신 정보를 클라이언트와 지속적으로 공유합니다. 이 정보에 따라 클라이언트가 더 이상 존재하지 않는 엔드포인트에 트래픽을 전송하지 않을 수 있습니다. 또한 클라이언트가 새 엔드포인트를 확인하고 이러한 엔드포인트에서 제공되는 추가 용량을 활용할 수 있습니다.

위의 예시에서 Traffic Director는 MIG-1의 정상 엔드포인트 2개와 MIG-2의 정상 엔드포인트 3개를 서비스 shopping-cart에 대해 반환합니다. MIG 또는 NEG에 엔드포인트를 추가하고 Traffic Director를 설정하는 것 외에 Traffic Director로 서비스 검색을 사용 설정하기 위해 추가 구성이 필요하지 않습니다.

Traffic Director의 사이드카 프록시 트래픽 가로채기

Traffic Director의 사이드카 프록시 모델 지원 이 모델에서는 애플리케이션이 해당 대상으로 트래픽을 전송할 때 iptables가 트래픽을 가로채고 애플리케이션이 실행되는 호스트의 사이드카 프록시로 리디렉션합니다. 사이드카 프록시는 트래픽의 부하 균형 방법을 결정한 후 트래픽을 해당 대상으로 전송합니다.

다음 다이어그램에서는 Traffic Director가 올바르게 구성되었다고 가정하며, Envoy가 사이드카 프록시입니다. 사이드카 프록시는 애플리케이션과 동일한 호스트에서 실행됩니다.

Traffic Director가 이를 찾아서 부하 분산할 수 있는 가상 IP 주소(VIP) 10.0.0.1:80에서 Web이라는 샘플 서비스가 구성됩니다. Traffic Director는 VIP와 포트를 제공하는 전달 규칙 구성을 통해 설정을 탐색합니다. 서비스 Web의 백엔드가 구성되어 작동하지만, 다이어그램에 있는 Compute Engine VM 호스트 외부에 있습니다.

Traffic Director는 호스트에서 Web 서비스로 가는 트래픽에 대한 최적의 백엔드를 192.168.0.1:80으로 결정합니다.

Traffic Director 호스트 네트워킹
Traffic Director 호스트 네트워킹(확대하려면 클릭)

다이어그램의 트래픽 흐름은 다음과 같습니다.

  1. 애플리케이션이 서비스 Web으로 트래픽을 보내면 IP 주소 10.0.0.1:80으로 확인됩니다.
  2. 호스트의 넷필터는 10.0.0.1:80로 지정된 트래픽이 10.0.0.1:15001로 리디렉션되도록 구성됩니다.
  3. 트래픽이 Envoy 프록시의 가로채기 포트인 127.0.0.1:15001로 리디렉션됩니다.
  4. 127.0.0.1:15001의 Envoy 프록시 가로채기 리스너는 트래픽을 수신하고 요청의 원래 대상(10.0.0.1:80)을 조회합니다. 이렇게 하면 Traffic Director에서 프로그래밍한 대로 192.168.0.1:8080이 최적의 백엔드로 선택됩니다.
  5. Envoy는 192.168.0.1:8080를 사용하여 네트워크를 통해 연결을 설정하고 연결이 종료될 때까지 애플리케이션과 이 백엔드 간의 HTTP 트래픽을 프록시합니다.

자동 Envoy 배포로 트래픽 가로채기 옵션

VM에 자동 Envoy 배포를 사용한 경우 Traffic Director에 추가적인 트래픽 가로채기 옵션이 포함됩니다. 다음 옵션으로 다음을 수행할 수 있습니다.

  • 모든 트래픽 가로채기
  • 특정 포트, 포트 범위, IP 주소, CIDR 범위 제외

새로운 서비스 라우팅 API MeshGateway 리소스를 사용하는 경우 모든 트래픽이 자동으로 차단됩니다.

자세한 내용은 자동 Envoy 배포를 사용한 Compute Engine VM 설정 옵션을 참조하세요.

다음 단계

  • Traffic Director가 사이드카 프록시가 포함된 내부 마이크로서비스에 글로벌 부하 분산을 제공하는 방법은 Traffic Director 부하 분산을 참조하세요.
  • Traffic Director에 대한 자세한 내용은 Traffic Director 개요를 참조하세요.