하이브리드 연결 네트워크 엔드포인트 그룹을 사용하는 Cloud Service Mesh

Cloud Service Mesh는 하이브리드 연결을 사용하여 연결할 수 있는 온프레미스 데이터 센터와 기타 퍼블릭 클라우드를 포함하여 Google Cloud 외부로 확장되는 환경을 지원합니다.

서비스 메시에서 트래픽을 Google Cloud 외부의 엔드포인트로 보낼 수 있도록 Cloud Service Mesh를 구성합니다. 이러한 엔드포인트는 다음과 같습니다.

  • 온프레미스 부하 분산기
  • 다른 클라우드의 가상 머신(VM) 인스턴스에 있는 서버 애플리케이션
  • 하이브리드 연결을 통해 연결할 수 있고 IP 주소 및 포트로 도달할 수 있는 다른 모든 대상

각 엔드포인트의 IP 주소 및 포트를 하이브리드 연결 네트워크 엔드포인트 그룹(NEG)에 추가합니다. 하이브리드 연결 NEG는 NON_GCP_PRIVATE_IP_PORT 유형입니다.

Cloud Service Mesh의 온프레미스 및 멀티 클라우드 서비스 지원을 통해 다음을 수행할 수 있습니다.

  • 온프레미스 및 멀티 클라우드 서비스의 엔드포인트를 포함하여 트래픽을 전역으로 라우팅합니다.
  • 서비스 검색 및 고급 트래픽 관리와 같은 기능을 포함한 Cloud Service Mesh 및 서비스 메시의 이점을 Google Cloud 외부의 기존 인프라에서 실행되는 서비스에 제공합니다.
  • Cloud Service Mesh 기능을 Cloud Load Balancing과 결합하여 멀티 환경에 Google Cloud 네트워킹 서비스를 제공합니다.

하이브리드 연결 NEG(NON_GCP_PRIVATE_IP_PORT NEG)는 프록시리스 gRPC 클라이언트에서 지원되지 않습니다.

사용 사례

Cloud Service Mesh는 다음을 포함한 여러 환경에서 VM 기반 서비스와 컨테이너 기반 서비스 간에 네트워킹을 구성할 수 있습니다.

  • Google Cloud
  • 온프레미스 데이터 센터
  • 기타 공개 클라우드

메시 트래픽을 온프레미스 위치 또는 다른 클라우드로 라우팅

이 기능의 가장 간단한 사용 사례는 트래픽 라우팅입니다. 애플리케이션에서 Cloud Service Mesh Envoy 프록시가 실행됩니다. Cloud Service Mesh는 서비스 및 각 서비스의 엔드포인트를 클라이언트에 알려줍니다.

메시 트래픽을 온프레미스 위치 또는 다른 클라우드로 라우팅
메시 트래픽을 온프레미스 위치 또는 다른 클라우드로 라우팅(확대하려면 클릭)

앞선 다이어그램에서 애플리케이션이 요청을 on-prem 서비스에 보내면 Cloud Service Mesh 클라이언트에서 아웃바운드 요청을 검사하고 대상을 업데이트합니다. 대상이 on-prem 서비스와 연결된 엔드포인트(이 경우에는 10.2.0.1)로 설정됩니다. 그런 다음 요청이 Cloud VPN 또는 Cloud Interconnect를 통해 대상으로 이동합니다.

엔드포인트를 더 추가해야 하면 Cloud Service Mesh를 업데이트하여 서비스에 엔드포인트를 추가합니다. 애플리케이션 코드를 변경할 필요는 없습니다.

기존 온프레미스 서비스를 Google Cloud로 마이그레이션

Google Cloud 이외의 엔드포인트로 트래픽을 전송하면 다른 환경으로 트래픽을 라우팅할 수 있습니다. 이 기능을 고급 트래픽 관리와 결합하여 환경 간 서비스 마이그레이션을 수행할 수 있습니다.

온프레미스 위치에서 Google Cloud로 마이그레이션
온프레미스 위치에서 Google Cloud로 마이그레이션(확대하려면 클릭)

위의 다이어그램은 이전 패턴을 확장합니다. Cloud Service Mesh에서 on-prem 서비스에 모든 트래픽을 보내도록 구성하는 대신 Cloud Service Mesh에서 가중치 기반 트래픽 분할을 사용하여 두 서비스 간에 트래픽을 분할하도록 구성합니다.

