Pub/Sub 리소스 위치 제한

전역 Pub/Sub 엔드포인트에 메시지를 게시하면 Pub/Sub가 가장 가까운 Google Cloud 리전에 메시지를 자동으로 저장합니다. 그 다음 Pub/Sub는 메시지가 저장된 위치에 상관없이 전 세계 구독자에게 메시지를 전달합니다.

경우에 따라 메시지를 저장할 위치를 더욱 정밀하게 제어해야 할 수도 있습니다. Pub/Sub의 주제 메시지 스토리지 정책은 게시 요청의 출처와 상관없이 주제에 게시된 모든 데이터가 특정 리전 또는 여러 리전에 유지될 수 있는 방법을 제공합니다. 정책이 여러 리전을 허용하는 경우 Pub/Sub는 허용하는 가장 가까운 리전을 선택합니다.

순서 키가 포함된 메시지를 게시하고 메시지 스토리지 정책이 가장 가까운 리전을 제외하는 경우 Pub/Sub 서비스가 오류를 반환합니다.

주제의 메시지 스토리지 정책은 다음과 같은 방법으로 구성될 수 있습니다.

  • 조직 전체 범위의 주제를 모두 구성하려면 리소스 위치 제한 조직 정책을 사용할 수 있습니다. 조직 전체 정책은 IAM 및 관리자 콘솔조직 정책 섹션에 보관됩니다.

  • 더욱 정밀한 제어를 위해 주제 생성 시 또는 UpdateTopic 작업을 통해 주제의 메시지 스토리지 정책을 구성할 수 있습니다.

새 주제의 메시지 스토리지 정책

  • 주제를 만들 때 메시지 스토리지 정책을 지정하지 않으면 메시지 스토리지 정책은 유효한 리소스 위치 제한 조직 정책에 따라 자동으로 결정됩니다. 유효한 조직 정책이 없으면 메시지 스토리지 정책에 모든 지역이 허용됩니다.

  • 주제를 만들 때 메시지 스토리지 정책을 지정하면 메시지 스토리지 정책에 유효한 리소스 위치 제한 조직 정책에서 허용하는 지역만 포함할 수 있습니다. 유효한 조직 정책이 없으면 메시지 스토리지 정책에 모든 리전이 포함될 수 있습니다.

기존 주제 및 메시지의 메시지 스토리지 정책 업데이트

  • 조직 정책이 업데이트될 때 변경사항이 기존 주제에 자동으로 전파되지 않습니다. 따라서 기존 주제의 메시지 스토리지 정책이 최신 조직 정책과 동기화되지 않을 수 있습니다. 이러한 차이가 발생하는 경우 해결 방법에 대한 자세한 내용은 아래를 참조하세요.

  • 주제의 메시지 스토리지 정책이 업데이트될 때 변경사항이 이미 게시된 메시지에 자동으로 전파되지 않습니다. 이전 정책에 따라 이미 저장된 메시지는 새 정책과 일관되도록 이동되지 않습니다. 변경사항은 업데이트 이후에 게시된 메시지에만 적용됩니다.

메시지 스토리지 정책 구성

메시지 스토리지 정책을 구성하려면 조직 정책과 동기화하거나 주제에 명시적으로 지정하면 됩니다. 다음을 사용하여 정책을 구성할 수 있습니다.

gcloud 도구를 사용하여 주제 메시지 스토리지 정책 업데이트 또는 설정

현재 조직 정책으로 주제의 기존 정책을 업데이트합니다.

gcloud pubsub topics update TOPIC --recompute-message-storage-policy

주제에 명시적인 메시지 스토리지 정책을 허용된 Google Cloud 리전의 목록으로 설정합니다.

gcloud pubsub topics update TOPIC --message-storage-policy-allowed-regions=us-central1,us-east1

이 작업을 수행하면 이후에 us-central1 또는 us-east1에 저장된 주제에 메시지를 게시할 수 있습니다.

조직 및 주제 정책 간의 차이점 보고 해결하기

Cloud Console에는 조직 정책과 개별 주제의 메시지 스토리지 정책 간의 차이점이 표시됩니다. Cloud Console에서 주제의 메시지 스토리지 정책과 조직 정책을 동기화할 수도 있습니다. 주제 수준의 메시지 스토리지 정책은 Cloud Console에서 지정할 수 없습니다.

