일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 완전 탐색
- Java
- 스프링 시큐리티
- 이분 매칭
- 메모이제이션
- 이분 탐색
- 플로이드 와샬
- 도커
- BFS
- dp
- 백트래킹
- ZuulFilter
- 서비스 디스커버리
- docker-compose
- 스택
- 트리
- Logback
- 비트마스킹
- 유레카
- 게이트웨이
- Zuul
- spring cloud
- 다익스트라
- 구현
- 주울
- Gradle
- 구간 트리
- 달팽이
- Spring Cloud Config
- spring boot
- Today
- Total
Hello, Freakin world!
[docker-compose] 주키퍼 클러스터 만들기 본문
docker-compose.yml
version: "3.0"
services:
zk1:
image: zookeeper:3.5
restart: always
hostname: zk1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
volumes:
- "~/zk-cluster/zk1/data:/data"
zk2:
image: zookeeper:3.5
restart: always
hostname: zk2
ports:
- "2182:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
volumes:
- "~/zk-cluster/zk2/data:/data"
zk3:
image: zookeeper:3.5
restart: always
hostname: zk3
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
volumes:
- "~/zk-cluster/zk3/data:/data"
zoo-navi:
image: elkozmon/zoonavigator
ports:
- 9000:9000
environment:
HTTP_PORT: 9000
볼륨 설정
docker hub의 공식 zookeeper 리포지토리의 도커파일을 참고해야된다.
도커파일에서 컨테이너의 루트를 기준으로 각 디렉토리를 생성하고 있는데(/data, /logs, /conf, /datalog)
볼륨을 설정하려고 한다면 호스트의 디렉토리를 여기에 매핑해주면 된다.
위에서는 data 부분만 볼륨을 설정해놓았다.
ZOO_MY_ID
클러스터 내에서 해당 id는 유일해야 한다. 주키퍼 클러스터에서 주키퍼를 식별하기 위한 값이다.
ZOO_SERVERS
주키퍼 버전 3.5부터 문법이 변경됐다.
server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port>
어떤 부분이냐면 client port 부분이다. server.1=zk1:2888:3888;2181 에서 ;뒤에 클라이언트 포트인 2181을 덧붙여 줘야 된다.
개인적으로 이 부분 때문에 하루종일 헤맸다... 공식 문서를 꼭 읽는 습관을 들이자.
붙이지 않을 경우 zkCli.sh를 이용해 해당 주키퍼에 접속할 수 없었다. 주키퍼 서버에 접속해 각 정보를 관찰할 수 없다는 얘기다.
그렇다고 주키퍼 서버 간에 통신이 되지 않는다는 말은 아니다. 주키퍼 피어끼리는 2888, 3888 포트로 통신하기 때문이다.
zoonavigator
zoonavigator를 통해 주키퍼 정보를 웹을 통해 살펴볼 수 있다.
localhost:9000으로 접속해 zk1:2181, zk2:2181, zk3:2181 로 해당 주키퍼에 접속이 가능하다.
주의할 점은 호스트에 바인딩된 주소가 아니라 도커 내에 할당된 네트워크 주소를 이용한다는 점이다.
위의 docker-compose.yml 이 위치한 디렉토리에서 아래의 커맨드를 실행시키면 작동한다.
$) docker-compose up -d
작동을 중지하고 싶다면 docker-compose down 을 입력하자.
모든 서버가 내려가고 생성된 컨테이너도 삭제시켜준다.
'도커' 카테고리의 다른 글
[docker-compose] zookeeper/kafka 클러스터 구성 (0) | 2021.03.22 |
---|---|
[docker-compose] 스프링 부트 + MySQL 환경 구성하기 (1) | 2021.03.05 |