官方文档

https://zookeeper.apache.org/doc/current/zookeeperStarted.html

下载Zookeeper

在下面的地址内下载最新的稳定版本:https://zookeeper.apache.org/releases.html
在这里插入图片描述
在这里插入图片描述
在linux服务器上执行下面的命令:

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

king@king-server:~/workspace/zookeeper$ wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
--2023-04-01 15:33:03--  https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 2a04:4e42::644, 151.101.2.132
Connecting to dlcdn.apache.org (dlcdn.apache.org)|2a04:4e42::644|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12649765 (12M) [application/x-gzip]
Saving to: ‘apache-zookeeper-3.7.1-bin.tar.gz’

apache-zookeeper-3.7.1-bin.tar.gz            100%[==============================================================================================>]  12.06M  13.5KB/s    in 11m 30s 

2023-04-01 15:44:43 (17.9 KB/s) - ‘apache-zookeeper-3.7.1-bin.tar.gz’ saved [12649765/12649765]

下载asc和sha512

使用下面的命令分别下载:

wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz.asc

king@king-server:~/workspace/zookeeper$ wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz.asc
--2023-04-01 16:05:48--  https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz.asc
Resolving downloads.apache.org (downloads.apache.org)... 2a01:4f8:10a:201a::2, 2a01:4f9:3a:2c57::2, 135.181.214.104, ...
Connecting to downloads.apache.org (downloads.apache.org)|2a01:4f8:10a:201a::2|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 833 [text/plain]
Saving to: ‘apache-zookeeper-3.7.1-bin.tar.gz.asc’

apache-zookeeper-3.7.1-bin.tar.gz.asc        100%[==============================================================================================>]     833  --.-KB/s    in 0s       

2023-04-01 16:05:50 (303 MB/s) - ‘apache-zookeeper-3.7.1-bin.tar.gz.asc’ saved [833/833]
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz.sha512

king@king-server:~/workspace/zookeeper$ wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz.sha512
--2023-04-01 16:06:29--  https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz.sha512
Resolving downloads.apache.org (downloads.apache.org)... 2a01:4f9:3a:2c57::2, 2a01:4f8:10a:201a::2, 88.99.95.219, ...
Connecting to downloads.apache.org (downloads.apache.org)|2a01:4f9:3a:2c57::2|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 163 [text/plain]
Saving to: ‘apache-zookeeper-3.7.1-bin.tar.gz.sha512’

apache-zookeeper-3.7.1-bin.tar.gz.sha512     100%[==============================================================================================>]     163  --.-KB/s    in 0s       

2023-04-01 16:06:30 (46.2 MB/s) - ‘apache-zookeeper-3.7.1-bin.tar.gz.sha512’ saved [163/163]

验证文件的完整性

官方要求必须使用 PGP 签名(.asc文件)或散列(.md5或.sha*文件)验证下载文件的完整性

king@king-server:~/workspace/zookeeper$ ls
apache-zookeeper-3.7.1-bin.tar.gz  apache-zookeeper-3.7.1-bin.tar.gz.asc  apache-zookeeper-3.7.1-bin.tar.gz.sha512

验证文件的哈希值

king@king-server:~/workspace/zookeeper$ sha512sum apache-zookeeper-3.7.1-bin.tar.gz
9103628a50745fa1a289bca666fda4a9c08ec17c55cf13e66887e7ba76e93dbae60a1f1ffd6c10798be3a16069344ecbc00cebb29bf03d9cd7096ccd098ed011  apache-zookeeper-3.7.1-bin.tar.gz

与下载的sha512对比下

king@king-server:~/workspace/zookeeper$ sha512sum apache-zookeeper-3.7.1-bin.tar.gz
9103628a50745fa1a289bca666fda4a9c08ec17c55cf13e66887e7ba76e93dbae60a1f1ffd6c10798be3a16069344ecbc00cebb29bf03d9cd7096ccd098ed011  apache-zookeeper-3.7.1-bin.tar.gz