조직 정책과 동기화되지 않은 주제를 확인하려면 콘솔로 이동하여 정보 패널 오른쪽에 있는 스토리지 정책 탭을 엽니다.

명령줄을 사용하여 현재 정책을 확인할 수도 있습니다.

gcloud pubsub topics describe TOPIC

여러 주제 업데이트

하나 이상의 주제를 업데이트하려면 다음 안내를 따르세요.

  1. 콘솔스토리지 정책 탭으로 이동합니다.
  2. 하나 이상의 주제를 선택합니다.
  3. 업데이트를 클릭합니다.

예외

정책은 허용된 Google Cloud 리전 이름의 목록을 지정합니다. 따라서 다음 항목은 지원되지 않습니다.

  • 제외 목록
  • 영역 또는 멀티 리전 위치

모니터링 및 문제해결

메시지 데이터가 저장된 위치를 파악할 수 있도록 다음과 같은 Google Cloud 리전으로 분류된 Pub/Sub 측정항목이 제공됩니다.

확인되지 않은 저장된 메시지 수:

subscription/num_unacked_messages_by_region

저장된 데이터의 양:

subscription/unacked_bytes_by_region

가장 오래된 메시지 날짜:

subscription/oldest_unacked_message_age_by_region

주제와 스냅샷에 유사한 측정항목을 사용할 수 있습니다. 또한 재생을 위해 선택적으로 보관되는 확인된 메시지에 해당 측정항목을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

subscription/num_retained_acked_messages_by_region

다음에 이러한 측정항목을 사용할 수 있습니다.

  • 전 세계에 데이터가 배포되는 방식을 이해합니다.
  • 게시자 및 구독자 배포 위치를 해당 데이터를 기준으로 최적화합니다.

성능 및 가용성에 미치는 영향

메시지 스토리지 정책은 전체 SLA에 영향을 미치지 않지만 게시자 또는 구독자가 Google Cloud 외부 또는 정책이 허용되지 않는 리전에서 실행하는 경우 가용성 제어 기능이 저하됩니다. 메시지 스토리지 정책이 허용하는 리전 집합 내에서 게시자 클라이언트를 실행하는 사용자는 서비스 지연이나 가용성의 변화를 확인할 수 없습니다.

이러한 장단점을 이해하려면 게시 요청이 라우팅되는 방법을 고려할 필요가 있습니다. 일반적으로 Pub/Sub는 메시지를 요청 출처와 최대한 가깝게 저장하려고 합니다. Google Cloud 내에서 발생한 요청은 일반적으로 같은 리전의 Pub/Sub 인스턴스에 바인딩됩니다. 게시자가 단일 리전에 있는 경우 메시지 스토리지 정책에 리전을 더 추가하는 방법으로는 가용성이 높아지지 않습니다. GCP 외부에서 게시하는 경우 Pub/Sub 서비스가 제공되는 근처 GCP 리전으로 요청을 전달하기 위해 추가적인 라우팅 레이어가 관여합니다.

us-central1 리전만 허용하는 메시지 스토리지 정책을 가정해 보겠습니다.

  1. us-east1에서 실행 중인 게시자 클라이언트가 Publish 요청을 실행합니다.
  2. 이 요청이 us-east1에 있는 Pub/Sub 서버로 라우팅됩니다.
  3. us-east1에 데이터를 저장하는 대신 이 요청은 메시지 스토리지 정책이 허용되는 가장 가까운 리전인 us-central1에 라우팅됩니다.
  4. Pub/Sub는 게시된 메시지를 us-central1에 저장하고 해당 위치의 구독자에게 메시지를 전달합니다.

이 메커니즘은 요청 지연 시간과 전체 시스템 가용성에 영향을 미칩니다. 요청이 더 많은 네트워크 링크를 통과하기 때문에 완료하는 데 시간이 오래 걸리고 상대적으로 실패할 가능성이 높아집니다. 즉, 메시지가 전달되기 전에 허용되는 가장 가까운 리전을 거쳐야 하기 때문에 구독자가 메시지를 보는 데 다소 시간이 걸릴 수 있습니다. 정책이 단일 리전을 허용하지만 게시자 애플리케이션이 여러 리전에서 실행되는 경우 배포된 애플리케이션은 허용된 단일 리전에서만 사용할 수 있게 됩니다.