安装前首先下载安装包了。我们进入,zookeeper官网: https://zookeeper.apache.org/releases.html#download
前提:由于zookeeper是使用java语言开发的,所以,在安装zookeeper之前务必先在本机安装配置好java环境!
1,找到下载链接,然后在linux中先下载所需安装包(我这边下载的是3.8.2版本):
注意下载为编译后bin压缩包
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz
解压
tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz
3,配置conf文件
进入到解压后安装目录的…/conf目录下
可以看到这里有个zoookeeper给我们的一个样例配置文件:zoo_sample.cfg,我们在配置我们自己的zk时,需要做的就是将这个文件复制一份,并命名为:zoo.cfg,然后在zoo.cfg中修改自己的配置即可。
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
zoo.cfg的相关配置项其实并不多,这边各个配置项的详细说明如下:
# zookeeper内部的基本单位,单位是毫秒,这个表示一个tickTime为2000毫秒,在zookeeper的其他配置中,都是基于tickTime来做换算的
tickTime=2000
#集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。
initLimit=10
#syncLimit:集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5
# 数据存放文件夹,zookeeper运行过程中有两个数据需要存储,一个是快照数据(持久化数据)另一个是事务日志
dataDir=/tmp/zookeeper
# 客户端访问端口
clientPort=2181
#zk端口不写默认为8080,我本机8080端口已被使用,所以修改端口,不冲突可以不添加此参数
#admin.serverPort=8088
如果本地端口已经被占用,将会报一下错误
2021-06-25 14:08:20,222 [myid:] - ERROR [main:ZooKeeperServerMain@79] - Unable to start AdminServer, exiting abnormally
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:107)
at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:138)
at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:106)
at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:64)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Caused by: java.io.IOException: Failed to bind to /0.0.0.0:8080
解决方法,修改端口在zoo.cfg中添加
admin.serverPort=8088 修改端口号
5,启动服务
zkServer.sh start
可以看到我们的zkServer已经启动好了。
可以查看下启动状态:
zkServer.sh status
关闭zkServer的命令是
zkServer.sh stop
6,客户端连接
zkCli.sh