Amazon DocumentDB 장애 조치 - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon DocumentDB 장애 조치

특정 유형의 계획된 유지 관리 또는 예상치 못한 기본 노드 또는 가용 영역 장애의 경우와 같은 특정 경우에 Amazon DocumentDB(MongoDB 호환)는 장애를 감지하고 기본 노드를 대체합니다. 장애 조치를 실시하는 동안 쓰기 시간은 최소화됩니다. 이러한 경우는 기본 노드의 역할이 새 기본 노드를 생성하여 프로비저닝하는 대신 읽기 전용 복제본 중 하나에 장애 조치를 실행하기 때문에 발생합니다. 이 장애 탐지 및 복제본 승격을 통해 승격이 완료되는 즉시 새 기본 노드에 작성을 재개할 수 있습니다.

장애 조치가 작동하려면 클러스터에 최소 두 개의 인스턴스(기본 인스턴스 및 적어도 한 개의 복제본 인스턴스)가 있어야 합니다.

참고

이 주제는 원본 Amazon DocumentDB 인스턴스 기반 클러스터에만 적용됩니다. 탄력적 또는 글로벌 클러스터에는 적용되지 않습니다.

장애 조치 대상 제어

Amazon DocumentDB에서는 장애 조치가 발생할 때 기본 인스턴스로 승격시킬 복제본 인스턴스를 제어하기 위한 수단으로 장애 조치 티어를 제공합니다.

장애 조치 티어

각 복제본 인스턴스는 장애 조치 티어(0–15)와 연결됩니다. 유지 관리 또는 예상치 못한 하드웨어 장애로 인해 장애 조치가 발생하면 기본 인스턴스는 우선 순위가 가장 높은 복제본(가장 낮은 번호의 티어)으로 장애 조치됩니다. 여러 복제본의 우선 순위 티어가 동일한 경우 이전의 기본 인스턴스의 크기와 가장 가까운 티어의 복제본에 기본 인스턴스가 장애 조치됩니다.

선택한 복제본 그룹에 대한 장애 조치 티어를 0(가장 높은 우선 순위)으로 설정하여 장애 조치에서 해당 그룹의 복제본 중 하나를 승격시키도록 할 수 있습니다. 우선 순위가 낮은 티어(높은 번호)를 이러한 복제본에 할당하여 장애 조치 시 특정 복제본이 기본 인스턴스로 승격되지 않도록 효과적으로 차단할 수 있습니다. 이는 애플리케이션에서 특정 복제본의 사용량이 높고 복제본 중 하나에 장애 조치하면 중요 애플리케이션에 부정적인 영향을 미치는 경우에 유용합니다.

인스턴스를 생성할 때 또는 나중에 수정하여 인스턴스의 장애 조치 티어를 설정할 수 있습니다. 인스턴스를 수정하여 인스턴스 장애 조치를 설정하면 장애 조치가 트리거되지 않습니다. 자세한 정보는 다음 주제를 참조하세요.

장애 조치를 수동으로 시작할 때 두 가지 방법, 즉 앞에서 설명한 장애 조치 티어와 --target-db-instance-identifier 파라미터를 사용하여 기본 인스턴스로 승격되는 복제본 인스턴스를 제어할 수 있습니다.

--target-db-instance-identifier

테스트를 위해 failover-db-cluster 연산을 사용하여 장애 조치 이벤트를 강제할 수 있습니다. --target-db-instance-identifier 파라미터를 사용하여 기본 인스턴스로 승격할 복제본을 지정합니다. --target-db-instance-identifier 파라미터 사용이 장애 조치 우선 순위 티어에 우선합니다. --target-db-instance-identifier 파라미터를 지정하지 않은 경우 기본 장애 조치가 장애 조치 우선 순위 티어를 따릅니다.

장애 조치 중에 발생하는 일

장애 조치는 Amazon DocumentDB가 자동적으로 처리하므로 관리자의 개입 없이 애플리케이션에서 최대한 신속하게 데이터베이스 작업을 재개할 수 있습니다.

  • 장애 조치 시 동일하거나 다른 가용 영역에 Amazon DocumentDB 복제본 인스턴스가 있는 경우 Amazon DocumentDB는 인스턴스의 정식 이름 레코드(CNAME)를 플립하여 정상 복제본을 가리키고, 이는 다시 새 기본 복제본으로 승격됩니다. 일반적으로 장애 조치는 처음부터 끝까지 30초 이내에 완료됩니다.

  • Amazon DocumentDB 복제본 인스턴스(예: 단일 인스턴스 클러스터)가 없는 경우 Amazon DocumentDB는 원래 인스턴스와 동일한 가용 영역에 새 인스턴스 생성을 시도합니다. 이와 같은 원래 인스턴스 대체가 최선의 방법이며, 가용 영역에 크게 영향을 주는 문제가 발생하는 경우 등에는 성공하지 못할 수도 있습니다.

