Bigdata Engineer & Analyst Story

A Hugo theme for creative and technical writing

Zookeeper 설치

설치 환경

  • Zookeeper 버전: zookeeper-3.5.8
  • 운영체제: ubuntu-18.04.4-desktop-amd64

사전 작업

  • 레파지토리 최신화
  • sudo apt-get update
  • sudo apt-get upgrade

Java 설치

Java 설치 참조 링크

zookeeper 계정 생성

adduser zookeeper

Zookeeper 바이너리 파일 다운로드 및 권한 설정

환결 설정

  • zookeeper 유져의 .profile에 home 디렉토리를 설정합니다.
  • ZOOKEEPER_HOME=/usr/local/zookeeper

로그 디렉토리 생성

주키퍼는 zoo.cfg에 설정한 데이터 디렉토리에 지노드의 복사본인 스냅샷과 트랜잭션 로그들이 저장됩니다. 지노드에 변경사항이 발생하면, 이 변경사항은 트랜잭션 로그에 추가됩니다. 그리고 로그가 어느정도 커지면, 현재 모든 지노드의 상태 스냅샷이 파일시스템에 저장됩니다. 앙상블 내 주키퍼 노드를 구분하기 위해서 ID를 만듭니다. 주키퍼에서는 myid 라고 부르며 정수 형태로 만들어주면 됩니다. 방금 만든 /data 디렉토리 하단에 myid라는 파일을 만들고 내용은 1이라고 입력합니다. 여기서 myid는 주키퍼의 설정 파일에서 사용하게 되며, 예제 2-2의 zoo.cfg파일을 다루면서 다시 설명하겠습니다. 다른 주키퍼 서버들에도 myid 파일을 만들고 숫자를 입력합니다.

  • sudo mkdir /var/log/zookeeper
  • sudo chown zookeeper:zookeeper /var/log/zookeeper
  • sudo su zookeeper
  • echo 1 > /var/log/zookeeper/myid
  • echo 2 > /var/log/zookeeper/myid
  • echo 3 > /var/log/zookeeper/myid

zoo 설정파일 조정

  • # Ref: https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_singleAndDevSetup
  • cp zoo_sample.cfg zoo.cfg
  • zoo.cfg 내용 (Clustered (Multi-Server) Setup)
    server.1=zk1:2888:3888
    #server.2=zk2:2888:3888
    #server.3=zk3:2888:3888
    tickTime=2000
    initLimit=10
    syncLimit=5
    clientPort=2181
    dataDir=/var/log/zookeeper
    • server.1=zk1:2888:3888
    • server.2=zk2:2888:3888
    • server.3=zk3:2888:3888
      • myid와 호스트 이름 또는 ID주소:포트번호
      • 포트번호 2888, 3888은 기본 포트이며 앙상블 내 노드끼리 연결하는데 사용하고, 리더 선출에 사용함
    • tickTime: 주키퍼가 사용하는 시간에 대한 기본 측정 단위(밀리초)
    • initLimit: 팔로워가 리더와 초기에 연결하는 시간에 대한 타임아웃 tick의 수
    • syncLimit: 팔로워가 리더와 동기화 하는 시간에 대한 타임 아웃 tick의 수(주키퍼에 저장된 데이터가 크면 수를 늘려야 함)
    • dataDir= 주키퍼의 트랜잭션 로그와 스냅샷이 저장되는 데이터 저장 경로
    • clientPort: 주키퍼 사용 TCP포트
    • server.x: 주키퍼 앙상블 구성을 위한 서버 설절이며, server.myid 형식으로 사용함

zoo 실행

  • /usr/local/zookeeper/bin/zkServer.sh start
  • ps -edf |grep zookeeper