ZooKeeper Cluster 설치
zookeeper ?
ZooKeeper는 분산 애플리케이션을위한 분산 형 오픈 소스 코디네이션 서비스입니다. 분산 응용 프로그램이 빌드, 동기화, 구성 유지 관리 및 그룹 및 명명을 위해 고급 서비스를 구현할 수있는 간단한 프리미티브 집합을 제공합니다. 프로그램하기 쉽도록 고안되었으며 익숙한 파일 시스템의 디렉토리 트리 구조를 기반으로 한 데이터 모델을 사용합니다. 그것은 자바에서 실행하고 자바와 C 모두 바인딩되어 있습니다.
시스템 요구 사항
지원되는 플랫폼
-
GNU / Linux는 서버와 클라이언트 모두를위한 개발 및 생산 플랫폼으로 지원됩니다.
-
Sun Solaris는 서버 및 클라이언트 모두를위한 개발 및 프로덕션 플랫폼으로 지원됩니다.
-
FreeBSD는 고객만을위한 개발 및 생산 플랫폼으로 지원됩니다. FreeBSD JVM의 Java NIO 선택기 지원이 중단되었습니다.
-
Win32는 서버와 클라이언트 모두를위한 개발 플랫폼으로 만 지원됩니다 .
-
MacOSX는 서버와 클라이언트 모두를위한 개발 플랫폼으로 만 지원됩니다 .
필수 소프트웨어
ZooKeeper는 Java, 1.6 이상 (JDK 6 이상)에서 실행됩니다. ZooKeeper 서버 의 앙상블 로 실행됩니다 .
3 개의 ZooKeeper 서버는 앙상블을위한 최소 권장 크기이며 별도의 컴퓨터에서 실행하는 것이 좋습니다.
클러스터 된 (다중 서버) 설치
신뢰할 수있는 ZooKeeper 서비스를 위해서는 ZooKeeper를 앙상블이라는 클러스터에 배포해야합니다 .
앙상블의 대다수가 작동하는 한, 서비스를 이용할 수 있습니다.
사육사는 대다수를 필요로하기 때문에 홀수 개의 기계를 사용하는 것이 가장 좋습니다.
예를 들어, 4 대의 머신 ZooKeeper는 단일 머신의 장애 만 처리 할 수 있습니다.
두 대의 기계가 고장 나더라도 남은 두 대의 기계가 다수를 구성하지는 않습니다.
그러나 5 대의 기계 ZooKeeper는 두 대의 기계의 고장을 처리 할 수 있습니다.
Watches
ZooKeeper는 watch의 개념을 지원합니다 . 클라이언트는 znode에서 시계를 설정할 수 있습니다.
znode가 변경되면 watch가 트리거되고 제거됩니다.
watch가 트리거되면 클라이언트는 z 노드가 변경되었음을 알리는 패킷을 수신합니다.
클라이언트와 Zoo Keeper 서버 중 하나의 연결이 끊어지면 클라이언트는 로컬 알림을받습니다.
다음은 앙상블에 포함될 서버를 설정하는 단계입니다.
이 단계는 앙상블의 모든 호스트에서 수행해야합니다.
총 3대의 zookeeper 서버로 구성합니다.
-
Java JDK를 설치하십시오. 시스템의 네이티브 패키지 시스템을 사용하거나 다음 위치에서 JDK를 다운로드 할 수 있습니다.
-
Java 힙 크기를 설정하십시오. 이는 ZooKeeper 성능을 심각하게 저하시키는 스와핑을 피하기 위해 매우 중요합니다. 올바른 값을 판별하려면,로드 테스트를 사용하고 교환 할 사용량 한 계 아래에 있는지 확인하십시오. 보수적 인 방법 – 4GB 시스템에는 최대 힙 크기 3GB를 사용하십시오.
-
ZooKeeper 서버 패키지를 설치하십시오. 아래의 사이트에서 다운로드받을 수 있습니다 :
http://hadoop.apache.org/zookeeper/releases.html
#root 권한으로 설정mkdir /sw mkdir /sw/zk_data chown -R zookeeper:zookeeper /sw
#zookeeper user권한으로 설정
cd /sw wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz tar zxvf zookeeper-3.4.10.tar.gz ln -s zookeeper-3.4.10 zookeeper cp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo.cfg
-
구성 파일을 작성하십시오.
vi /sw/zookeeper/conf/zoo.cf
tickTime = 2000 dataDir = /sw/zk_data/ clientPort = 2181 initLimit = 5 syncLimit = 2 server.1=zookeeper01:2888:3888 server.2=zookeeper02:2888:3888 server.3=zookeeper03:2888:3888
#myid 파일은 해당 기계의 ID 텍스트 만 포함하는 단일 행으로 구성됩니다.
따라서 서버 1의 myid 에는 “1”이라는 텍스트가 포함될 것입니다.
id는 앙상블 내에서 고유해야하며 1에서 255 사이의 값을 가져야합니다.echo ‘1’ 에서 ‘1’ 을 각 서버 식별ID이며 zookeeper01 1 , zookeeper02 2 , zookeeper01 3입니다.
echo '1' > /sw/zk_data/myid
#logs 폴더 설정
vi /sw/zookeeper/bin/zkEnv.sh
ZOO_LOG_DIR="/sw/zookeeper/logs"<code></code>
- 서비스 자동시작등록
vi /etc/rc.d/rc.local
su - zookeeper /sw/zookeeper/bin/zkServer.sh start &
- zookeeper shell script 명령어
#zookeeper 시작 /sw/zookeeper/bin/zkServer.sh start #zookeeper 종료 /sw/zookeeper/bin/zkServer.sh stop #zookeeper 상태확인 /sw/zookeeper/bin/zkServer.sh status