트래픽 분할을 사용하면 트래픽 0%를 cloud 서비스로, 100%를 on-prem 서비스로 전송하여 시작할 수 있습니다. 그런 다음 cloud 서비스로 전송되는 트래픽의 비율을 점차 높일 수 있습니다. 결국 트래픽 100%가 cloud 서비스로 전송되고 on-prem 서비스를 사용 중지할 수 있습니다.

온프레미스 및 멀티 클라우드 배포를 위한 Google Cloud 네트워크 에지 서비스

마지막으로 이 기능을 Google Cloud의 기존 네트워킹 솔루션과 조합할 수 있습니다. Google Cloud는 DDoS 보호를 위해 Google Cloud Armor를 사용하는 전역 외부 부하 분산과 같이 Cloud Service Mesh와 함께 사용하여 온프레미스 서비스나 멀티 클라우드 서비스에 새 기능을 지원할 수 있는 다양한 네트워크 서비스를 제공합니다. 무엇보다도 이러한 온프레미스 또는 멀티 클라우드 서비스를 공개 인터넷에 노출시킬 필요가 없습니다.

여러 환경에 걸친 배포
여러 환경에 걸친 배포(확대하려면 클릭)

앞의 다이어그램에서 공개 인터넷의 클라이언트 트래픽은 전역 외부 애플리케이션 부하 분산기와 같은 Google Cloud 부하 분산기에서 Google Cloud 네트워크에 들어옵니다. 트래픽이 부하 분산기에 도달하면 Google Cloud Armor DDoS 보호 또는 IAP(Identity-Aware Proxy) 사용자 인증과 같은 네트워크 에지 서비스를 적용할 수 있습니다. 자세한 내용은 다중 환경 배포를 위한 네트워크 에지 서비스를 참조하세요.

이 서비스를 적용하면 트래픽이 Google Cloud에서 잠시 중단됩니다. Cloud Service Mesh에서 구성한 애플리케이션 또는 독립형 프록시가 Cloud VPN 또는 Cloud Interconnect 간의 트래픽을 온프레미스 서비스로 전달합니다.

Google Cloud 리소스 및 아키텍처

이 섹션에서는 온프레미스 및 멀티 클라우드 환경에 Cloud Service Mesh 관리형 서비스 메시를 제공하는 데 사용하는 Google Cloud 리소스에 대한 배경 정보를 제공합니다.

다음 다이어그램에서는 Cloud Service Mesh에 온프레미스 및 멀티 클라우드 서비스 지원을 사용 설정하는 Google Cloud 리소스를 보여줍니다. 핵심 리소스는 NEG 및 해당 네트워크 엔드포인트입니다. 다른 리소스는 표준 Cloud Service Mesh 설정의 일부로 구성하는 리소스입니다. 간단한 설명을 위해 이 다이어그램에서는 여러 전역 백엔드 서비스 등의 옵션을 보여주지 않습니다.

온프레미스 및 멀티 클라우드 서비스용 Compute Engine 리소스
온프레미스 및 멀티 클라우드 서비스용 Compute Engine 리소스(확대하려면 클릭)

Cloud Service Mesh를 구성할 때 전역 백엔드 서비스 API 리소스를 사용하여 서비스를 만듭니다. 서비스는 다음을 결합하는 논리적 구문입니다.

  1. 클라이언트가 서비스에 트래픽을 전송하려고 시도할 때 적용되는 정책
  2. 서비스를 대상으로 하는 트래픽을 처리하는 하나 이상의 백엔드 또는 엔드포인트

온프레미스 및 멀티 클라우드 서비스는 Cloud Service Mesh에서 구성하는 다른 서비스와 비슷합니다. 주요 차이점은 하이브리드 연결 NEG를 사용하여 이러한 서비스의 엔드포인트를 구성한다는 것입니다. 이러한 NEG에는 네트워크 엔드포인트 유형NON_GCP_PRIVATE_IP_PORT로 설정되어 있습니다. 하이브리드 연결 NEG에 추가하는 엔드포인트는 클라이언트에서 Cloud VPN 또는 Cloud Interconnect와 같은 하이브리드 연결을 통해 연결할 수 있는 유효한 IP:port 조합이어야 합니다.

