웹사이트 검색

Debian 10에 Apache ZooKeeper를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 자바 설치
  4. Zookeeper용 시스템 사용자 만들기
  5. 주키퍼 다운로드
  6. Zookeeper 구성
  7. Zookeeper 서버 시작 및 테스트
  8. Zookeeper용 Systemd 서비스 파일 생성
  9. 결론

Apache Zookeeper는 대규모 호스트 집합을 관리하는 데 도움이 되는 분산 시스템용 무료 오픈 소스 서비스입니다. 구성 정보, 이름 지정 및 그룹 서비스를 유지 관리하는 데 사용되는 중앙 집중식 서비스입니다. Java로 작성되었으며 개발자가 애플리케이션의 분산 특성에 대해 걱정하지 않고 소프트웨어 기능을 구축하는 데 집중할 수 있습니다. Apache ZooKeeper는 쓰기보다 읽기가 훨씬 더 일반적인 "읽기 중심" 워크로드에서 가장 일반적으로 사용됩니다. 동기화, 정렬된 메시지, 직렬화, 신뢰성, 원자성, 빠른 처리 등을 포함한 다양한 기능 세트가 함께 제공됩니다. 다른 분산 응용 프로그램을 연결하는 동안 자동 장애 복구에 도움이 되는 잠금 및 동기화 메커니즘이 있습니다. Zookeeper 프로젝트는 Apache 재단에서 가장 성공적인 프로젝트 중 하나입니다. 많은 회사에서 대규모로 고가용성 분산 시스템을 만들기 위해 Zookeeper를 채택했습니다.

이 튜토리얼에서는 Debian 10 서버에서 단일 노드 Apache Zookeeper 클러스터를 설정하는 방법을 보여줍니다.

전제 조건

  • 2GB RAM으로 Debian 10을 실행하는 서버.\n
  • 서버에 루트 암호가 구성되어 있습니다.\n

시작하기

시작하기 전에 서버를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령을 사용하여 업데이트할 수 있습니다.

apt-get update -y
apt-get upgrade -y

서버가 업데이트되면 다시 시작하여 변경 사항을 적용하십시오.

자바 설치

Apache Zookeeper는 Java 언어로 작성되었습니다. 따라서 시스템에 Java를 설치해야 합니다. 기본적으로 최신 버전의 Java는 Debian 10 기본 리포지토리에서 사용할 수 있습니다. 다음 명령을 실행하여 설치할 수 있습니다.

apt-get install default-jdk -y

Java를 설치한 후 다음 명령을 사용하여 설치된 Java 버전을 확인합니다.

java --version

다음 출력이 표시되어야 합니다.

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)

작업이 완료되면 Zookeeper용 시스템 사용자 생성을 진행할 수 있습니다.

Zookeeper용 시스템 사용자 생성

Zookeeper 서비스를 실행할 전용 사용자를 만드는 것이 좋습니다. 이렇게 하면 보안과 관리 용이성이 향상됩니다.

먼저 다음 명령을 실행하여 홈 디렉터리가 있는 사육사 사용자를 만듭니다.

useradd zookeeper -m

그런 다음 다음 명령을 사용하여 사육사 사용자의 기본 셸을 설정합니다.

usermod --shell /bin/bash zookeeper

그런 다음 다음 명령을 사용하여 사육사 사용자의 비밀번호를 설정하십시오.

passwd zookeeper

다음으로 사육사 사용자를 sudo 그룹에 추가합니다.

usermod -aG sudo zookeeper

이 시점에서 Zookeeper 사용자를 만들고 구성했습니다. 이제 Zookeeper 다운로드를 진행할 수 있습니다.

사육사 다운로드

먼저 공식 웹 사이트에서 최신 버전의 Apache Zookeeper를 다운로드해야 합니다. 이 기사를 작성할 당시 Apache Zookeeper의 최신 버전은 3.5.6입니다.

다운로드하려면 디렉터리를 /opt로 변경하고 다음 명령을 실행합니다.

cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.

tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz

그런 다음 추출된 디렉터리의 이름을 zookeeper로 바꾸고 적절한 권한을 부여합니다.

mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper

다음으로 모든 구성 및 상태 데이터를 저장할 Zookeeper용 데이터 디렉터리를 만들어야 합니다. 필요에 따라 로컬 파일 시스템 또는 원격 파일 시스템에서 만들 수 있습니다.

다음 명령을 사용하여 데이터 디렉토리를 생성할 수 있습니다.

mkdir -p /data/zookeeper

다음으로 데이터 디렉토리의 소유권을 zookeeper 사용자로 변경합니다.

chown -R zookeeper:zookeeper /data/zookeeper

