Docker Zookeeper server install

2019. 11. 1. 12:14Open source tools

Start a Zookeeper server instance

$ docker run --name some-zookeeper --restart always -d zookeeper

이 이미지에는 EXPOSE 2181 2888 3888 8080 (각각 Zookeeper 클라이언트 포트, 팔로워 포트, 선택 포트, AdminServer 포트)이 포함되어 있으므로 표준 컨테이너 링크를 사용하면 연결된 컨테이너에서 자동으로 사용할 수 있습니다. Zookeeper는 "빠르게 실패"하므로 restart always 옵션을 사용하는 것이 좋습니다.

 

Connect to Zookeeper from an application in another Docker container

$ docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper

Connect to Zookeeper from the Zookeeper command line client

$ docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper

Configuration

Zookeeper configuration 은 /conf 에 위치해 있다. 설정을 변경하는 방법은 config를 볼륨으로 마운트 하는 방법이다.

$ docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg zookeeper

Environment variables

zoo.cfg 파일이 제공되지 않으면 ZooKeeper 권장 기본값이 사용됩니다. 다음 환경 변수를 사용하여 재정의 할 수 있습니다.

$ docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d 31z4/zookeeper

 

ZOO_TICK_TIME

Defaults to 2000. ZooKeeper's tickTime

 

밀리 초 단위로 측정 한 ZooKeeper에서 사용하는 기본 시간 단위 인 단일 틱의 길이입니다. 하트 비트 및 시간 종료를 조정하는 데 사용됩니다. 예를 들어, 최소 세션 시간 초과는 2 틱입니다.

 

ZOO_INIT_LIMIT
기본값은 5입니다. ZooKeeper의 initLimit

팔로워가 리더에 연결하고 동기화 할 수 있도록하는 시간 (틱 단위) (틱 시간 참조)입니다. ZooKeeper가 관리하는 데이터의 양이 많은 경우 필요에 따라이 값을 늘 렸습니다.

ZOO_SYNC_LIMIT
기본값은 2입니다. ZooKeeper의 syncLimit

추종자가 ZooKeeper와 동기화 할 수있는 시간 (틱 단위)입니다 (tickTime 참조). 추종자가 지도자보다 너무 멀리 떨어지면 추락합니다.

ZOO_MAX_CLIENT_CNXNS
기본값은 60입니다. ZooKeeper의 maxClientCnxns

IP 주소로 식별 된 단일 클라이언트가 ZooKeeper 앙상블의 단일 구성원에 대해 수행 할 수있는 동시 연결 수 (소켓 레벨에서)를 제한합니다.

ZOO_STANDALONE_ENABLED
기본값은 true입니다. 사육사 독립형

3.5.0 이전에는 ZooKeeper를 독립형 모드 또는 분산 모드에서 실행할 수있었습니다. 이들은 별도의 구현 스택이며 런타임 중에 스택간에 전환 할 수 없습니다. 기본적으로 (이전 버전과의 호환성을 위해) standaloneEnabled가 true로 설정되어 있습니다. 이 기본값을 사용하면 단일 서버로 시작한 경우 앙상블을 확장 할 수 없으며 둘 이상의 서버로 시작한 경우 두 명 미만의 참가자를 포함하도록 축소 할 수 없습니다.

ZOO_ADMINSERVER_ENABLED
기본값은 true입니다. 주 키퍼의 admin.enableServer

3.5.0의 새로운 기능 : AdminServer는 4 개의 문자 명령에 HTTP 인터페이스를 제공하는 내장 된 Jetty 서버입니다. 기본적으로 서버는 포트 8080에서 시작되며 URL "/ commands / [command name]"(예 : http : // localhost : 8080 / commands / stat)로 이동하여 명령이 실행됩니다.

ZOO_AUTOPURGE_PURGEINTERVAL
기본값은 0입니다. Zookeeper의 autoPurge.purgeInterval

제거 작업이 트리거되어야하는 시간 간격 (시간)입니다. 자동 제거를 활성화하려면 양의 정수 (1 이상)로 설정하십시오. 기본값은 0입니다.

ZOO_AUTOPURGE_SNAPRETAINCOUNT
기본값은 3입니다. Zookeeper의 autoPurge.snapRetainCount

활성화되면 ZooKeeper 자동 제거 기능은 autoPurge.snapRetainCount에서 가장 최근 스냅 샷과 해당 트랜잭션 로그를 각각 dataDir 및 dataLogDir에 유지하고 나머지는 삭제합니다. 기본값은 3입니다. 최소값은 3입니다.

ZOO_4LW_COMMANDS_WHITELIST
기본값은 srvr입니다. 사육사 4lw.commands.whitelist

사용자가 사용하려는 쉼표로 구분 된 네 글자 명령 목록입니다. ZooKeeper 서버는이 명령에 유효한 네 글자 명령을 입력해야합니다. 기본적으로 화이트리스트에는 zkServer.sh가 사용하는 "srvr"명령 만 포함됩니다. 나머지 네 글자 명령은 기본적으로 비활성화되어 있습니다.

 

Replicated mode

Zookeeper를 복제 모드로 실행하려면 아래 환경 변수가 필수입니다.

 

ZOO_MY_ID
ID는 앙상블 내에서 고유해야하며 1과 255 사이의 값을 가져야합니다. myid 파일이 이미 포함 된 / data 디렉토리로 컨테이너를 시작하면이 변수가 적용되지 않습니다.

ZOO_SERVERS
이 변수를 사용하면 Zookeeper 앙상블의 머신 목록을 지정할 수 있습니다. 각 항목은 server.id = host : port : port 형식입니다. 항목은 공백으로 구분됩니다. zoo.cfg 파일이 이미 포함 된 / conf 디렉토리로 컨테이너를 시작하면이 변수가 영향을 미치지 않습니다.

3.5에서는이 구문이 변경되었습니다. 서버는 다음과 같이 지정해야합니다.  server.id = 

server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port>

 

 

Where to store data

이 이미지는 Zookeeper 인 메모리 데이터베이스 스냅 샷과 데이터베이스에 대한 업데이트 트랜잭션 로그를 각각 보유하도록 / data 및 / datalog에 볼륨으로 구성됩니다.

트랜잭션 로그를 어디에 두는지 주의하십시오. 일관된 성능을 유지하려면 전용 트랜잭션 로그 장치가 중요합니다. 사용중인 장치에 로그를 넣으면 성능이 저하됩니다. 이를 위해 transantion log 전용 드라이브를 별도로 두는 것이 좋습니다.

'Open source tools' 카테고리의 다른 글

Cuda Encoder 사용하는 방법  (0) 2019.12.09
OpenCV 빌드하기 (OpenCV 3.2 + CUDA + TBB)  (0) 2019.11.01
Zookeeper znode type  (0) 2019.11.01
Zookeeper Commands - Four Letter Words  (0) 2019.11.01
Rabbitmq Docker install  (0) 2019.11.01