Etcd

  • 일관성을 유지하는 분산 Key-Value 저장소

  • Go로 작성됨

  • CoreOS 용으로 작성됨

설치

릴리즈 바이너리 받기

직접 빌드

  1. go 1.6 이상 설치

  2. $GOPATH 환경변수 제대로 지정되어있는지 확인

  3. https://github.com/coreos/etcd.git master 브랜치 clone 후 들어가서 build 스크립트 실행

실행

서버 실행

etcd
  • 기본적으로 2379 포트에서 클라이언트 통신을 받고 2380 포트에서 서버간 통신을 진행

클라이언트 접속

클러스터링

Static

  • --inital-cluster 옵션에 모든 클러스터 노드의 이름과 peer-url을 넣어서 클러스터를 시작하는 방법

  • --initial-cluster-token 옵션을 통해 같은 설정을 가진 고유한 클러스터들을 구분 가능하게 생성할 수 있음

etcd Discovery

  • --discovery 옵션에 특정 etcd 클러스터나 노드의 URL을 넣어서 그 URL에서 얻은 정보를 바탕으로 클러스터를 시작하는 방법

  • 처음에 시작할 때 지정한 노드 갯수를 충족하지 않으면 전체 클러스터가 동작하지 않고, 노드 갯수를 넘어가게 추가하면 추가된 노드는 proxy 노드로 동작

  • reconfiguration을 통해서 클러스터에 새로운 노드를 추가하거나 제거했을 경우엔 discovery에 적용되지 않음

로컬 테스트 클러스터 구축

DNS Discovery

  • DNS SRV record를 사용하여 discovery

  • -discovery-srv 옵션에 URL 등록

Runtime Reconfiguration

  • 클라이언트 명령어를 사용해서 클러스터에 노드의 추가 및 삭제 가능

  • 이 방법을 통해 추가하거나 삭제한 노드는 discovery 사용 불가

Last updated