IT용어위키


Etcd

etcd는 분산 시스템에서 사용되는 오픈소스 키-값 저장소(distributed key‑value store)로, 특히 Kubernetes 같은 컨테이너 오케스트레이션 플랫폼에서 클러스터의 모든 상태, 설정, 메타데이터를 저장하는 클러스터 데이터베이스 역할을 한다.

개요

etcd는 2013년 CoreOS 팀에 의해 개발되었으며, 현재는 Cloud Native Computing Foundation(CNCF)에서 관리되는 프로젝트이다. 이 저장소는 분산 환경에서도 강한 일관성(strong consistency)고가용성(high availability)을 제공하도록 설계되었으며, 클러스터 상태, 설정 데이터, 서비스 디스커버리 정보 등 다양한 정보를 저장하는 데 사용된다.

주요 특징

  • 분산 키-값 저장소: 키(key)와 값(value) 쌍으로 데이터를 저장하며, 간단한 인터페이스를 제공한다.
  • Raft 합의 알고리즘 기반: 다수의 노드 간 일관된 로그 복제를 통해 고가용성과 데이터 정합성을 유지한다.
  • 강한 일관성: 모든 쓰기 작업은 리더 노드를 통해 처리되고, 과반수 노드에 복제된 후에 커밋된다.
  • 고가용성: 클러스터 내 일부 노드가 장애가 발생해도 다수 노드가 유지되면 정상 작동 가능하다.
  • gRPC 및 HTTP API 제공: 다양한 언어 및 도구와 연동 가능하며, 외부 접근 및 관리가 용이하다.

Kubernetes에서의 역할

Kubernetes는 클러스터의 모든 상태 정보를 etcd에 저장한다. etcd는 Kubernetes 컨트롤 플레인의 핵심 구성요소로 작동하며, 다음과 같은 역할을 수행한다:

  • 모든 리소스 객체(Pod, Node, ConfigMap, Secret 등)의 메타데이터와 상태를 저장
  • API 서버는 클라이언트로부터 요청을 받아 이를 etcd에 저장하거나 조회함
  • 컨트롤러, 스케줄러 등의 컴포넌트는 etcd의 상태를 기반으로 동작
  • 선언형 구성의 기반이 되는 단일 진실의 원천(single source of truth)

etcd가 손상되거나 정지되면 클러스터 상태를 유지할 수 없으며, 클러스터 전체의 동작이 마비될 수 있다.

배포 방식

  • 단일 노드 실행: 테스트용 또는 개발 환경에서 사용
  • 다중 노드 클러스터: 일반적으로 3개 또는 5개의 홀수 노드 구성, 리더 선출 및 로그 복제
  • 외부 etcd 구성: 일부 클러스터에서는 etcd를 외부에 분리하여 운영하기도 함

관리 도구

  • etcdctl: etcd를 관리하기 위한 커맨드라인 도구
  • 주요 명령:
    • 상태 확인: `etcdctl endpoint health`
    • 데이터 조회: `etcdctl get <key>`
    • 백업 및 복원: `etcdctl snapshot save`, `etcdctl snapshot restore`

운영 시 고려사항

  • 디스크 성능에 민감하므로, SSD 등 빠른 디스크 사용 권장
  • 과반수(quorum) 구조이므로 홀수 노드 구성이 필요
  • etcd 데이터는 정형화된 설정 중심으로 저장되며, 범용 데이터베이스로 사용해서는 안 됨
  • 정기적인 백업이 필수

같이 보기


  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!