이 페이지에서는 Memorystore for Redis의 수동 장애 조치 개요를 제공합니다. 장애 조치를 수행하는 방법을 알아보려면 수동 장애 조치 시작을 참조하세요.
수동 장애 조치란?
표준 등급의 Memorystore for Redis 인스턴스는 복제본 노드를 사용하여 기본 노드를 백업합니다. 기본 노드가 비정상 상태가 되면 일반적인 장애 조치가 실행되고 복제본이 새 기본 노드로 지정됩니다. 수동 장애 조치는 사용자가 직접 시작하기 때문에 일반적인 장애 조치와 다릅니다. Memorystore for Redis 복제본의 작동 방식에 대한 자세한 내용은 고가용성을 참조하세요.
수동 장애 조치를 시작하는 이유
수동 장애 조치를 시작하면 애플리케이션이 장애 조치에 응답하는 방식을 테스트할 수 있습니다. 이러한 지식이 있으면 나중에 예기치 않은 장애 조치가 발생할 경우 더 원활하게 장애 조치 프로세스를 수행할 수 있습니다.
선택적 데이터 보호 모드
사용 가능한 두 가지 데이터 보호 모드는 다음과 같습니다.
limited-data-loss
모드 (기본값)force-data-loss
모드
데이터 보호 모드를 설정하려면 다음 명령어 중 하나를 사용하세요.
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
또는
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=force-data-loss
데이터 보호 모드 작동 방식
limited-data-loss
모드는 장애 조치를 시작하기 전에 기본 노드와 복제본 간의 데이터 차이가 30MB 미만인지 확인하여 데이터 손실을 최소화합니다. 복제본과 동기화되어야 하는 데이터 바이트마다 기본 노드의 오프셋이 증가합니다. limited-data-loss
모드에서는 기본 노드와 각 복제본 간의 가장 큰 오프셋 델타가 30MB 이상인 경우 장애 조치가 취소됩니다. 더 많은 데이터 손실을 허용하고 장애 조치를 적극적으로 실행하려면 데이터 보호 모드를 force-data-loss
로 설정해 보세요.
force-data-loss
모드는 장애 조치 전략 체인을 사용하여 장애 조치를 적극적으로 실행합니다. 장애 조치를 시작하기 전에 기본 노드와 복제본 간의 오프셋 델타를 확인하지 않습니다. 30MB 이상의 데이터 변경사항이 손실될 수 있습니다.
복제 대기중인 바이트 측정항목
복제 대기중인 바이트 측정항목은 기본이 완전히 백업되기 전에 복제본이 복사해야 할 나머지 바이트 수를 알려줍니다. 기본 인스턴스가 장애 조치 중에 복제되므로 대기 중인 바이트가 증가합니다. 하드웨어 오류로 장애 조치가 트리거되는 경우 호스트 오류에서 새 복제본이 복구될 때까지 오프셋 값을 가져올 수 없으므로 복제 대기 중인 바이트가 비어 있는 것으로 관찰될 수 있습니다.
인스턴스 세부정보 페이지의 Google Cloud 콘솔에서 이 측정항목에 액세스 할 수 있습니다. 인스턴스 세부정보 페이지를 보려면 프로젝트의 인스턴스 목록 페이지에서 인스턴스 ID를 클릭하세요.
또는 프로젝트의 측정항목 탐색기에 액세스하고 redis.googlapis.com/replication/offset_diff 측정항목을 검색합니다.
수동 장애 조치를 실행하는 경우
기본 limited-data-loss
보호 모드를 사용하는 수동 장애 조치는 복제 대기중인 바이트 측정항목이 30MB 미만인 경우에만 성공합니다. 복제 대기중인 바이트가 30MB보다 큰 경우 수동 장애 조치를 실행하려면 force-data-loss
보호 모드를 사용하세요.
가능한 한 많은 데이터를 보존하려면 애플리케이션이 Redis 인스턴스에 쓰는 것을 일시적으로 중지하고 복제 대기중인 바이트 측정항목이 허용되는 수준까지 낮아질 때까지 기다렸다가 수동 장애 조치를 실행합니다.
수동 장애 조치를 차단하는 잠재적 문제
기본 등급 인스턴스에는 기본 노드에 장애 조치를 수행할 수 있는 복제본이 없으므로 기본 등급 인스턴스에서 수동 장애 조치를 실행하면 작동하지 않습니다.
Redis 인스턴스가 비정상적인 경우 데이터 손실 최소화를 위해 차단되므로 제한된 데이터 손실 수동 장애 조치 작업이 실패합니다.
무기한 실행되는 Lua 스크립트를 실행하는 경우
force-data-loss
를 사용하여 장애 조치를 시작해야 합니다. 이 경우 제한된 데이터 손실 장애 조치 작업이 성공적으로 완료되지 않습니다.인스턴스에 대기중인 불완전한 작업(예: 확장 또는 업데이트)이 있는 경우 수동 장애 조치 작업이 차단됩니다. 수동 장애 조치를 실행하려면 인스턴스가
READY
상태가 될 때까지 기다려야 합니다.
클라이언트 애플리케이션 연결
기본 노드가 복제본으로 장애 조치하면 Memorystore for Redis에 대한 기존 연결이 끊깁니다. 그러나 다시 연결할 때 애플리케이션은 동일한 연결 문자열 또는 IP 주소를 사용하여 자동으로 새 기본 노드로 리디렉션됩니다.
수동 장애 조치 확인
Google Cloud 콘솔 또는 gcloud
를 사용하여 수동 장애 조치 작업의 성공 여부를 확인할 수 있습니다.
Google Cloud 콘솔 확인
수동 장애 조치를 시작하기 전에 Memorystore for Redis 인스턴스 목록 페이지로 이동하여 인스턴스 이름을 클릭합니다.
그런 다음 구성 탭의 기본 위치 옆에 있는 영역에서 기본 노드가 있는 영역을 확인합니다. 영역(zone)을 기록해 두세요. 수동 장애 조치가 완료되면 완료할 때 이 페이지를 다시 확인하여 기본 노드가 영역을 전환했는지 확인합니다.
Cloud Monitoring 확인
측정항목 탐색기를 사용하여 모니터링 리소스의 측정항목을 확인하려면 다음을 수행하세요.
-
Google Cloud 콘솔에서 leaderboard 측정항목 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.
- 측정항목 요소에서 측정항목 선택 메뉴를 펼치고 필터 표시줄에
Node role
을 입력한 후 하위 메뉴를 사용하여 특정 리소스 유형과 측정항목을 선택합니다.- 활성 리소스 메뉴에서 Cloud Memorystore Redis를 선택합니다.
- 활성 측정항목 카테고리 메뉴에서 복제를 선택합니다.
- 활성 측정항목 메뉴에서 노드 역할을 선택합니다.
- 적용을 클릭합니다.
디스플레이에서 시계열을 삭제하려면 필터 요소를 사용합니다.
시계열을 조합하려면 집계 요소의 메뉴를 사용합니다. 예를 들어 VM의 CPU 사용률을 영역에 따라 표시하려면 첫 번째 메뉴를 평균으로, 두 번째 메뉴를 영역으로 설정합니다.
집계 요소의 첫 번째 메뉴가 집계되지 않음으로 설정되면 모든 시계열이 표시됩니다. 집계 요소 기본 설정은 선택한 측정항목 유형에 따라 결정됩니다.
- 하루에 샘플 하나를 보고하는 할당량과 기타 측정항목의 경우 다음을 수행합니다.
- 표시 창에서 위젯 유형을 누적 막대 그래프로 설정합니다.
- 기간을 최소 1주일로 설정합니다.
Cloud Monitoring 차트는 기본 및 복제본 노드를 두 줄로 나타냅니다. 차트에서 노드 줄의 값이 0이면 복제본 노드입니다. 차트에서 노드 줄의 값이 1이면 기본 노드입니다. 이 차트는 줄이 1에서 0으로, 0에서 1로 각각 전환되는 방법을 보여주는 방식으로 장애 조치를 나타냅니다.
gcloud
확인
수동 장애 조치를 시작하기 전에 다음 명령어를 사용하여 기본 노드가 있는 영역을 확인합니다.
gcloud redis instances describe [INSTANCE_ID] --region=[REGION]
기본 노드는 currentLocationId
라벨이 지정된 영역에 있습니다. 영역(zone)을 기록해 두세요.
수동 장애 조치를 완료한 후 gcloud redis instances describe
명령어를 다시 실행하고 currentLocationId
가 영역을 변경했는지 확인하여 기본 노드가 새 영역으로 전환되었는지 확인할 수 있습니다.
또한 locationId
라벨은 기본 노드를 처음 프로비저닝한 영역을 알려줍니다. alternativeLocationId
라벨은 시스템이 복제본 노드를 처음 프로비저닝한 영역을 알려줍니다. 장애 조치가 발생할 때마다 이러한 두 영역 간에 기본 및 복제본과 복제본이 전환됩니다. 하지만 locationId
및 alternativeLocationId
와 연결된 영역은 변경되지 않습니다.