Tech

etcd 백업/복원 하기

hongcoder 2025. 9. 11. 16:24

etcd 백업의 중요성, 아니 etcd의 중요성을 전파하겠음.

내 클러스터가 망가졌을때 etcd 백업이 있으면 충분히 복원이 가능함.. (etcd HA 구성하다 stack 꼬여서 푸는중...)

나같은 경우는 일주일마다 백업 해놔서 벌 받는중임. 하루에 한번씩은 해야할듯

 

구체적인 etcd의 동작 원리는 나중에 기회가 되면 작성하려고 함.

 

간단하게 말하면

Raft 합의 알고리즘을 이용해 여러 노드가 같은 로그(데이터 상태)를 공유하고, 리더가 쓰기를 조정해 항상 일관된 상태를 유지하는 원리임.

한 3년?전 쿠버러버일때 처음 이 개념을 듣고 공부하는데 이해하는데 너무 어려웠음..

 

공부하는데 많이 도움된 사이트

 

Raft

 

thesecretlivesofdata.com

여기서 직관적으로 보다보면 이해 될 수도 있음 난 그랬음.


etcd 툴 설치

etcdctl 이라는 툴을 활용해야함.

3.5 버전 이상 부터는 백업과 복원 명령어가 따로 분리되어 있음 ( etcdctl, etcdutl )

# 툴 다운로드
ETCD_VER=v3.6.4
wget https://github.com/etcd-io/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz

# 압축 해제.
tar xvf etcd-${ETCD_VER}-linux-amd64.tar.gz

# 실행 파일을 /usr/local/bin으로 복사 다른것도 원하면 복사하면 됌.
sudo cp etcd-${ETCD_VER}-linux-amd64/etcdctl /usr/local/bin/

# 설치 확인
etcdctl version

# etcd 경로 설정
export ENDPOINTS="https://127.0.0.1:2379"
export CERT_PATH="/etc/kubernetes/pki/etcd"
export ETCDCTL_CACERT="${CERT_PATH}/ca.crt"
export ETCDCTL_CERT="${CERT_PATH}/peer.crt"
export ETCDCTL_KEY="${CERT_PATH}/peer.key"

# 맴버 확인
etcdctl member list

etcd 백업/복원

# etcd 백업
etcdctl snapshot save /var/lib/backup_$(date +%Y%m%d_%H%M%S).db

# etcdutl 사용
etcdutl snapshot restore --data-dir <백업폴더만드는경로 ex) /var/lib/etcd-backup> <이전에 snapshot찍은 파일 ex) /var/lib/backup_$(date +%Y%m%d_%H%M%S).db>

# etcd.yaml 변경
# 경로 /etc/kubernetes/manifest/etcd.yaml
  volumes:
  - hostPath:
      path: /etc/kubernetes/pki/etcd
      type: DirectoryOrCreate
    name: etcd-certs
  - hostPath:
      path: /var/lib/etcd-backup # 백업 폴더 경로
      type: DirectoryOrCreate
    name: etcd-data

 

조큼 기다리면 스냅샷 시점으로 복원 됌.


본 글에서 사용된 이미지와 예제는 이해를 돕기 위한 것이며, 실제 환경과 다를 수 있음.

또한 일부 내용에는 오타나 정보의 불완전함이 있을 수 있으니, 반드시 공식 문서 및 최신 자료를 참고하시기 바람.

AI 창작물이 아님.