ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • etcd 기본사용
    Cloud 2015. 9. 11. 09:00
    반응형
    coreos에서 만든 분산 key-value 스토리지
    GO 언어로 개발되어 있음.
    일반적으로. 데이터베이스 연결 정보, 캐시 세팅등의 설정정보들을 저장해두고 사용한다.

    설치
    GO로 개발되었기 때문에 바이너리 파일을 다운받아서 바로 실행하면 된다.
    https://github.com/coreos/etcd/releases/ 요기서 OS별 실행파일 다운로드
    다운받은 파일 압축풀면 실행파일이랑 참고용 문서들 들어있음.
    unzip etcd-v2.2.0-rc.0-darwin-amd64.zip

    etcd는 실제 etcd를 실행하는 파일이고 etcdctl은 etcd를 이용하기위한 클라이언트다.
    etcdctl이 없어도 rest api를 제공하기 때문에 curl을 통해서 사용할 수 있음.
    etcd를 클러스터로 구성했다면 curl을 사용할때 -L 옵션을 사용해 줘야 함.
    그래야 마스터 서버로 redirect되는걸 인식할 수 있음.

    etcd 실행
    ./etcd 로 바로 실행가능

    사용하기

    버전 확인
    curl -L http://localhost:4001/version

    키입력
    curl -L http://127.0.0.1:2379/v2/keys/mykey -XPUT -d value="this is awesome"
    ./etcdctl set /message Hello

    키 데이터 확인
    curl -L http://127.0.0.1:2379/v2/keys/mykey
    ./etcdctl get /message

    키 지우기
    curl -L -X DELETE http://127.0.0.1:4001/v2/keys/mykey
    ./etcdctl rm /message

    디렉토리 생성
    ./etcdctl mkdir /foo-service
    curl -L -X PUT http://127.0.0.1:4001/v2/keys/foo-service/container1 -d value="localhost:1111"

    디렉토리에 키 입력
    ./etcdctl set /foo-service/container1 localhost:1111

    디렉토리에 있는 키 리스트 
    ./etcdctl ls /foo-service
    curl -L http://127.0.0.1:4001/v2/keys/foo-service

    디렉토리에 있는 키 값 확인
    ./etcdctl get /foo-service/container1

    디렉토리 지우기
    ./etcdctl rm /foo-service/container1
    ./etcdctl rmdir /foo-service

    디렉토리 변경사항 지켜보기
    ./etcdctl watch --recursive /foo-service
    curl -L http://127.0.0.1:4001/v2/keys/foo-service?wait=true\&recursive=true
    으로 /foo-service의 변경사항을 기다림.

    다른 명령어 창에서 아래 명령 실행
    ./etcdctl set /foo-service/container2 localhost:2222
    curl -L -X PUT http://127.0.0.1:4001/v2/keys/foo-service/container2 -d value="localhost:2222"

    첫번째 명령창에 입력된 값이 나오는걸 확인할 수 있음.

    watch명령으로는 한번 변경사항을 받으면 etcdctl이 종료됨.
    계속해서 지켜보려면 아래처럼 exec-watch로 실행.
    ./etcdctl exec-watch --recursive /foo-service -- sh -c 'echo "\"$ETCD_WATCH_KEY\" key was updated to \"$ETCD_WATCH_VALUE\" value by \"$ETCD_WATCH_ACTION\" action"'

    조건에 만족할때 업데이트.
    ./etcdctl set /message "Hi" --swap-with-value "Hello"
    curl -L -X PUT http://127.0.0.1:4001/v2/keys/message?prevValue=Hello -d value=Hi

    이전에 message라는 키에 Hello라는 값이 있어야만 실행됨. 아니면 에러.

    TTL 설정
    키에 일정 시간이 지난면 자동으로 삭제되도록 TTL(Time To Live)값을 초단위로 설정할 수 있음.
    ./etcdctl set /foo "Expiring Soon" --ttl 5
    curl -L -X PUT http://127.0.0.1:4001/v2/keys/foo?ttl=5 -d value=bar
    이렇게 foo키를 입력하고
    ./etcdctl get /foo
    이렇게 확인해보면 5초뒤에 키가 없어지는걸 확인할 수 있음.

    etcd 웹 UI
    설치
    git clone https://github.com/henszey/etcd-browser.git
    cd etcd-browser/
    docker build -t etcd-browser .

    실행
    docker run --rm --name etcd-browser -p 0.0.0.0:8000:8000 --env ETCD_HOST=10.10.0.1 --env AUTH_PASS=doe -t -i etcd-browser


    참조


    반응형

    'Cloud' 카테고리의 다른 글

    Large-scale cluster management at Google with Borg 정리  (0) 2015.09.21
    kubernetes 기본 개념  (0) 2015.09.14
    libvirt 사용하기  (0) 2015.03.25
    가상화 이미지 빌더 도구인 Oz  (0) 2015.03.24
    OpenStack 이미지 만들기  (0) 2015.03.23

    댓글

Designed by Tistory.