king@king-server:~/workspace/zookeeper$ cat apache-zookeeper-3.7.1-bin.tar.gz.sha512 
9103628a50745fa1a289bca666fda4a9c08ec17c55cf13e66887e7ba76e93dbae60a1f1ffd6c10798be3a16069344ecbc00cebb29bf03d9cd7096ccd098ed011  apache-zookeeper-3.7.1-bin.tar.gz

单机部署

先将压缩包解压:

tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz

king@king-server:~/workspace/zookeeper$ ls
apache-zookeeper-3.7.1-bin  apache-zookeeper-3.7.1-bin.tar.gz  apache-zookeeper-3.7.1-bin.tar.gz.asc  apache-zookeeper-3.7.1-bin.tar.gz.sha512

进入conf目录:

king@king-server:~/workspace/zookeeper$ cd apache-zookeeper-3.7.1-bin/conf/
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ ls
configuration.xsl  log4j.properties  zoo_sample.cfg

其中zoo_sample.cfg是官方给出的示例文件

官方建议三个主要的配置:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

在给出实例中是:

tickTime=2000
dataDir=/tmp/zookeeper
clientPort=2181

可以使用实例默认的配置就可以。

tickTime:ZooKeeper 使用的基本时间单位,以毫秒为单位。它用于执行心跳,最小会话超时将是 tickTime 的两倍。
dataDir:存储内存数据库快照的位置,除非另有说明,否则存储更新数据库的事务日志。
clientPort:侦听客户端连接的端口

这里要在conf目录下新增文件zoo.cfg,然后将zoo_sample.cfg内的配置复制进去,因为启动时读取的配置是zoo_sample.cfg

启动

使用下面的命令启动:

../bin/zkServer.sh start

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ ls ../
bin  conf  docs  lib  LICENSE.txt  NOTICE.txt  README.md  README_packaging.md
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ ../bin/zkServer.sh start
Error: JAVA_HOME is not set and java could not be found in PATH.

可以发现这里出现了一个错误,没有找到JAVA_HOME,这里还要安装下jdk。

安装jdk:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ java -version

Command 'java' not found, but can be installed with:

sudo apt install openjdk-11-jre-headless  # version 11.0.18+10-0ubuntu1~20.04.1, or
sudo apt install default-jre              # version 2:1.11-72
sudo apt install openjdk-16-jre-headless  # version 16.0.1+9-1~20.04
sudo apt install openjdk-17-jre-headless  # version 17.0.6+10-0ubuntu1~20.04.1
sudo apt install openjdk-8-jre-headless   # version 8u362-ga-0ubuntu1~20.04.1
sudo apt install openjdk-13-jre-headless  # version 13.0.7+5-0ubuntu1~20.04

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ sudo apt install openjdk-8-jre-headless
[sudo] password for king:
...

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-8u362-ga-0ubuntu1~20.04.1-b09)
OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)

再次尝试启动:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ ../bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$

测试连接

使用下面的命令进行测试:

bin/zkCli.sh -server 127.0.0.1:2181

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/conf$ ../bin/zkCli.sh -server 127.0.0.1:2181

2023-04-05 04:36:34,559 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server localhost/127.0.0.1:2181.  2023-04-05 04:36:34,559 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error)2023-04-05 04:36:34,559 [myid:127.0.0.1:2181] - WARN  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1294] - Session 0x0 for server localhost/127.0.0.1:2181, Closing socket connection. Attempting reconnect except it is a SessionExpiredException.java.net.ConnectException: Connection refused        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:344)        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1283)

发现大量的报错。。。

将配置文件内dataDir修改为:/opt/zkData再次启动:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
mkdir: cannot create directory ‘/opt/zkData’: Permission denied
Starting zookeeper ... bin/zkServer.sh: line 175: /opt/zkData/zookeeper_server.pid: No such file or directory
FAILED TO WRITE PID

看来并不会自动创建目录(也可能是权限不够用)

