zookeeper 安装 测试及集群
Posted 飞叶-枯寂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper 安装 测试及集群相关的知识,希望对你有一定的参考价值。
centos 安装 zookeeper-3.5.2-alpha.tar.gz
网上搜索了 一下 安装教程 其实很简单
主要总结一下 中间遇到的坑
1.zookeeper 3.4.6 启动失败。
很有可能是配置的日志目录在文件系统中没有新建。
2.zookeeper 3.5+ 启动失败。
这个是我今天遇上的问题,报错:
[java] view plain copy
print?
2015-03-24 16:16:44,231 [myid:] - ERROR [main:[email protected]] - Unable to start AdminServer, exiting abnormally
org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on port 8080, command URL /commands
at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:89)
at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:123)
at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:99)
at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:57)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:125)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:181)
at org.mortbay.jetty.bio.SocketConnector.newServerSocket(SocketConnector.java:80)
at org.mortbay.jetty.bio.SocketConnector.open(SocketConnector.java:73)
at org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.java:283)
at org.mortbay.jetty.bio.SocketConnector.doStart(SocketConnector.java:147)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.Server.doStart(Server.java:235)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:85)
... 5 more
很明显是由于端口占用。我服务器中的tomcat占用了8080端口,而zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口。
通过查看zookeeper的官方文档,发现有3种解决途径:
(1).删除jetty。
(2)修改端口。
修改方法的方法有两种,一种是在启动脚本中增加 -Dzookeeper.admin.serverPort=你的端口号.一种是在zoo.cfg中增加admin.serverPort=没有被占用的端口号
(3)停用这个服务,在启动脚本中增加"-Dzookeeper.admin.enableServer=false"
3.客户端使用的zookeeper和部署在服务端的版本不一致。(这个是网上有人说的,我也没遇到。)
4.也有可能是 服务器防火墙 没有开启 zookeeper默认的2181 端口
5.安装目录下 conf 里 默认的配置 文件 要改成 zoo.cfg 或者 复制 一份 改成 zoo.cfg
附 zoo.cfg 配置
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/zookeeper/zookeeper/data
clientPort=2181
admin.serverPort=2182
启动ZooKeeper服务器: bin/zkServer.sh start
启动 CLI:bin/zkCli.sh
停止ZooKeeper服务器:bin/zkServer.sh stop
接下来 配置 zookeeper 集群
以上是关于zookeeper 安装 测试及集群的主要内容,如果未能解决你的问题,请参考以下文章
ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架