이제 Zookeeper를 다운로드하고 이를 위한 데이터 디렉토리를 생성했습니다. 이제 Zookeeper 구성을 진행할 수 있습니다.

사육사 구성

Zookeeper의 모든 구성 파일은 /opt/zookeeper/conf/ 디렉토리에 있습니다. 다음 명령을 사용하여 /opt/zookeeper/conf/ 디렉토리 내에 Zookeeper 구성 파일을 생성할 수 있습니다.

nano /opt/zookeeper/conf/zoo.cfg

다음 줄을 추가합니다.

tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=80

완료되면 파일을 저장하고 닫습니다.

어디에:

  • tickTime : 이 옵션은 틱의 길이를 밀리초 단위로 설정합니다.\n
  • dataDir : Zookeeper 데이터를 저장할 데이터 디렉토리를 지정합니다.\n
  • clientPort : 클라이언트 연결을 수신하는 데 사용되는 포트를 지정합니다.\n
  • maxClientCnxns : 최대 클라이언트 연결 수를 제한하는 데 사용됩니다.\n

참고 : 위의 매개변수는 개발 및 테스트용입니다. 필요에 따라 변경할 수 있습니다.

이 시점에서 Zookeeper를 구성했습니다. 이제 Zookeeper 서버를 시작할 준비가 되었습니다.

Zookeeper 서버 시작 및 테스트

다음 명령을 사용하여 Zookeeper 서버를 시작할 수 있습니다.

/opt/zookeeper/bin/zkServer.sh start

다음 출력이 표시되어야 합니다.

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

다음으로 다음 명령을 사용하여 포트 2181에서 Zookeeper 서버에 연결할 수 있습니다.

/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

연결되면 다음 출력이 표시됩니다.

[zk: 127.0.0.1:2181(CONNECTED) 0]

그런 다음 help 명령을 실행하여 클라이언트에서 실행할 수 있는 명령 목록을 가져옵니다.

[zk: 127.0.0.1:2181(CONNECTED) 0] help

다음 출력이 표시되어야 합니다.

ZooKeeper -server host:port cmd args
	addauth scheme auth
	close 
	config [-c] [-w] [-s]
	connect host:port
	create [-s] [-e] [-c] [-t ttl] path [data] [acl]
	delete [-v version] path
	deleteall path
	delquota [-n|-b] path
	get [-s] [-w] path
	getAcl [-s] path
	history 
	listquota path
	ls [-s] [-w] [-R] path
	ls2 path [watch]
	printwatches on|off
	quit 
	reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
	redo cmdno
	removewatches path [-c|-d|-a] [-l]
	rmr path
	set [-s] [-v version] path data
	setAcl [-s] [-v version] [-R] path acl
	setquota -n|-b val path
	stat [-w] path
	sync path

테스트 후 quit 명령을 사용하여 클라이언트 세션을 종료합니다.

[zk: 127.0.0.1:2181(CONNECTED) 0] quit

이제 다음 명령을 사용하여 Zookeeper 서비스를 중지할 수 있습니다.

/opt/zookeeper/bin/zkServer.sh stop

다음 명령이 표시됩니다.

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

이제 Zookeeper 서버를 성공적으로 시작하고 테스트했습니다.

Zookeeper용 Systemd 서비스 파일 생성

다음으로 systemd를 사용하여 Zookeeper 서비스를 관리하기 위해 systemd 서비스 파일을 생성해야 합니다.

다음 명령으로 만들 수 있습니다.

nano /etc/systemd/system/zookeeper.service

다음 줄을 추가합니다.

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 systemd 데몬을 다시 로드합니다.

systemctl daemon-reload

그런 다음 Zookeeper 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 후 시작되도록 활성화합니다.

systemctl start zookeeper
systemctl enable zookeeper

이제 다음 명령을 사용하여 Zookeeper 상태를 확인할 수 있습니다.

systemctl status zookeeper

다음 출력이 표시되어야 합니다.

? zookeeper.service - Zookeeper Daemon
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago
     Docs: http://zookeeper.apache.org
  Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
 Main PID: 9245 (java)
    Tasks: 29 (limit: 2359)
   Memory: 49.7M
   CGroup: /system.slice/zookeeper.service
           ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper.

Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon...
Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java
Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default
Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg
Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED
Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.

이제 systemd로 Zookeeper 서비스를 쉽게 관리할 수 있습니다.

결론

축하합니다! Debian 10 서버에 단일 노드 Zookeeper 클러스터를 성공적으로 설치하고 구성했습니다. 이 설정은 개발 및 테스트 환경에 매우 유용합니다. 이제 단일 노드 Zookeeper 클러스터를 설정하는 데 충분한 지식을 갖추셨기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요.