CentOS7 安装 zookeeper3.7.0

635 阅读1分钟

安装JDK

ZooKeeper运行在java环境下,所以需要先安装jdk,且要求版本高于1.6

下载 Zookeeper3.7

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz --no-check-certificate

解压

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

移动安装位置(可不执行)

mv apache-zookeeper-3.7.0-bin /usr/local/

创建相关目录及文件

# 进入zk目录,这里进入的是自己安装的Zookeeper路径
cd /usr/local/apache-zookeeper-3.7.0-bin/

#创建日志文件
mkdir dataDir && mkdir dataLogDir

#进入conf执行
cd /usr/local/apache-zookeeper-3.7.0-bin/conf/

#拷贝并且重命名
mv zoo_sample.cfg zoo.cfg

配置zoo.cfg文件

#使用vim命令打开zoo.cfg
vim /usr/local/apache-zookeeper-3.7.0-bin/conf/zoo.cfg

#编辑如下
#tickTime: 服务器与客户端之间交互的基本时间单元(ms)

#dataDir: 保存zookeeper数据的路径

#dataLogDir: 保存zookeeper日志的路径,如果此配置项不存在时默认路径与dataDir一致

#clientPort: 客户端访问zookeeper时所连接的端口
#dataDir=/tmp/zookeeper
# 路径为自己的实际路径为准
dataDir=/usr/local/apache-zookeeper-3.7.0-bin/dataDir
dataLogDir=/usr/local/apache-zookeeper-3.7.0-bin/dataLogDir

#保存退出

启动

# 启动命令

[root@localhost apache-zookeeper-3.7.0-bin]# /usr/local/apache-zookeeper-3.7.0-bin/bin/./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED


# 测试是否启动正常
[root@localhost apache-zookeeper-3.7.0-bin]# /usr/local/apache-zookeeper-3.7.0-bin/bin/./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone


配置环境变量(可不执行)

vim /etc/profile

# 在文件末尾添加
# 添加ZookeeperHOME路径
export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.7.0-bin/
export PATH=$PATH:${JAVA_HOME}/bin:$ZOOKEEPER_HOME/bin

#使生效
source /etc/profile

#测试环境变量
[root@localhost apache-zookeeper-3.7.0-bin]# cd /home/
[root@localhost home]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

设置开机启动

创建systemd服务文件

vim /usr/lib/systemd/system/zookeeper.service

#添加如下内容

[Unit]
#描述,根据服务定义
Description=zookeeper
#默认
After=network.target

#服务运行参数  
[Service]
Type=forking
#指定JDK,systemd 管理的服务的环境变量是不会去加载 /etc/profile的
Environment="JAVA_HOME=/home/yhwl/jdk1.8.0_271"
#服务启动运行命令
ExecStart=/usr/local/apache-zookeeper-3.7.0-bin/bin/./zkServer.sh start
#重启
ExecReload=/usr/local/apache-zookeeper-3.7.0-bin/bin/./zkServer.sh restart
#关闭
ExecStop=/usr/local/apache-zookeeper-3.7.0-bin/bin/./zkServer.sh stop
#默认
PrivateTmp=true

[Install]
#默认
WantedBy=multi-user.target

#保存退出

添加 zookeeper服务

systemctl enable /usr/lib/systemd/system/zookeeper.service

启动

systemctl start zookeeper.service

重启

systemctl restart zookeeper.service

关闭

systemctl stop zookeeper.service

CentOS7 安装 zookeeper3.7集群

异常1:

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:179)
        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:170)

解决1

这是Zookeeper AdminServer,默认使用8080端口,在zoo.cfg中修改AdminServer的端口

clientPort=2181
admin.serverPort=2282