Cloud Service Mesh 격리
이 페이지에서는 격리 구성을 만들어 백엔드 서비스의 요청 격리를 개선하여 서비스 메시를 구성하는 방법을 보여줍니다.
이 기능은 서비스 백엔드에 추가 격리 지원을 제공하여 리전 간 오버플로를 방지합니다.
기본적으로 Cloud Service Mesh는 지역별 폭포 알고리즘을 사용하여 사용자 트래픽을 라우팅할 위치를 결정합니다. 이 알고리즘을 사용하면 Cloud Service Mesh는 백엔드가 구성된 용량 한도로 실행될 때까지 가장 가까운 리전으로 트래픽을 라우팅합니다. 그런 다음 트래픽이 더 먼 리전으로 오버플로되기 시작합니다.
이 기능을 사용하면 프런트엔드 리전과 격리 구성에 따라 트래픽이 가장 가까운 리전 또는 로컬 리전으로 제한되며 가장 가까운 리전의 용량이 부족해도 오버플로되지 않습니다. 이렇게 하면 잠재적인 연쇄 장애를 방지하고 동일한 리전에서 발생할 수 있는 서비스 중단을 제한할 수 있습니다. 그렇지 않은 경우에도 전역 수준에서 서비스 구성을 관리합니다.
이 기능을 사용할지 여부는 실제 사용 사례에 따라 다르며, 사용하기 전에 다음 고려사항을 신중하게 살펴보아야 합니다.
- 한 리전의 백엔드가 과부하 상태인 경우 다른 리전의 백엔드가 트래픽을 처리할 수 있더라도 Cloud Service Mesh가 해당 백엔드로 추가 트래픽을 전송할 수 있습니다. 즉, 추가 트래픽으로 인해 각 개별 리전이 과부하될 가능성이 높으므로 이에 따라 계획해야 합니다.
- 트래픽은 여전히 전역 컨트롤 플레인으로 라우팅됩니다. 즉, 여러 리전에서 전역적으로 조정된 장애가 발생할 가능성이 여전히 있습니다.
- 이 기능은 serviceLbPolicy 리소스로 구성됩니다. 모든 제한사항은 계속 적용됩니다.
- STRICT 격리 모드에서는 동일한 리전에 제공 백엔드가 없으면 요청이 실패합니다.
이 기능을 적용한 후에는 두 가지 시나리오가 있습니다.
가장 가까운 격리
가장 가까운 리전 격리는 공동 배치된 백엔드가 있는 프런트엔드가 해당 리전으로만 격리되는 경우입니다. 사용 가능한 백엔드가 로컬 위치에 없으면 네트워크 지연 시간을 최적화하면서 백엔드 리전에 연결됩니다.
엄격한 격리
엄격한 리전 격리는 프런트엔드 위치가 로컬 리전 내의 백엔드에만 도달할 수 있는 경우입니다. 로컬 리전에서 백엔드를 제공하지 않는 프런트엔드는 모든 트래픽을 삭제합니다.
격리 사용 설정
gcloud
다음 단계에 따라 Google Cloud CLI를 사용하여 격리 구성을 만드세요.
다음 명령어를 실행하여
serviceLbPolicy
를 만듭니다.gcloud network-services service-lb-policies create my-isolation-policy \ --isolation-config-granularity=REGION \ --isolation-config-mode=ISOLATION_MODE \ --location=global
ISOLATION_MODE을 다음 옵션 중 하나로 바꿉니다.
- NEAREST: 트래픽이 가장 가까운 리전으로 전송됩니다.
- STRICT: 프런트엔드와 동일한 리전에서 제공되는 백엔드를 사용할 수 없는 경우 트래픽이 실패합니다.
명시적으로 제공되지 않은 경우 NEAREST가 기본값입니다.
--isolation-granularity
플래그도 설정된 경우에만 이 필드를 지정할 수 있습니다.또는 기존 정책이 있는 경우 다음 명령어로 업데이트합니다.
gcloud network-services service-lb-policies update POLICY_NAME \ --isolation-config-granularity=REGION \ --isolation-config-mode=ISOLATION_MODE \ --location=global
POLICY_NAME을 기존 정책 이름으로 바꿉니다.
serviceLbPolicy
리소스가 생성되거나 업데이트되면backendService
리소스에 연결합니다.gcloud compute backend-services update BACKEND_SERVICE_NAME \ ‐‐service-lb-policy POLICY_URL
BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.
격리 사용 중지
이 기능을 사용 중지하는 방법에는 두 가지가 있습니다.
isolationConfigs
을 unspecified로 설정합니다.- 이 정책으로 사용 설정한 유일한 기능인 경우 서비스에서
ServiceLbPolicy
를 삭제합니다.
isolationConfigs
을 unspecified로 설정
다음 명령어를 실행하여 isolationConfigs
를 unspecified로 설정합니다.
gcloud network-services service-lb-policies update my-isolation-policy \
--isolation-config-granularity=unspecified \
--isolation-config-mode=unspecified \
--location=global
서비스에서 ServiceLbPolicy
삭제
다음 명령어를 실행하여 ServiceLbPolicy
을 삭제합니다.
gcloud network-services service-lb-policies delete my-isolation-policy --location=global
지원 가능성, 진단, 문제 해결
이 섹션에서는 이 기능을 사용 설정한 후 발생할 수 있는 문제에 대해 설명합니다.
백엔드 과부하
이 기능은 격리 지원을 제공하므로 로컬 리전이 가득 차도 트래픽이 원격 리전으로 이동하지 않습니다. 따라서 이 기능을 사용 설정하면 일부 백엔드가 과부하될 수 있습니다. 이 동작이 원하는 동작이 아닌 경우 이 기능을 사용 중지하는 것이 좋습니다. 자동 확장을 사용 설정하여 백엔드 과부하를 더 효과적으로 처리하는 것도 고려해 보세요.
트래픽이 이동됨
이 기능은 용량 기반 트래픽 오버플로를 방지합니다. 따라서 이 기능을 사용 설정하기 전에 백엔드가 과부하된 경우 트래픽이 이미 원격 리전으로 이동되었을 수 있습니다. 이 경우 이 기능을 사용 설정하면 이러한 트래픽이 다시 이동될 수 있습니다.
트래픽이 전환되지 않음
이 기능은 용량 기반 트래픽 오버플로를 방지합니다. 따라서 이 기능을 사용 설정하기 전에 백엔드가 과부하되지 않았다면 가장 가까운 리전에서 모든 트래픽을 처리할 수 있을 가능성이 큽니다. 이 경우 이 기능을 사용 설정해도 단기적으로 트래픽이 이동하지 않을 수 있습니다.
리전에서 백엔드가 추가되거나 삭제된 후 트래픽이 이동됨
이 기능을 사용 설정하면 리전에 새 백엔드가 추가될 경우 트래픽이 이동될 수 있습니다. Cloud Service Mesh가 전체 네트워크 지연 시간을 최적화하기 위해 이러한 백엔드로 트래픽을 라우팅하려고 시도하므로 이는 예상되는 동작입니다. 마찬가지로 마지막 백엔드가 삭제되면 Cloud Service Mesh는 원격 리전으로 트래픽을 전송하기 시작합니다. 이 또한 예상되는 동작입니다.
요청 실패
STRICT 격리 모드가 사용 설정되어 있고 프런트엔드와 동일한 리전에서 제공되는 백엔드가 없으면 트래픽이 실패할 것으로 예상됩니다. 의도한 동작이 아닌 경우 트래픽이 전송될 것으로 예상되는 각 리전에 백엔드가 있는지 확인하세요.