etcd 2.2.5 클러스터링 구성하기
바이너리를 설치 static으로 구성한다.
172.26.100.161 (로컬 호스트)에서 2380, 2480, 2580 포트의 etcd 데몬으로 클러스터링을 구성하고.
2680 포트의 새로운 etcd 데몬을 추가하는 예시이다.
1번째
./etcd --name etcd1 \
--initial-advertise-peer-urls http://172.26.100.161:2380 \
--listen-peer-urls http://172.26.100.161:2380 \
--listen-client-urls http://172.26.100.161:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://172.26.100.161:2379 \
--initial-cluster-token "etcd-cluster" \
--initial-cluster etcd1=http://172.26.100.161:2380,etcd2=http://172.26.100.161:2480,etcd3=http://172.26.100.161:2580 \
--initial-cluster-state new
2번째
./etcd --name etcd2 \
--initial-advertise-peer-urls http://172.26.100.161:2480 \
--listen-peer-urls http://172.26.100.161:2480 \
--listen-client-urls http://172.26.100.161:2479,http://127.0.0.1:2479 \
--advertise-client-urls http://172.26.100.161:2479 \
--initial-cluster-token "etcd-cluster" \
--initial-cluster etcd1=http://172.26.100.161:2380,etcd2=http://172.26.100.161:2480,etcd3=http://172.26.100.161:2580 \
--initial-cluster-state new
3번째
./etcd --name etcd3 \
--initial-advertise-peer-urls http://172.26.100.161:2580 \
--listen-peer-urls http://172.26.100.161:2580 \
--listen-client-urls http://172.26.100.161:2579,http://127.0.0.1:2579 \
--advertise-client-urls http://172.26.100.161:2579 \
--initial-cluster-token "etcd-cluster" \
--initial-cluster etcd1=http://172.26.100.161:2380,etcd2=http://172.26.100.161:2480,etcd3=http://172.26.100.161:2580 \
--initial-cluster-state new
다 클러스터링이 동기되면. 로그에 다음과 같은 로그가 찍힌다. 정상적이다.
2018-09-05 06:33:42.154287 N | etcdserver: updated the cluster version from 2.1 to 2.2
버전을 확인하면 제대로 설치됨을 알 수 있다.
$curl -L http://127.0.0.1:2379/version
{"etcdserver":"2.2.5","etcdcluster":"2.2.0"}
여기에 새로운 etcd 노드를 추가하려고 한다.
./etcd --name etcd4 \
--initial-advertise-peer-urls http://172.26.100.161:2680 \
--listen-peer-urls http://172.26.100.161:2680 \
--listen-client-urls http://172.26.100.161:2679,http://127.0.0.1:2679 \
--advertise-client-urls http://172.26.100.161:2679 \
--initial-cluster-token "etcd-cluster" \
--initial-cluster etcd1=http://172.26.100.161:2380,etcd2=http://172.26.100.161:2480,etcd3=http://172.26.100.161:2580,etcd4=http://172.26.100.161:2680 \
--initial-cluster-state new
(사실 initial-cluster-state을 new라 하면 안된다)
기존의 클러스터링에 추가되지 못해 나오는 에러가 나오고..
기존 로그에 추가할 수 없다고 나온다.
2018-09-05 06:41:58.886604 C | etcdmain: couldn't find local name "etcd4" in the initial cluster configuration
이제 클러스터링을 확인한다.
$ ./etcdctl member list
6564723d6ed1fc93: name=etcd2 peerURLs=http://172.26.100.161:2480 clientURLs=http://172.26.100.161:2479
edbc16344886488f: name=etcd3 peerURLs=http://172.26.100.161:2580 clientURLs=http://172.26.100.161:2579
fc0c8fe65a431b34: name=etcd1 peerURLs=http://172.26.100.161:2380 clientURLs=http://172.26.100.161:2379
추가할 멤버를 추가한다.
$ ./etcdctl member add etcd4 http://172.26.100.161:2680
Added member named etcd4 with ID 60859f242d8b1d4a to cluster
추가된 멤버는 unstarted로 나온다.
[~/dev/etcd/4] ./etcdctl member list
60859f242d8b1d4a[unstarted]: peerURLs=http://172.26.100.161:2680
6564723d6ed1fc93: name=etcd2 peerURLs=http://172.26.100.161:2480 clientURLs=http://172.26.100.161:2479
edbc16344886488f: name=etcd3 peerURLs=http://172.26.100.161:2580 clientURLs=http://172.26.100.161:2579
fc0c8fe65a431b34: name=etcd1 peerURLs=http://172.26.100.161:2380 clientURLs=http://172.26.100.161:2379
이제 4번째 장비에서 다음을 입력한다.
오랜 시간이 흘러, 이제 새로운 클러스터를 추가한다.
이 때 initial cluster state 옵션의 값을 new 대신 existing으로 하다.
$ ./etcd
--initial-advertise-peer-urls http://172.26.100.161:2680 \
--listen-peer-urls http://172.26.100.161:2680 \
--listen-client-urls http://172.26.100.161:2679,http://127.0.0.1:2679 \
--advertise-client-urls http://172.26.100.161:2679 \
--initial-cluster-token "etcd-cluster" \
--initial-cluster etcd1=http://172.26.100.161:2380,etcd2=http://172.26.100.161:2480,etcd3=http://172.26.100.161:2580,etcd4=http://172.26.100.161:2680 \
--initial-cluster-state existing
* 참고
클러스터링 구축하다가 문제가 발생하면..
추가할 etcd 디렉토리에서 데이터 디렉토리를 다 지워야 한다. 디폴트는 {이름}.etcd로 되어 있다.
$ ./etcdctl member list
60859f242d8b1d4a: name=etcd4 peerURLs=http://172.26.100.161:2680 clientURLs=http://172.26.100.161:2679
6564723d6ed1fc93: name=etcd2 peerURLs=http://172.26.100.161:2480 clientURLs=http://172.26.100.161:2479
edbc16344886488f: name=etcd3 peerURLs=http://172.26.100.161:2580 clientURLs=http://172.26.100.161:2579
fc0c8fe65a431b34: name=etcd1 peerURLs=http://172.26.100.161:2380 clientURLs=http://172.26.100.161:2379
클러스티링 추가가 완료되었다.
'Cloud' 카테고리의 다른 글
[kubernetes] yaml 설정 주의 사항 (삽질) (0) | 2018.09.11 |
---|---|
[kubernetes] kubernetes-jenkins 연동 레시피 (0) | 2018.09.07 |
etcd 3.2.3 클러스터링하기 (0) | 2018.09.05 |
kubernetes-jenkins 사용 주의 사항 (0) | 2018.09.04 |
zipkin 과 spring cloud sleuth 소개 (0) | 2018.08.22 |