중단 후 기본 데이터센터 복원
중단 후 기본 데이터센터 복원
이 문서는 장애 후 기본 데이터센터를 복원하는 과정을 설명해요. 데이터센터 노드를 재배포하고, 스냅샷을 복원하고, ACL 에이전트 토큰을 설정한 뒤 서버와 클라이언트를 롤링 재시작하는 과정을 거친답니다.
출처: 문서
본문
이 문서는 장애 후 기본 데이터센터를 복원하는 과정을 설명합니다.
소개 (Introduction)
기본 데이터센터가 장애 후 요청을 제공할 수 없을 때 가능한 시나리오는 두 가지입니다.
- 기본 데이터센터에서 쿼럼(quorum) 상실. 데이터센터에 N(전체 서버 수)개의 서버 중 (N/2)+1개 미만의 서버만 사용 가능합니다. 일부 노드는 영향을 받지 않지만 쿼럼을 구성할 만큼 충분한 정상 노드가 없습니다.
- 기본 데이터센터의 완전한 상실. 시설의 재해 이벤트가 클러스터를 완전히 지우거나, 클라우드 공급자에서 주요 장애가 발생한 경우입니다.
Consul에서 기본 데이터센터는 환경의 유일한 데이터센터를 말할 수도 있고, WAN 페더레이션 환경의 주요 데이터센터를 말할 수도 있습니다.
기본 데이터센터에서 쿼럼 상실
기본 데이터센터가 쿼럼에 도달할 수 없을 만큼 충분한 서버를 잃었다면, 전체 데이터센터가 사용 불가능한 것처럼 서비스 장애를 경험하게 됩니다.
장애가 서버 노드로 제한되거나 클라이언트 플릿에 심각한 영향을 미치지 않았다면, 쿼럼을 다시 구성하여 운영을 재개할 수 있습니다.
Outage Recovery 튜토리얼은 서버 노드를 복원하고 raft 클러스터를 재구성하여 리더를 선출하도록 하는 가이드를 제공합니다.
클러스터가 쿼럼을 다시 확보하고 데이터센터가 운영되면 장애의 영향을 받은 클라이언트 에이전트를 다시 시작할 수 있습니다. 클라이언트 에이전트는 서버 노드에 조인하여 운영을 재개해야 합니다.
기본 데이터센터의 완전한 상실
Consul 환경에서 최악의 시나리오는 기본 데이터센터의 상실입니다.
상실된 데이터센터를 가능한 한 빨리 복원하는 것을 목표로 해야 합니다.
기본 데이터센터 복원
기본 데이터센터가 완전한 장애를 겪은 후 Consul 환경을 복원하려면 다음 단계를 완료하세요.
- 데이터센터 노드 복원.
- 마지막 스냅샷 복원을 새로 복구된 데이터센터에 수행.
- 서버에 Consul ACL 에이전트 토큰 설정.
- 서버의 롤링 재시작 수행.
- 클라이언트의 롤링 재시작 수행.
- 페더레이션 환경이라면 복원 후 마지막 단계로 페더레이션 복원 및 검증.
데이터센터 노드 복원
복구의 첫 번째 단계는 Consul 데이터센터를 다시 배포하는 것입니다. Consul 데이터센터의 초기 배포에 사용한 것과 같은 과정을 따를 수 있습니다.
다운타임을 줄이고 사람의 실수를 방지하기 위해 이 과정을 가능한 한 자동화하는 것이 좋습니다.
새 배포가 페더레이션된 보조 데이터센터와 통신하려면 복구된 데이터센터가 다음을 동일하게 사용해야 합니다.
- CA 인증서
- CA 키
- Gossip 암호화 키
이 과정을 자동화하는 한 가지 방법은 Vault를 사용하여 Consul 에이전트용 mTLS 인증서를 생성하고 Consul 서비스 메시 인증 기관으로 운영하는 것입니다.
스냅샷 복원
데이터센터를 재배포한 후 consul snapshot restore 명령으로 최신 스냅샷을 복원하세요.
$ consul snapshot restore -token=<value> backup.snap
Restored snapshot
스냅샷 복원 절차에 사용하는 token은 새로 복원된 데이터센터에 대해 유효해야 합니다. 복원된 데이터센터에 ACL이 활성화되어 있지 않으면 토큰 없이 스냅샷을 복원할 수 있습니다.
Consul ACL 에이전트 토큰 설정
새로 재시작된 노드에는 데이터센터에 성공적으로 조인하는 데 필요한 ACL 토큰이 없습니다.
consul acl 명령으로 서버 노드의 토큰을 설정하려면 acl = write 권한이 있는 토큰이 필요합니다. 스냅샷이 복원되면 ACL 시스템에는 장애 전에 만든 토큰이 포함됩니다. 장애 전에 데이터센터에 있던 관리 토큰을 계속 사용할 수 있습니다. 이를 CONSUL_HTTP_TOKEN 환경 변수에 설정하거나 -token= 명령 매개변수로 직접 전달하세요.
장애로 관리 토큰을 잃었다면 Access Control List (ACL) 시스템 재설정으로 새 토큰을 생성할 수 있습니다.
먼저 데이터센터에서 사용 가능한 토큰을 검색합니다.
$ consul acl token list
...
AccessorID: 6e5516f1-c29d-4503-82bc-016f7957a5c9
Description: consul-server-0 agent token
Local: false
Create Time: 2025-09-25 15:31:42.146542875 +0000 UTC
Legacy: false
Policies:
036c181a-1afe-4a6e-bdb1-2d553f36327d - acl-policy-server-node
...
그런 다음 AccessorID로 토큰을 검색합니다.
$ consul acl token read -id 6e5516f1-c29d-4503-82bc-016f7957a5c9
AccessorID: 6e5516f1-c29d-4503-82bc-016f7957a5c9
SecretID: e26bd23e-5edd-4aa4-bf7d-3ef5963e0ec0
Description: consul-server-0 agent token
Local: false
Create Time: 2025-09-25 15:31:42.146542875 +0000 UTC
Policies:
036c181a-1afe-4a6e-bdb1-2d553f36327d - acl-policy-server-node
마지막으로 서버에 토큰을 적용합니다.
$ consul acl set-agent-token agent e26bd23e-5edd-4aa4-bf7d-3ef5963e0ec0
ACL token "agent" set successfully
각 서버 노드가 데이터센터에 성공적으로 다시 조인하려면 각 서버 노드에 토큰을 설정해야 합니다. 구성에 따라 각 서버마다 다른 토큰을 가질 수도 있고, 모든 서버 에이전트에 같은 토큰을 재사용할 수도 있습니다. 두 경우 모두 토큰을 모든 서버 에이전트에 설정해야 합니다. 그렇지 않으면 데이터센터에 성공적으로 조인할 수 없습니다.
서버의 롤링 재시작 수행
스냅샷에서 복원하고 모든 노드에 토큰을 설정한 후에는 중복 노드 ID를 나타내는 서버 로그의 오류를 관찰할 수 있습니다. 이 오류는 서버가 재설치 시 새 노드 ID를 받았는데, 이 ID가 스냅샷에 저장된 ID와 다르기 때문에 발생합니다.
...
[WARN] agent.fsm: EnsureRegistration failed: error="failed inserting node: Error while renaming Node ID: "88855b78-1459-4d03-aa88-a7078a3798f0": Node name consul-server-0 is reserved by node a12b2c56-7a94-4ea2-b29b-ca8f48139c77 with name consul-server-0 (172.20.0.10)"
[WARN] agent.fsm: EnsureRegistration failed: error="failed inserting node: Error while renaming Node ID: "3d2df283-109b-4595-9279-d274a3c225ba": Node name consul-server-1 is reserved by node 6a361f2f-4e1e-4ee2-a836-20a7d85eb9e9 with name consul-server-1 (172.20.0.9)"
[WARN] agent.fsm: EnsureRegistration failed: error="failed inserting node: Error while renaming Node ID: "39dbf0d7-51a9-4b8a-a4cc-5a937e0e405f": Node name consul-server-2 is reserved by node 520a29ee-43e0-4d50-89e5-df72d8746c92 with name consul-server-2 (172.20.0.14)"
...
이 오류를 해결하려면 각 서버에서 consul leave를 수행한 다음 서버를 다시 시작하세요. 한 서버씩 수행하세요. 모든 서버를 다시 시작하면 노드 ID가 예상 값으로 설정되고 로그의 오류가 해결됩니다.
이 오류에 대한 자세한 내용과 해결 방법은 Snapshot restore error를 참조하세요.
클라이언트의 롤링 재시작 수행
클라이언트 노드에도 동일한 노드 ID 오류가 나타납니다. 서버 재시작을 완료한 후 클라이언트에 동일한 작업을 수행하여 로그 오류를 해결하세요.
페더레이션 복원 및 검증
페더레이션 환경이라면 기본 데이터센터가 복원될 때 Consul 서버 에이전트의 IP 주소가 변경되었을 수 있습니다.
보조 데이터센터에서 서버 에이전트를 구성한 방식에 따라 보조 데이터센터 구성을 업데이트하여 페더레이션을 다시 구축해야 할 수도 있습니다.
자세한 내용은 Loss of federation due to primary datacenter restore를 참조하세요.
추가 지침 (Additional guidance)
이 페이지에서 언급한 개념에 익숙해지려면 재해 복구 튜토리얼을 시도해 볼 수 있습니다.