etcd(메모리,파일시스템,백업 및 복구)

YYY·2024년 12월 28일

Log(command도 함께 저장)

Etcd 로그 리텐션(Log retention)

-> 기본적으로 log entry를 메모리에 보관
-> 주기적으로 log entry를 파일시스템에 저장(snapshot), memory를 비우는 작업(truncate)
-> snapshot-count라는 옵션으로 얼마나 자주 저장하고 비울 지 정의 - default 100,000(이만큼 차면 스냅샷 생성 후 메모리 지우는)

data

리비전 및 컴팩션(Revision and Compaction)

revision

-> commit된 데이터는 db(파일 시스템)에 보관됨
-> 이때 변경 전 key-value 값도 다 같이 저장됨 - 그걸 revision이라 함

auto compation

-> 주기를 가지고 자동으로 revision을 정리
- 모드에 따라 auto-compaction-retention 옵션이 가지는 의미가 달라짐

1) Revision 모드 - 데이터 양으로 인식
	ex) retention이 1000(1000개면 비울거임)이고 5분마다 500 revision 데이터가 생성된다고 가정하면 5분마다 500 revision이 계속하여 compaction
2) Periodic 모드 - 시간으로 인식
	ex) retention이 1h(1h 지나면 비울거임)이고 30분마다 500 revision 데이터가 생성된다고 가정하면 30분마다 500 revision이 계속하여 compaction
    
 

백업 및 복구(Backup and Restore)

Database backup snapshot != 로그 리텐션(Log retention)
= etcd 프로세스가 commit한 log가 저장된 데이터베이스 파일의 백업
= etcd의 API를 이용한 백업 파일 != 단순하게 etcd 데이터 파일 경로(data dir)에 존재하는 db 파일을 복제(copy)한 것

특징

  1. etcdctl snapshot save 명령으로 만들어짐 - 무결성 해시(hash)를 포함
  2. 추후 etcdctl snapshot restore 명령으로 복구할 때 파일이 변조됐는지 체크가 가능

단계

  1. db 파일을 호스트 OS의 특정 경로(dir)에 옮겨두기
  2. 새로운 etcd를 시작
    단, etcd 클러스터는 새로운 메타데이터로 db를 덮어쓰기(overwrite)하고 동작을 시작하도록 메타데이터 정보를 주어야함

etcd의 메타데이터 = etcd 클러스터를 식별하기 위한 uuid와 etcd 클러스터에 속한 멤버의 uuid가 저장되어있음

profile
무지렁이 탈출기

0개의 댓글