이 페이지에서는 PostgreSQL용 AlloyDB 쓰기 엔드포인트를 사용하여 애플리케이션의 데이터베이스 연결 관리를 간소화하는 방법을 설명합니다.
엔드포인트는 애플리케이션이 AlloyDB 인스턴스에 연결하는 데 사용할 수 있는 안정적인 도메인 이름 서비스 (DNS) 이름을 제공하는 AlloyDB 리소스입니다. 엔드포인트를 사용하면 인스턴스의 특정 IP 주소 또는 URI (Uniform Resource Identifier)에서 애플리케이션을 분리할 수 있습니다. 이 추상화는 애플리케이션의 구성을 변경하지 않고 엔드포인트의 DNS 이름을 다른 인스턴스로 리디렉션할 수 있으므로 운영 이벤트(예: 재해 복구, 백업 복원 또는 이전) 중에 연결 관리를 간소화합니다.
AlloyDB 엔드포인트는 WRITE_ENDPOINT 유형을 지원합니다. 쓰기 엔드포인트는 트래픽을 단일 AlloyDB 기본 인스턴스로 전달하고 읽기 및 쓰기 트래픽을 모두 처리합니다.
DNS 이름은 전역 리소스로 작동하지만 엔드포인트 리소스 자체는 리전별입니다. 그럼에도 각 엔드포인트는 전역으로 인스턴스에 연결할 수 있으며 DNS 이름은 어느 위치에서나 확인됩니다.
엔드포인트 사용의 이점
쓰기 엔드포인트를 사용하면 다음과 같은 이점이 있습니다.
- 간소화된 재해 복구: 보조 클러스터로 전환하거나 리전 간 장애 조치를 수행하면 AlloyDB가 새 기본 인스턴스를 가리키도록 엔드포인트를 자동으로 업데이트합니다. 그러면 애플리케이션이 동일한 엔드포인트 DNS 이름을 사용하여 다시 연결할 수 있으므로 복구 시간 목표 (RTO)가 단축됩니다.
- 원활한 백업 복구: 백업에서 인스턴스를 복원하면 AlloyDB에서 새 IP 주소로 새 인스턴스를 만듭니다. 새로 복원된 인스턴스를 가리키도록 엔드포인트를 업데이트할 수 있습니다. 이렇게 하면 애플리케이션이 구성 변경 없이 작업을 재개할 수 있습니다.
- 간편한 마이그레이션: 마이그레이션 중에 애플리케이션 중단을 최소화하면서 엔드포인트를 소스 데이터베이스에서 AlloyDB 인스턴스로 전환할 수 있습니다.
제한사항
- 엔드포인트는 비공개 서비스 액세스 (PSA)를 사용하도록 구성된 인스턴스만 지원합니다. 엔드포인트는 Private Service Connect (PSC)를 사용하도록 구성된 인스턴스를 지원하지 않습니다.
- 쓰기 엔드포인트에는 AlloyDB 언어 커넥터와 AlloyDB 인증 프록시가 지원되지 않습니다.
- 동일한 대상 인스턴스를 가리키는 엔드포인트에 대한 동시 수정 작업 (예: 동시 업데이트 또는 업데이트 및 삭제 작업)은 지원되지 않으며 실패할 수 있습니다.
시작하기 전에
- Google Cloud CLI를 설치하고 초기화합니다.
- Cloud DNS API를 사용 설정합니다.
- 엔드포인트의 타겟으로 사용할 기존 AlloyDB 인스턴스가 있는지 확인합니다.
엔드포인트를 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 AlloyDB 관리자 (
roles/alloydb.admin) Identity and Access Management (IAM) 역할을 부여해 달라고 요청하세요. 이 사전 정의된 역할에는 엔드포인트를 관리하는 데 필요한 권한이 포함되어 있습니다.커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다. 필요한 구체적인 권한은 다음과 같습니다.
alloydb.endpoints.createalloydb.endpoints.updatealloydb.endpoints.getalloydb.endpoints.listalloydb.endpoints.delete
자세한 내용은 AlloyDB IAM 역할 및 권한을 참고하세요.
Google Cloud CLI를 사용하여 쓰기 엔드포인트를 만들고 관리할 수 있습니다.
엔드포인트 만들기
쓰기 엔드포인트를 만들려면 Google Cloud CLI를 사용하세요. 엔드포인트 유형은 WRITE_ENDPOINT이어야 하며 단일 기본 인스턴스를 타겟팅해야 합니다.
콘솔
Google Cloud 콘솔에서 엔드포인트 페이지로 이동합니다.
엔드포인트 만들기를 클릭합니다.
엔드포인트 이름 필드에 엔드포인트의 ID를 입력합니다. 소문자 (a~z), 숫자, 하이픈으로 구성되어야 하며 소문자로 시작하고 소문자 또는 숫자로 끝나야 합니다.
리전을 선택합니다.
엔드포인트 유형에서 쓰기를 선택합니다.
대상 인스턴스 필드에서 이 엔드포인트가 가리켜야 하는 기본 인스턴스를 선택합니다.
만들기를 클릭합니다.
gcloud
gcloud beta alloydb endpoints create ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--endpoint-type=ENDPOINT_TYPE \
--target-instances=TARGET_INSTANCE_NAME
다음을 바꿉니다.
ENDPOINT_ID: 엔드포인트의 고유 식별자입니다. 이 ID는 지정된 프로젝트와 위치 내에서 고유해야 합니다.PROJECT_ID: Google Cloud 프로젝트 ID입니다.REGION_ID: 엔드포인트를 만들려는 리전의 ID입니다(예:us-central1).ENDPOINT_TYPE: 엔드포인트 리소스의 유형입니다.WRITE_ENDPOINT만 지원됩니다.TARGET_INSTANCE_NAME: 엔드포인트가 가리키는 PostgreSQL용 AlloyDB 인스턴스의 전체 리소스 이름입니다. 인스턴스의 전체 리소스 경로는projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER/instances/$INSTANCE형식입니다.
엔드포인트를 사용하여 인스턴스에 연결
엔드포인트를 사용하여 AlloyDB 인스턴스에 연결하려면 먼저 엔드포인트와 연결된 자동 생성 DNS 이름을 가져와야 합니다.
DNS 이름 가져오기
Google Cloud CLI를 사용하여 엔드포인트의 DNS 이름을 볼 수 있습니다.
콘솔
Google Cloud 콘솔에서 엔드포인트 페이지로 이동합니다.
연결할 엔드포인트를 찾아 DNS 이름 열의 값을 복사합니다.
gcloud
gcloud beta alloydb endpoints describe명령어를 사용합니다.gcloud beta alloydb endpoints describe ENDPOINT_ID \ --project=PROJECT_ID \ --region=REGION_ID다음을 바꿉니다.
ENDPOINT_ID: 엔드포인트의 IDPROJECT_ID: Google Cloud 프로젝트 IDREGION_ID: 엔드포인트가 있는 리전의 ID
명령어 출력에서
dnsName필드를 찾아 값을 복사합니다.
psql을 사용하여 연결
DNS 이름을 얻은 후에는 연결 문자열 또는 클라이언트 도구에서 호스트로 사용할 수 있습니다. 예를 들어 psql 클라이언트를 사용하여 연결하려면 다음 명령어를 실행합니다.
psql -h DNS_NAME -U USERNAME -d DATABASE_NAME
다음을 바꿉니다.
DNS_NAME: 엔드포인트의 DNS 이름USERNAME: 연결할 데이터베이스 사용자DATABASE_NAME: 연결할 데이터베이스의 이름입니다.
psql 사용에 대한 자세한 내용은 psql 클라이언트를 사용하여 연결을 참고하세요.
엔드포인트 업데이트
복원 작업 후와 같이 엔드포인트가 가리키는 인스턴스를 변경하려면 다음 명령어를 사용하세요.
콘솔
Google Cloud 콘솔에서 엔드포인트 페이지로 이동합니다.
업데이트할 엔드포인트 행에서 작업을 클릭한 후 수정을 선택합니다.
대상 인스턴스 필드에서 이 엔드포인트가 가리켜야 하는 새 기본 인스턴스를 선택합니다.
업데이트를 클릭합니다.
gcloud
gcloud beta alloydb endpoints update ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--target-instances=NEW_TARGET_INSTANCE_NAME
다음을 바꿉니다.
ENDPOINT_ID: 업데이트할 엔드포인트의 IDPROJECT_ID: Google Cloud 프로젝트 IDREGION_ID: 엔드포인트가 있는 리전의 IDNEW_TARGET_INSTANCE_NAME: 새 타겟 인스턴스의 전체 리소스 이름
엔드포인트 나열
특정 프로젝트와 리전의 모든 엔드포인트를 나열하려면 다음 명령어를 사용합니다.
콘솔
Google Cloud 콘솔에서 엔드포인트 페이지로 이동합니다.
페이지에 현재 프로젝트의 모든 엔드포인트가 나열됩니다.
gcloud
gcloud beta alloydb endpoints list --project=PROJECT_ID \
--region=REGION_ID
다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트 IDREGION_ID: 엔드포인트가 있는 리전의 ID
엔드포인트 세부정보 보기
특정 엔드포인트의 세부정보를 보려면 다음 Google Cloud CLI 명령어를 사용하세요.
gcloud
gcloud beta alloydb endpoints describe ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID
다음을 바꿉니다.
ENDPOINT_ID: 설명할 엔드포인트의 IDPROJECT_ID: Google Cloud 프로젝트 IDREGION_ID: 엔드포인트가 있는 리전의 ID
Google Cloud 콘솔의 엔드포인트 페이지에서 엔드포인트 세부정보를 확인할 수 있습니다.
엔드포인트 삭제
엔드포인트를 삭제하려면 다음 명령어를 사용합니다.
콘솔
Google Cloud 콘솔에서 엔드포인트 페이지로 이동합니다.
삭제하려는 엔드포인트 행에서 작업을 클릭한 다음 삭제를 선택합니다.
확인하려면 엔드포인트 ID를 입력한 다음 삭제를 클릭합니다.
gcloud
gcloud beta alloydb endpoints delete ENDPOINT_ID \
--project=PROJECT_ID \
--region=REGION_ID
다음을 바꿉니다.
ENDPOINT_ID: 삭제할 엔드포인트의 ID입니다.PROJECT_ID: Google Cloud 프로젝트 IDREGION_ID: 엔드포인트가 있는 리전의 ID
전환 또는 교차 리전 장애 조치 중 쓰기 엔드포인트 동작
엔드포인트의 DNS 이름은 생성 시 특정 인스턴스의 IP로 확인되지만 이러한 엔드포인트는 동적입니다. 전환 또는 리전 간 장애 조치(미리보기)와 같은 리전 간 복제 활동이 있는 경우 AlloyDB 쓰기 엔드포인트는 수동 개입 없이 지속적인 연결을 보장합니다. 보조 클러스터가 승격되어 새 기본 클러스터가 되면 엔드포인트가 새 기본 인스턴스를 가리키도록 DNS 레코드를 자동으로 업데이트합니다. 이 동작은 애플리케이션 연결 문자열의 수동 재구성을 없애 운영 복잡성을 크게 줄이고 복구 시간 목표 (RTO)를 충족하기 위해 다운타임을 최소화합니다.
작업과 DNS 전파가 완료되면 동일한 엔드포인트 DNS 이름을 사용하여 애플리케이션을 새 기본 인스턴스에 다시 연결할 수 있습니다.
장애 조치 중에 충돌하는 쓰기 방지
리전 간 장애 조치 중에 쓰기 엔드포인트를 사용하면 새 쓰기 트래픽이 원래 기본 클러스터에서 새 클러스터로 자동으로 전달되어 충돌하는 쓰기를 방지할 수 있습니다. 장애 조치 중 쓰기 엔드포인트 동작에 대한 자세한 내용은 쓰기 엔드포인트를 사용하여 스플릿 브레인 방지를 참고하세요.
다음 단계
- AlloyDB 인스턴스에 연결하는 방법을 자세히 알아보세요.