Thank you for reading this post, don't forget to subscribe!
Обновим систему.
1 2 |
$ sudo apt update |
Установим GnuPG.
1 2 |
$ sudo apt -y install gpg |
Установим Java.
1 2 |
$ sudo apt -y install openjdk-11-jre-headless |
Создайте выделенного пользователя zookeeper.
1 2 |
$ sudo adduser --system --home /opt/zookeeper --shell /bin/bash --uid 810 --group --disabled-login zookeeper |
Создайте каталог для архива программного обеспечения.
1 2 |
$ sudo -u zookeeper mkdir /opt/zookeeper/software |
Скачайте архив ZooKeeper и его ASCII-архивную подпись.
1 2 |
$ sudo -u zookeeper wget --quiet --directory-prefix /opt/zookeeper/software https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz |
1 2 |
$ sudo -u zookeeper wget --quiet --directory-prefix /opt/zookeeper/software https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz.asc |
Скачайте открытый ключ, используемый для подписи этого архива.
1 2 |
$ sudo -u zookeeper gpg --keyserver keyserver.ubuntu.com --recv-key AF3D175EC05DB249738D01AC8D8C3C3ED0B02E66 |
1 2 3 4 5 6 |
gpg: directory '/opt/zookeeper/.gnupg' created gpg: keybox '/opt/zookeeper/.gnupg/pubring.kbx' created gpg: /opt/zookeeper/.gnupg/trustdb.gpg: trustdb created gpg: key 8D8C3C3ED0B02E66: public key "Damien Diederen (CODE SIGNING KEY) <ddiederen@apache.org>" imported gpg: Total number processed: 1 gpg: imported: 1</ddiederen@apache.org> |
Проверьте подпись.
1 2 |
$ sudo -u zookeeper gpg --verify /opt/zookeeper/software/{apache-zookeeper-3.7.0-bin.tar.gz.asc,apache-zookeeper-3.7.0-bin.tar.gz} |
1 2 3 4 5 6 |
gpg: Signature made Wed Mar 17 09:47:05 2021 UTC gpg: using RSA key AF3D175EC05DB249738D01AC8D8C3C3ED0B02E66 gpg: Good signature from "Damien Diederen (CODE SIGNING KEY) <ddiederen@apache.org>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: AF3D 175E C05D B249 738D 01AC 8D8C 3C3E D0B0 2E66</ddiederen@apache.org> |
Создайте каталог приложения.
1 2 |
$ sudo -u zookeeper mkdir /opt/zookeeper/zookeeper |
Распакуйте загруженный архив.
1 2 |
$ sudo -u zookeeper tar --directory /opt/zookeeper/zookeeper --strip-components 1 --extract --file /opt/zookeeper/software/apache-zookeeper-3.7.0-bin.tar.gz |
Создайте каталог данных.
1 2 |
$ sudo -u zookeeper mkdir /opt/zookeeper/zookeeper/data |
Используем пример конфигурации.
1 2 |
$ sudo -u zookeeper cp /opt/zookeeper/zookeeper/conf/{zoo_sample.cfg,zoo.cfg} |
Обновление каталога данных в конфигурационном файле.
1 2 |
$ sudo -u zookeeper sed -i -e "s/^dataDir=\/tmp\/zookeeper/dataDir=\/opt\/zookeeper\/zookeeper\/data/" /opt/zookeeper/zookeeper/conf/zoo.cfg |
Проверим конфигурацию.
1 2 |
$ sudo -u zookeeper grep -v ^# /opt/zookeeper/zookeeper/conf/zoo.cfg |
1 2 3 4 5 |
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper/zookeeper/data clientPort=2181 |
Создайте файл службы systemd.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ cat <<EOF | sudo tee /etc/systemd/system/zookeeper.service [Unit] Description=ZooKeeper Service After=network-online.target Requires=network-online.target [Service] Type=forking User=zookeeper Group=zookeeper ExecStart=/opt/zookeeper/zookeeper/bin/zkServer.sh --config /opt/zookeeper/zookeeper/conf start ExecStop=/opt/zookeeper/zookeeper/bin/zkServer.sh --config /opt/zookeeper/zookeeper/conf stop ExecReload=/opt/zookeeper/zookeeper/bin/zkServer.sh --config /opt/zookeeper/zookeeper/conf restart WorkingDirectory=/opt/zookeeper [Install] WantedBy=multi-user.target EOF |
Перезагрузите демон systemd.
1 2 |
$ sudo systemctl daemon-reload |
Проверьте состояние сервиса
1 2 |
$ sudo systemctl status zookeeper.service |
1 2 3 |
● zookeeper.service - ZooKeeper Service Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled) Active: inactive (dead) |
Запустите его:
1 2 |
$ sudo systemctl start zookeeper.service |
Проверьте состояние сервиса
1 2 |
$ sudo systemctl status zookeeper.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
● zookeeper.service - ZooKeeper Service Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2021-06-11 12:32:25 UTC; 5s ago Process: 3728 ExecStart=/opt/zookeeper/zookeeper/bin/zkServer.sh start (code=exited, status=0/SUCCESS) Main PID: 3744 (java) Tasks: 30 (limit: 531) Memory: 45.4M CPU: 1.707s CGroup: /system.slice/zookeeper.service └─3744 java -Dzookeeper.log.dir=/opt/zookeeper/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-serv> Jun 11 12:32:24 zookeeper1 systemd[1]: Starting ZooKeeper Service… Jun 11 12:32:24 zookeeper1 zkServer.sh[3728]: /usr/bin/java Jun 11 12:32:24 zookeeper1 zkServer.sh[3728]: ZooKeeper JMX enabled by default Jun 11 12:32:24 zookeeper1 zkServer.sh[3728]: Using config: /opt/zookeeper/zookeeper/bin/../conf/zoo.cfg Jun 11 12:32:25 zookeeper1 zkServer.sh[3728]: Starting zookeeper … STARTED Jun 11 12:32:25 zookeeper1 systemd[1]: Started ZooKeeper Service. |
Проверьте режим на сервере.
1 2 |
$ sudo -u zookeeper /opt/zookeeper/zookeeper/bin/zkServer.sh status |
1 2 3 4 5 |
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: standalone |
Выполните CLI.
1 2 |
$ sudo -u zookeeper /opt/zookeeper/zookeeper/bin/zkCli.sh |
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 32 |
/usr/bin/java Connecting to localhost:2181 2021-06-11 12:37:29,517 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC 2021-06-11 12:37:29,520 [myid:] - INFO [main:Environment@98] - Client environment:host.name=zookeeper1.example.org 2021-06-11 12:37:29,520 [myid:] - INFO [main:Environment@98] - Client environment:java.version=11.0.11 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Debian 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/usr/lib/jvm/java-11-openjdk-amd64 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:java.class.path=/opt/zookeeper/zookeeper/bin/../zookeeper-server/target/classes:/opt/zookeeper/zookeeper/bin/../build/classes:/opt/zookeeper/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/opt/zookeeper/zookeeper/bin/../build/lib/*.jar:/opt/zookeeper/zookeeper/bin/../lib/zookeeper-prometheus-metrics-3.7.0.jar:/opt/zookeeper/zookeeper/bin/../lib/zookeeper-jute-3.7.0.jar:/opt/zookeeper/zookeeper/bin/../lib/zookeeper-3.7.0.jar:/opt/zookeeper/zookeeper/bin/../lib/snappy-java-1.1.7.7.jar:/opt/zookeeper/zookeeper/bin/../lib/slf4j-log4j12-1.7.30.jar:/opt/zookeeper/zookeeper/bin/../lib/slf4j-api-1.7.30.jar:/opt/zookeeper/zookeeper/bin/../lib/simpleclient_servlet-0.9.0.jar:/opt/zookeeper/zookeeper/bin/../lib/simpleclient_hotspot-0.9.0.jar:/opt/zookeeper/zookeeper/bin/../lib/simpleclient_common-0.9.0.jar:/opt/zookeeper/zookeeper/bin/../lib/simpleclient-0.9.0.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-transport-native-unix-common-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-transport-native-epoll-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-transport-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-resolver-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-handler-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-common-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-codec-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/netty-buffer-4.1.59.Final.jar:/opt/zookeeper/zookeeper/bin/../lib/metrics-core-4.1.12.1.jar:/opt/zookeeper/zookeeper/bin/../lib/log4j-1.2.17.jar:/opt/zookeeper/zookeeper/bin/../lib/jline-2.14.6.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-util-ajax-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-util-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-servlet-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-server-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-security-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-io-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/jetty-http-9.4.38.v20210224.jar:/opt/zookeeper/zookeeper/bin/../lib/javax.servlet-api-3.1.0.jar:/opt/zookeeper/zookeeper/bin/../lib/jackson-databind-2.10.5.1.jar:/opt/zookeeper/zookeeper/bin/../lib/jackson-core-2.10.5.jar:/opt/zookeeper/zookeeper/bin/../lib/jackson-annotations-2.10.5.jar:/opt/zookeeper/zookeeper/bin/../lib/commons-cli-1.4.jar:/opt/zookeeper/zookeeper/bin/../lib/audience-annotations-0.12.0.jar:/opt/zookeeper/zookeeper/bin/../zookeeper-*.jar:/opt/zookeeper/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/opt/zookeeper/zookeeper/bin/../conf 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler= 2021-06-11 12:37:29,522 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux 2021-06-11 12:37:29,523 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64 2021-06-11 12:37:29,523 [myid:] - INFO [main:Environment@98] - Client environment:os.version=5.10.0-3-amd64 2021-06-11 12:37:29,523 [myid:] - INFO [main:Environment@98] - Client environment:user.name=zookeeper 2021-06-11 12:37:29,523 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/opt/zookeeper 2021-06-11 12:37:29,523 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/tmp/hsperfdata_zookeeper 2021-06-11 12:37:29,523 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=4MB 2021-06-11 12:37:29,525 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=247MB 2021-06-11 12:37:29,525 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=7MB 2021-06-11 12:37:29,532 [myid:] - INFO [main:ZooKeeper@637] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@68c4039c 2021-06-11 12:37:29,540 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation 2021-06-11 12:37:29,547 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes 2021-06-11 12:37:29,555 [myid:] - INFO [main:ClientCnxn@1726] - zookeeper.request.timeout value is 0. feature enabled=false Welcome to ZooKeeper! JLine support is enabled 2021-06-11 12:37:29,624 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server localhost/127.0.0.1:2181. 2021-06-11 12:37:29,625 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error) 2021-06-11 12:37:29,681 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1005] - Socket connection established, initiating session, client: /127.0.0.1:34934, server: localhost/127.0.0.1:2181 2021-06-11 12:37:29,699 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1438] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x10000146eca0009, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTED) 0] |
Протестируйте некоторые команды.
1 2 |
[zk: localhost:2181(CONNECTED) 0] version |
1 2 |
ZooKeeper CLI version: 3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC |
1 2 |
[zk: localhost:2181(CONNECTED) 1] ls -R / |
1 2 3 4 |
/ /zookeeper /zookeeper/config /zookeeper/quota |