각 NEG에는 네트워크 엔드포인트 유형이 있으며 같은 유형의 네트워크 엔드포인트만 여기에 포함될 수 있습니다. 이 유형은 다음을 결정합니다.

  • 서비스에서 트래픽을 전송할 수 있는 대상
  • 상태 확인 동작

NEG를 만들 때는 온프레미스 또는 멀티 클라우드 대상으로 트래픽을 보낼 수 있도록 다음과 같이 구성합니다.

  • 네트워크 엔드포인트 유형을 NON_GCP_PRIVATE_IP_PORT로 설정합니다. 이는 연결 가능한 IP 주소를 나타냅니다. 이 IP 주소가 온프레미스 또는 다른 클라우드 제공업체에 있으면 Cloud VPN 또는 Cloud Interconnect에서 제공되는 연결과 같이 하이브리드 연결을 사용하여 Google Cloud에서 연결할 수 있어야 합니다.
  • Google Cloud와 온프레미스 또는 멀티 클라우드 환경 사이의 지리적 거리를 최소화하는 Google Cloud 영역을 지정합니다. 예를 들어 독일 프랑크푸르트의 온프레미스 환경에서 서비스를 호스팅하는 경우 NEG를 만들 때 europe-west3-a Google Cloud 영역을 지정할 수 있습니다.

이 유형의 네트워크 엔드포인트에 대한 상태 확인 동작은 다른 유형의 네트워크 엔드포인트에 대한 상태 확인 동작과 다릅니다. 다른 네트워크 엔드포인트에서 Google Cloud의 중앙 집중식 상태 점검 시스템을 사용하지만 NON_GCP_PRIVATE_IP_PORT 네트워크 엔드포인트는 Envoy의 분산형 상태 점검 메커니즘을 사용합니다. 자세한 내용은 제한사항 및 기타 고려사항 섹션을 참조하세요.

연결 및 네트워킹 고려사항

Envoy 프록시와 같은 Cloud Service Mesh 클라이언트는 trafficdirector.googleapis.com:443에서 Cloud Service Mesh에 연결할 수 있어야 합니다. Cloud Service Mesh 컨트롤 플레인과의 연결이 끊어지면 다음이 발생합니다.

  • 기존 Cloud Service Mesh 클라이언트는 Cloud Service Mesh에서 구성 업데이트를 받을 수 없습니다. 현재 구성을 기반으로 계속 작동합니다.
  • 새 Cloud Service Mesh 클라이언트가 Cloud Service Mesh에 연결될 수 없습니다. 연결이 다시 설정될 때까지 서비스 메시를 사용할 수 없습니다.

Google Cloud와 온프레미스 또는 멀티 클라우드 환경 간에 트래픽을 전송하려면 하이브리드 연결을 통해 환경을 연결해야 합니다. Cloud Interconnect 또는 Cloud VPN에서 지원하는 고가용성 연결을 사용하는 것이 좋습니다.

온프레미스, 기타 클라우드, Google Cloud 서브넷 IP 주소 및 IP 주소 범위가 겹치면 안 됩니다.

제한사항 및 기타 고려사항

다음은 하이브리드 연결 NEG 사용 시 제한사항입니다.

proxyBind 설정

targetHttpProxy를 만들 때만 proxyBind의 값을 설정할 수 있습니다. 기존 targetHttpProxy는 업데이트할 수 없습니다.

연결 및 연결 중단

연결 요구사항과 제한사항에 대한 자세한 내용은 연결 및 네트워킹 고려사항 섹션을 참조하세요.

혼합된 백엔드 유형

백엔드 서비스에는 VM 또는 NEG 백엔드가 포함될 수 있습니다. 백엔드 서비스에 NEG 백엔드가 있으면 모든 NEG에 동일한 네트워크 엔드포인트 유형이 포함되어야 합니다. 백엔드 서비스는 엔드포인트 유형이 서로 다른 여러 NEG를 포함할 수 없습니다.

URL 맵은 서로 다른 백엔드 서비스로 확인되는 호스트 규칙을 포함할 수 있습니다. 하이브리드 연결 NEG만 있는 백엔드 서비스(온프레미스 엔드포인트 포함)와 독립형 NEG를 사용하는 백엔드 서비스(GKE 엔드포인트 포함)가 있을 수 있습니다. URL 맵에는 각 백엔드 서비스 간에 트래픽을 분할하는 가중치 기반 트래픽 분할 같은 규칙이 포함될 수 있습니다.