데이터베이스 연결이 끊어지는 경우 애플리케이션에서 연결을 다시 시도해야 합니다.

장애 조치 테스트

클러스터에 대한 장애 조치는 클러스터에 있는 Amazon DocumentDB 복제본(읽기 전용 인스턴스) 중 하나를 기본 인스턴스(클러스터 라이터)로 승격시킵니다.

기본 인스턴스가 실패하면 Amazon DocumentDB 복제본이 존재하는 경우 Amazon DocumentDB 복제본으로 Amazon DocumentDB가 자동적으로 장애 조치됩니다. 테스트를 위해 기본 인스턴스의 실패를 시뮬레이션하려는 경우 장애 조치를 강제할 수 있습니다. 클러스터의 각 인스턴스에는 자체적인 엔드포인트 주소가 있습니다. 장애 조치가 완료되면 엔드포인트 주소를 사용하도록 기존 연결을 정리한 후 다시 설정해야 합니다.

장애 조치를 강제하려면 failover-db-cluster 연산을 해당 파라미터와 함께 사용합니다.

  • --db-cluster-identifier - 필수입니다. 장애 조치할 클러스터의 이름입니다.

  • --target-db-instance-identifier—선택 사항. 기본 인스턴스로 승격시킬 인스턴스의 이름입니다.

다음 작업은 sample-cluster 클러스터의 장애 조치를 강제로 실행합니다. 새 기본 인스턴스를 만들 인스턴스를 지정하지 않아 Amazon DocumentDB는 장애 조치 티어 우선 순위에 따라 인스턴스를 선택합니다.

Linux, macOS, Unix의 경우:

aws docdb failover-db-cluster \ --db-cluster-identifier sample-cluster

Windows의 경우:

aws docdb failover-db-cluster ^ --db-cluster-identifier sample-cluster

다음 작업은 sample-cluster-instance를 기본 역할로 승격하도록 지정하여 sample-cluster 클러스터의 장애 조치를 강제로 실행합니다. 출력의 "IsClusterWriter": true를 참고하세요.

Linux, macOS, Unix의 경우:

aws docdb failover-db-cluster \ --db-cluster-identifier sample-cluster \ --target-db-instance-identifier sample-cluster-instance

Windows의 경우:

aws docdb failover-db-cluster ^ --db-cluster-identifier sample-cluster ^ --target-db-instance-identifier sample-cluster-instance

이 작업의 출력은 다음과 같습니다(JSON 형식).

{ "DBCluster": { "HostedZoneId": "Z2SUY0A1719RZT", "Port": 27017, "EngineVersion": "3.6.0", "PreferredMaintenanceWindow": "thu:04:05-thu:04:35", "BackupRetentionPeriod": 1, "ClusterCreateTime": "2018-06-28T18:53:29.455Z", "AssociatedRoles": [], "DBSubnetGroup": "default", "MasterUsername": "master-user", "Engine": "docdb", "ReadReplicaIdentifiers": [], "EarliestRestorableTime": "2018-08-21T00:04:10.546Z", "DBClusterIdentifier": "sample-cluster", "ReaderEndpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "DBClusterMembers": [ { "DBInstanceIdentifier": "sample-cluster-instance", "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "IsClusterWriter": true }, { "DBInstanceIdentifier": "sample-cluster-instance-00", "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "IsClusterWriter": false }, { "DBInstanceIdentifier": "sample-cluster-instance-01", "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "IsClusterWriter": false } ], "AvailabilityZones": [ "us-east-1b", "us-east-1c", "us-east-1a" ], "DBClusterParameterGroup": "default.docdb3.6", "Endpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "IAMDatabaseAuthenticationEnabled": false, "AllocatedStorage": 1, "LatestRestorableTime": "2018-08-22T21:57:33.904Z", "PreferredBackupWindow": "00:00-00:30", "StorageEncrypted": false, "MultiAZ": true, "Status": "available", "DBClusterArn": "arn:aws:rds:us-east-1:123456789012:cluster:sample-cluster", "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-12345678" } ], "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ" } }