系统环境为 Centos ,由于项目需要,准备搭建 zookeeper-3.5.5 + 用于方便展示节点的zookeeperAdmin用作公司开发之用
zookeeper-3.5.5
下载
前往开源项目下载页面根据需要下载对应的版本(注意要下载文件名后面带”-bin”的包)
懒人链接
[[email protected] zookeeper]# tar -zxvf ./apache-zookeeper-3.5.5-bin.tar.gz
[[email protected] zookeeper]# cd ./apache-zookeeper-3.5.5-bin.tar.gz
[[email protected] zookeeper]# ll
total 44
drwxr-xr-x 2 2002 2002 4096 Apr 9 19:13 bin
drwxr-xr-x 2 2002 2002 4096 Sep 20 14:00 conf
drwxr-xr-x 5 2002 2002 4096 May 3 20:07 docs
drwxr-xr-x 2 root root 4096 Sep 20 13:40 lib
-rw-r--r-- 1 2002 2002 11358 Feb 15 2019 LICENSE.txt
drwxr-xr-x 2 root root 4096 Sep 20 13:43 logs
-rw-r--r-- 1 2002 2002 432 Apr 9 19:13 NOTICE.txt
-rw-r--r-- 1 2002 2002 1560 May 3 19:41 README.md
-rw-r--r-- 1 2002 2002 1347 Apr 2 21:05 README_packaging.txt
[[email protected] zookeeper]# ll
[[email protected] apache-zookeeper-3.5.5-bin]# cd conf
[[email protected] conf]# ll
total 16
-rw-r--r-- 1 2002 2002 535 Feb 15 2019 configuration.xsl
-rw-r--r-- 1 2002 2002 2712 Apr 2 21:05 log4j.properties
-rw-r--r-- 1 2002 2002 922 Feb 15 2019 zoo_sample.cfg
[[email protected] conf]# cp ./zoo_sample.cfg ./zoo.cfg
[[email protected] conf]# cd ../bin/
[[email protected] conf]#
需要留意的
如果在这里直接启动的话可能会启动不成功,因为apache-zookeeper默认监听了8080端口作为自己的zookeeper-server
的服务端。最好是自己在./conf/zoo.cfg中配置一下admin.serverPort=[自己随便改个端口]
,对的,配置文件里默认是没有这行的,这个比较坑。
启动
[[email protected] bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 29414.
[[email protected] bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone
zookeeper-admin
这是一个github上的小项目
功能不多,刚刚够用就行,不整那些花里胡哨的,支持直接使用docker构建,非常方便
[[email protected] zookeeper]# docker run --name zookeeper-admin -p 80:2182 docker.io/ahoowang/zookeeper.admin
[[email protected] zookeeper]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
56bf5522f4fe 4232addbc345 "dotnet ZooKeeper...." About an hour ago Up 2 minutes 0.0.0.0:2182->80/tcp zookeeper-admin
界面看上去还不错。
然而好景不长,跑了一阵发现无法访问了。
[[email protected] zookeeper]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
??? 怎么停止了,看看日志怎么说
[[email protected] zookeeper]# docker logs 56bf5522f4fe
Hosting environment: Production
Content root path: /app
Now listening on: http://+:80
Application started. Press Ctrl+C to shut down.
Application is shutting down...
Hosting environment: Production
Content root path: /app
Now listening on: http://+:80
Application started. Press Ctrl+C to shut down.
Unhandled Exception: System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.MoveNext()
at ZooKeeper.Admin.ZooKeeperManager.<dispose>d__9.MoveNext() in E:\ZooKeeper-Admin\ZooKeeper.Admin\ZooKeeperManager.cs:line 55
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()