安装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