WAL 로그스토어에서 BoltDB로 전환

WAL 로그스토어에서 BoltDB로 전환 (Revert)

이 주제에서는 Consul 스토리지 백엔드를 WAL LogStore 백엔드에서 BoltDB로 되돌리는 방법을 설명해요. 서버를 정상 종료하고 데이터 디렉터리를 옮긴 뒤 구성을 업데이트하고 다시 시작하는 순서로 진행해요.

출처: 문서

본문

이 주제에서는 Consul 스토리지 백엔드를 WAL LogStore 백엔드에서 BoltDB로 되돌리는 방법을 설명합니다.

BoltDB로 되돌리는 전체 과정은 다음 단계로 구성됩니다. 되돌려야 하는 모든 Consul 서버에 대해 단계를 반복하세요.

  1. 대상 서버를 정상적으로 중지합니다.
  2. 대상 서버에서 데이터 디렉터리를 제거합니다.
  3. 대상 서버의 구성을 업데이트합니다.
  4. 대상 서버를 시작합니다.

대상 서버를 정상적으로 중지

대상 서버를 정상적으로 중지하세요. 예를 들어 systemd를 사용한다면 다음 명령을 실행합니다.

$ systemctl stop consul

환경이 이 프로세스를 방해할 수 있는 Chef나 Puppet 같은 구성 관리 자동화를 사용한다면 스토리지 백엔드를 완전히 되돌릴 때까지 자동화를 비활성화해야 합니다.

대상 서버에서 데이터 디렉터리 제거

데이터 디렉터리를 다른 위치로 임시로 옮기는 것은 삭제하는 것보다 파괴적이지 않습니다. WAL 활성화가 실패한 경우 데이터 디렉터리를 삭제하는 대신 옮기는 것을 권장합니다. 서버를 다시 시작한 후 복구에는 이전 데이터 디렉터리(/data-dir/raft.bak)를 사용하지 마세요. 결국 이전 디렉터리는 삭제하는 것을 권장합니다.

다음 예시는 서버 구성의 data_dir이 /data-dir이라고 가정하고 이를 /data-dir.wal.bak으로 이름을 변경합니다.

$ mv /data-dir/raft /data-dir/raft.wal.bak

백엔드를 전환할 때는 항상 raft.db 파일이나 wal 디렉터리뿐 아니라 전체 raft 디렉터리를 제거해야 합니다. 로그는 정의되지 않은 동작이나 데이터 손실을 피하기 위해 항상 스냅샷과 일관성을 유지해야 하기 때문입니다.

대상 서버 구성 업데이트

대상 서버의 구성 파일에서 backend를 수정합니다.

raft_logstore {
  backend = "boltdb"
  verification {
    enabled = true
    interval = "60s"
  }
}

대상 서버 시작

대상 서버를 시작하세요. 예를 들어 systemd를 사용한다면 다음 명령을 실행합니다.

$ systemctl start consul

서버가 다시 정상 투표자(voter)가 되는지 확인하세요.

$ consul operator raft list-peers

이전 데이터 디렉터리 정리

필요하다면 raft.wal.bak 디렉터리를 정리하세요. /data-dir을 구성 파일에 지정한 값으로 바꾸세요.

$ rm /data-dir/raft.bak

더 알아보기 (Learn more)