이 페이지에서는 Kubernetes 기반 AlloyDB Omni 데이터베이스 클러스터에서 고가용성 (HA)을 사용 설정하고 테스트하는 방법을 보여줍니다. 여기에 설명된 태스크를 실행하려면 Kubernetes 매니페스트 파일을 적용하고 kubectl
명령줄 도구를 사용하는 방법에 관한 기본 지식이 필요합니다.
개요
AlloyDB Omni Kubernetes 연산자로 기본 데이터베이스 인스턴스의 스탠바이 복제본을 만들도록 지시하여 데이터베이스 클러스터에서 HA를 사용 설정할 수 있습니다. AlloyDB Omni Operator는 이 복제본의 데이터를 지속적으로 업데이트하도록 데이터베이스 클러스터를 구성하여 기본 인스턴스의 모든 데이터 변경사항과 일치시킵니다.
HA 사용 설정
데이터베이스 클러스터에서 HA를 사용 설정하기 전에 Kubernetes 클러스터에 다음이 있는지 확인합니다.
- 데이터의 전체 사본 2개를 위한 스토리지
- 동시에 실행되는 두 데이터베이스 인스턴스의 컴퓨팅 리소스
HA를 사용 설정하려면 다음 단계를 따르세요.
spec
섹션 아래에availability
섹션을 포함하도록 데이터베이스 클러스터의 매니페스트를 수정합니다. 이 섹션에서는numberOfStandbys
매개변수를 설정하여 추가할 대기 모드 수를 정의합니다.spec: availability: numberOfStandbys: NUMBER_OF_STANDBYS
NUMBER_OF_STANDBYS
를 추가하려는 대기 모드 수로 바꿉니다. 최댓값은5
입니다. HA를 설정하고 필요한 대기 모드의 수가 확실하지 않은 경우 먼저 값을1
또는2
로 설정합니다.매니페스트를 다시 적용합니다.
HA 사용 중지
HA를 사용 중지하려면 다음 단계를 따르세요.
클러스터의 매니페스트에서
numberOfStandbys
를0
로 설정합니다.spec: availability: numberOfStandbys: 0
매니페스트를 다시 적용합니다.
데이터베이스 클러스터에서 HA 확인
데이터베이스 클러스터의 현재 HA 상태를 보려면 해당 클러스터 상태의 HAReady
조건을 확인합니다. 이 값의 status
가 True
로 설정된 경우 HA가 데이터베이스 클러스터에 설정되어 작동 중입니다.
명령줄에서 이 값을 확인하려면 다음 명령어를 실행합니다.
kubectl get dbcluster.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o jsonpath={.status.conditions[?(@.type == \'HAReady\')]} -n NAMESPACE
다음을 바꿉니다.
DB_CLUSTER_NAME
: 데이터베이스 클러스터의 이름입니다.NAMESPACE
: 데이터베이스 클러스터의 네임스페이스입니다.
대기 인스턴스로 장애 조치
기본 인스턴스를 90초 넘게 사용할 수 없게 되면 AlloyDB Omni Operator가 기본 데이터베이스 인스턴스에서 대기 인스턴스로 자동으로 장애 조치됩니다.
장애 조치는 백업이 완전히 업데이트되기 전에 기본 데이터베이스를 사용할 수 없게 된 경우 소량의 데이터가 손실될 수 있더라도 예기치 않은 장애로부터 빠르게 복구하고 다운타임을 최소화하려는 경우에 적합한 옵션입니다.
AlloyDB Omni Operator는 자동 및 수동 장애 조치를 모두 지원합니다. 자동 장애 조치는 기본적으로 사용 설정되어 있습니다.
장애 조치의 결과 다음과 같은 이벤트 시퀀스가 발생합니다.
AlloyDB Omni 운영자는 기본 데이터베이스 인스턴스를 오프라인으로 전환합니다.
AlloyDB Omni 운영자는 대기 복제본을 새 기본 데이터베이스 인스턴스로 승격합니다.
AlloyDB Omni 운영자는 이전 기본 데이터베이스 인스턴스를 삭제합니다.
AlloyDB Omni 운영자가 새 대기 모드 복제본을 만듭니다.
자동 장애 조치 사용 중지
자동 페일오버는 데이터베이스 클러스터에서 기본적으로 사용 설정되어 있습니다.
페일오버를 사용 중지하려면 다음 단계를 따르세요.
클러스터의 매니페스트에서
enableAutoFailover
를false
로 설정합니다.spec: availability: enableAutoFailover: false
매니페스트를 다시 적용합니다.
수동 장애 조치 트리거
수동 장애 조치를 트리거하려면 새 장애 조치 리소스의 매니페스트를 만들고 적용합니다.
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Failover
metadata:
name: FAILOVER_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
다음을 바꿉니다.
FAILOVER_NAME
: 이 리소스의 이름입니다(예:failover-1
).NAMESPACE
: 이 페일오버 리소스의 네임스페이스로, 적용되는 데이터베이스 클러스터의 네임스페이스와 일치해야 합니다.DB_CLUSTER_NAME
: 장애 조치할 데이터베이스 클러스터의 이름입니다.
페일오버를 모니터링하려면 다음 명령어를 실행합니다.
kubectl get failover FAILOVER_NAME -o jsonpath={.status.state} -n NAMESPACE
다음을 바꿉니다.
FAILOVER_NAME
: 만들 때 페일오버 리소스에 할당한 이름입니다.NAMESPACE
: 데이터베이스 클러스터의 네임스페이스입니다.
새 기본 데이터베이스 인스턴스를 사용할 준비가 되면 명령어는 Success
를 반환합니다. 새 대기 인스턴스의 상태를 모니터링하려면 다음 섹션을 참고하세요.
대기 인스턴스로 전환
전환은 재해 복구 설정 또는 기본 데이터베이스와 대기 복제본의 역할을 전환해야 하는 기타 계획된 활동을 테스트하려는 경우에 실행됩니다.
전환이 완료되면 기본 데이터베이스 인스턴스와 대기 복제본의 역할이 복제 방향과 함께 반전됩니다. 데이터 손실 없이 재해 복구 설정을 테스트하는 프로세스를 더 효과적으로 관리하려면 전환을 선택해야 합니다.
AlloyDB Omni Operator는 수동 전환을 지원합니다.
전환 시 다음과 같은 순서로 이벤트가 발생합니다.
AlloyDB Omni 운영자는 기본 데이터베이스 인스턴스를 오프라인으로 전환합니다.
AlloyDB Omni 운영자는 대기 복제본을 새 기본 데이터베이스 인스턴스로 승격합니다.
AlloyDB Omni 운영자는 이전 기본 데이터베이스 인스턴스를 대기 복제본으로 전환합니다.
전환 수행
전환을 수행하기 전에 다음을 확인하세요.
- 기본 데이터베이스 인스턴스와 대기 복제본이 모두 정상 상태인지 확인합니다. 자세한 내용은 AlloyDB Omni 관리 및 모니터링을 참고하세요.
- 현재 HA 상태가
HAReady
상태인지 확인합니다. 자세한 내용은 데이터베이스 클러스터에서 HA 확인을 참고하세요.
전환을 실행하려면 새 전환 리소스의 매니페스트를 만들고 적용합니다.
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Switchover
metadata:
name: SWITCHOVER_NAME
spec:
dbclusterRef: DB_CLUSTER_NAME
NewPrimary: STANBDY_REPLICA_NAME
다음을 바꿉니다.
SWITCHOVER_NAME
: 이 전환 리소스의 이름입니다(예:switchover-1
).DB_CLUSTER_NAME
: 전환 작업이 적용되는 기본 데이터베이스 인스턴스의 이름입니다.STANBDY_REPLICA_NAME
: 새 기본으로 승격할 데이터베이스 인스턴스의 이름입니다.대기 중인 복제본 이름을 확인하려면 다음 명령어를 실행합니다.
posix-terminal kubectl get instances.alloydbomni.internal.dbadmin.goog
대기 모드 복제본을 읽기 전용 인스턴스로 사용
대기 중인 복제본을 읽기 전용 인스턴스로 사용하려면 다음 단계를 완료하세요.
데이터베이스 클러스터의 매니페스트를 수정하여
enableStandbyAsReadReplica
매개변수를true
로 설정합니다.spec: availability: enableStandbyAsReadReplica: true
매니페스트를 다시 적용합니다.
읽기 전용 엔드포인트가
DBCluster
객체의status
필드에 보고되는지 확인합니다.kubectl describe dbcluster -n NAMESPACE DB_CLUSTER_NAME
다음 응답 예시는 읽기 전용 인스턴스의 엔드포인트를 보여줍니다.
Status: [...] Primary: [...] Endpoints: Name: Read-Write Value: 10.128.0.81:5432 Name: Read-Only Value: 10.128.0.82:5432