创建并修改权限(自行设置权限就好,我这里贪图方便直接777了):

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ mkdir /opt/zkData
mkdir: cannot create directory ‘/opt/zkData’: Permission denied
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ sudo mkdir /opt/zkData
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ sudo chmod 777 /opt/zkData/

再次运行:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START

检查日志:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ cd logs
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/logs$ ls
zookeeper_audit.log  zookeeper-king-server-king-server.out
king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/logs$ less zookeeper-king-server-king-server.out

发现错误日志:

2023-04-05 04:50:54,373 [myid:1] - INFO  [main:DefaultSessionIdManager@334] - DefaultSessionIdManager workerName=node0
2023-04-05 04:50:54,374 [myid:1] - INFO  [main:DefaultSessionIdManager@339] - No SessionScavenger set, using defaults
2023-04-05 04:50:54,374 [myid:1] - INFO  [main:HouseKeeper@132] - node0 Scavenging every 660000ms
2023-04-05 04:50:54,377 [myid:1] - WARN  [main:ConstraintSecurityHandler@759] - ServletContext@o.e.j.s.ServletContextHandler@34cd072c{/,null,STARTING} has uncovered http methods for path: /*
2023-04-05 04:50:54,382 [myid:1] - INFO  [main:ContextHandler@915] - Started o.e.j.s.ServletContextHandler@34cd072c{/,null,AVAILABLE}
2023-04-05 04:50:54,386 [myid:1] - ERROR [main:ZooKeeperServerMain@86] - Unable to start AdminServer, exiting abnormally
org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on address 0.0.0.0, port 8080 and command URL /commands
        at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:188)
        at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:155)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:113)
        at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:68)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:141)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:91)
Caused by: java.io.IOException: Failed to bind to /0.0.0.0:8080
        at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:349)
        at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:310)
        at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
        at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at org.eclipse.jetty.server.Server.doStart(Server.java:401)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:179)
        ... 5 more
Caused by: java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:461)
        at sun.nio.ch.Net.bind(Net.java:453)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:85)
        at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:344)
        ... 12 more
Unable to start AdminServer, exiting abnormally
2023-04-05 04:50:54,387 [myid:1] - INFO  [main:ZKAuditProvider@42] - ZooKeeper audit is disabled.
2023-04-05 04:50:54,388 [myid:1] - ERROR [main:ServiceUtils@48] - Exiting JVM with code 4

原因是存在其他进程占用了8080端口,检查具体的进程:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/logs$ sudo lsof -i :8080
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 2263 root    4u  IPv4  48370      0t0  TCP *:http-alt (LISTEN)
docker-pr 2270 root    4u  IPv6  48375      0t0  TCP *:http-alt (LISTEN)

发现是docker容器占用了进程,检查具体的容器:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/logs$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED        STATUS       PORTS                                                  NAMES
7c39ae707be0   importkey_server   "/bin/sh -c './serve…"   2 months ago   Up 2 weeks   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              server
9c0de2584f09   mysql:8.0.21       "docker-entrypoint.s…"   3 months ago   Up 2 weeks   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   Mysql

发现是以前给老婆写的一个小server占用的。。。因为时间太久就忘了,这里先kill掉这个容器

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin/logs$ docker kill 7c39ae707be0
7c39ae707be0

再次重新启动:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

发现已经可以启动成功,使用client测试:

king@king-server:~/workspace/zookeeper/apache-zookeeper-3.7.1-bin$ bin/zkCli.sh -server 127.0.0.1:2181
/usr/bin/java
Connecting to 127.0.0.1:2181
2023-04-05 05:18:30,578 [myid:] - INFO  [main:Environment@98] - Client environment:zookeeper.version=3.7.1-a2fb57c55f8e59cdd76c34b357ad5181df1258d5, built on 2022-05-07 06:45 UTC  
2023-04-05 05:18:30,580 [myid:] - INFO  [main:Environment@98] - Client environment:host.name=king-server
2023-04-05 05:18:30,580 [myid:] - INFO  [main:Environment@98] - Client environment:java.version=1.8.0_362
2023-04-05 05:18:30,580 [myid:] - INFO  [main:Environment@98] - Client environment:java.vendor=Private Build
2023-04-05 05:18:30,580 [myid:] - INFO  [main:Environment@98] - Client environment:java.home=/usr/lib/jvm/java-8-openjdk-amd64/jre
2023-04-05 05:18:30,580 [myid:] - INFO  [main:Environment@98] - Client environment:java.class.path=/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../zookeeper-server/target/classes:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../build/classes:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../zookeeper-server/target/lib/*.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../build/lib/*.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/zookeeper-prometheus-metrics-3.7.1.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/zookeeper-jute-3.7.1.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/zookeeper-3.7.1.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/snappy-java-1.1.7.7.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/slf4j-reload4j-1.7.35.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/slf4j-api-1.7.35.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/simpleclient_servlet-0.9.0.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/simpleclient_hotspot-0.9.0.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/simpleclient_common-0.9.0.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/simpleclient-0.9.0.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/reload4j-1.2.19.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-transport-native-unix-common-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-transport-native-epoll-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-transport-classes-epoll-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-transport-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-resolver-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-handler-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-common-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-codec-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/netty-buffer-4.1.76.Final.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/metrics-core-4.1.12.1.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jline-2.14.6.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-util-ajax-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-util-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-servlet-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-server-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-security-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-io-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jetty-http-9.4.43.v20210629.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jackson-databind-2.13.2.1.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jackson-core-2.13.2.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/jackson-annotations-2.13.2.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/commons-cli-1.4.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../lib/audience-annotations-0.12.0.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../zookeeper-*.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf:
2023-04-05 05:18:30,580 [myid:] - INFO  [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:java.compiler=<NA>
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:os.name=Linux
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:os.arch=amd64
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:os.version=5.4.0-144-generic
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:user.name=king
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:user.home=/home/king
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:user.dir=/home/king/workspace/zookeeper/apache-zookeeper-3.7.1-bin
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:os.memory.free=51MB
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:os.memory.max=228MB
2023-04-05 05:18:30,581 [myid:] - INFO  [main:Environment@98] - Client environment:os.memory.total=59MB
2023-04-05 05:18:30,585 [myid:] - INFO  [main:ZooKeeper@657] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@449b2d27
2023-04-05 05:18:30,588 [myid:] - INFO  [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2023-04-05 05:18:30,592 [myid:] - INFO  [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2023-04-05 05:18:30,601 [myid:] - INFO  [main:ClientCnxn@1735] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
2023-04-05 05:18:30,608 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server localhost/127.0.0.1:2181.
2023-04-05 05:18:30,608 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2023-04-05 05:18:30,624 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1005] - Socket connection established, initiating session, client: /127.0.0.1:56296, server: localhost/127.0.0.1:2181
2023-04-05 05:18:30,671 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1446] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x100075903100000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0] 

完全ok!!!

上面的容器测试时是直接kill掉的,但是应该有些人是需要继续留着的,这时有两个解决方式:

1、修改 ZooKeeper 的 AdminServer 端口:可以编辑 ZooKeeper 的配置文件,将 AdminServer 的端口修改为其他未被占用的端口。在 ZooKeeper 的配置文件 zoo.cfg 中,可以找到 admin.serverPort 参数,将其值修改为其他端口,例如 admin.serverPort=8888。

2、避免使用 Docker 占用 ZooKeeper 默认的 AdminServer 端口:在启动 Docker 容器时,可以通过 -p 参数将容器的端口映射到宿主机的其他端口,以避免占用 ZooKeeper 默认的 AdminServer 端口 8080。
例如,可以使用类似于以下命令启动 Docker 容器,并将容器的 8080 端口映射到宿主机的 8888 端口:docker run -p 8888:8080 <image_name>. 这样,ZooKeeper 将能够使用默认的 8080 端口启动 AdminServer,而不会与 Docker 进程冲突。请注意,<image_name> 是要运行的 Docker 镜像的名称。具体的命令参数可能会因使用的 Docker 版本和镜像而有所不同,根据环境进行相应的调整。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