CentOS安装zookeeper

下载zookeeper

根据自己的需求下载相应的版本,zookeeper链接:https://archive.apache.org/dist/zookeeper/

解压缩 zookeeper-X.tar.gz:

tar -zxvf zookeeper-X.tar.gz

进入到 zookeeper-X/conf 目录中:

cd zookeeper-X/conf/

复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:

cp zoo_sample.cfg zoo.cfg

用 vim 打开 zoo.cfg 文件修改配置:

vi zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# dataDir数据目录
dataDir=/usr/zookeeper/zookeeper/data
# netty服务端口,默认8080,可能会与本机的tomcat端口冲突,导致无法启动
admin.serverPort=8081
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

保存并关闭 zoo.cfg 文件

用 vim 修改 /etc/ 目录下的配置文件 profile:

vi /etc/profile

export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH

保存profile后,使 /etc/ 目录下的 profile 文件即可生效:

source /etc/profile

启动 zookeeper 服务:

zkServer.sh start
如打印如下信息则表明启动成功:
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-X/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED

查询 zookeeper 状态:

zkServer.sh status

关闭 zookeeper 服务:

zkServer.sh stop
如打印如下信息则表明成功关闭:
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-X/bin/…/conf/zoo.cfg
Stopping zookeeper … STOPPED

遇到的问题

我在启动的时候发生错误
zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-X/bin/…/conf/zoo.cfg
Starting zookeeper … FAILED TO START
找到日志文件查看错误:

 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

Address already in use是由于端口占用。我的服务器中的tomcat使用了8080端口,而我的zookeeper版本通过jetty启动,默认也使用8080 端口,因此发生端口冲突,启动失败。
查看zookeeper的官方文档,有三种解决方案:

(1)删除jetty。

(2)修改端口。

修改方法的方法有两种,一种是在启动脚本中增加 -Dzookeeper.admin.serverPort=未使用的端口号.一种是在zoo.cfg中增加admin.serverPort=未使用的端口号,我是通过第二种方法,便启动成功了。

(3)停用这个服务,在启动脚本中增加"-Dzookeeper.admin.enableServer=false"

猜你喜欢

转载自blog.csdn.net/u012424449/article/details/83782071