Google Cloud 백엔드에 NON_GCP_PRIVATE_IP_PORT 유형의 엔드포인트를 포함하는 NEG 사용

Google Cloud의 백엔드를 가리키는 하이브리드 연결 NEG로 백엔드 서비스를 만들 수 있습니다. 하지만 하이브리드 연결 NEG에는 중앙 집중식 상태 확인의 이점이 없기 때문에 이 패턴이 권장되지 않습니다. 중앙 집중식 상태 확인 및 분산형 상태 확인에 대한 설명은 상태 확인 섹션을 참조하세요.

엔드포인트 등록

NEG에 엔드포인트를 추가하려면 NEG를 업데이트해야 합니다. 이 작업은 수동으로 수행할 수 있고 Google Cloud NEG REST API 또는 Google Cloud CLI를 사용하여 자동화할 수도 있습니다.

서비스의 새 인스턴스가 시작되면 Google Cloud API를 사용하여 구성된 NEG에 인스턴스를 등록할 수 있습니다. Compute Engine 관리형 인스턴스 그룹(MIG) 또는 Google Cloud의 GKE를 사용할 때 MIG 또는 NEG 컨트롤러에서 각각 엔드포인트 등록을 자동으로 처리합니다.

상태 확인

하이브리드 연결 NEG를 사용하는 경우 상태 확인 동작은 다음과 같은 점에서 표준 중앙 집중식 상태 확인 동작과 다릅니다.

  • NON_GCP_PRIVATE_IP_PORT 유형의 네트워크 엔드포인트의 경우 Cloud Service Mesh는 클라이언트에서 데이터 영역을 사용하여 상태 점검을 처리하도록 클라이언트를 구성합니다. 비정상적인 백엔드에 요청을 보내지 않기 위해 Envoy 인스턴스는 자체 상태 확인을 수행하고 자체 메커니즘을 사용합니다.
  • 데이터 영역에서 상태 점검을 처리하므로 Google Cloud Console, API 또는 Google Cloud CLI를 사용하여 상태 점검 상태를 검색할 수 없습니다.

실제로 NON_GCP_PRIVATE_IP_PORT를 사용하면 다음과 같은 결과가 발생합니다.

  • Cloud Service Mesh 클라이언트가 각각 분산된 방식으로 상태 점검을 처리하므로 상태 점검으로 인해 네트워크 트래픽이 증가할 수 있습니다. 증가량은 Cloud Service Mesh 클라이언트 수와 각 클라이언트에서 상태를 점검하는 데 필요한 엔드포인트 수에 따라 달라집니다. 예를 들면 다음과 같습니다.
    • 하이브리드 연결 NEG에 다른 엔드포인트를 추가하면 기존 Cloud Service Mesh 클라이언트에서 하이브리드 연결 NEG의 엔드포인트 상태 점검을 시작할 수 있습니다.
    • 서비스 메시에 다른 인스턴스(예: 애플리케이션 코드와 Cloud Service Mesh 클라이언트를 실행하는 VM 인스턴스)를 추가하면 새 인스턴스에서 하이브리드 연결 NEG의 엔드포인트 상태 점검을 시작할 수 있습니다.
    • 상태 확인으로 인해 네트워크 트래픽이 2차율(O(n^2))로 증가합니다.

VPC 네트워크

서비스 메시는 해당 Virtual Private Cloud(VPC) 네트워크 이름으로 고유하게 식별됩니다. Cloud Service Mesh 클라이언트는 부트스트랩 구성에 지정된 VPC 네트워크를 기반으로 Cloud Service Mesh에서 구성을 받습니다. 따라서 메시가 완전히 Google Cloud 데이터 센터 외부에 있더라도 부트스트랩 구성에서 유효한 VPC 네트워크 이름을 제공해야 합니다.

서비스 계정

Google Cloud 내에서 기본 Envoy 부트스트랩은 Compute Engine 및 GKE 배포 환경 중 하나 또는 둘 다에서 서비스 계정 정보를 읽도록 구성됩니다. Google Cloud 외부에서 실행할 때는 Envoy 부트스트랩에 서비스 계정, 네트워크 이름, 프로젝트 번호를 명시적으로 지정해야 합니다. 이 서비스 계정에는 Cloud Service Mesh API와 연결할 수 있는 충분한 권한이 있어야 합니다.

다음 단계