安装包下载地址:http://mirror.bit.edu.cn/apache/zookeeper,记住要下载那个bin的不要下tar.gz包不然即使你安装了也会报错误: 找不到或无法加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain,你安装了也无法起来zk
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz
注意:在安装zk之前请先确保要部署的三台机器均已经安装JDK.
zk服务治理实现模型: 注册中心,生产者,消费者,注册中心注册了关于生产消费者的所有信息简单来说就是想要实现治理服务,必须要知道哪台机器提供什么服务,该找谁,也就ip映射服务之间的映射关系是怎样的,
zk通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除
tar -xvf apache-zookeeper-3.5.6.tar.gz && cd apache-zookeeper-3.5.6.tar.gz/conf
将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名):
cp zoo_sample.cfg zoo.cfg
zoo.cfg参数解释:
打开zoo.cfg,可以看到默认的一些配置。
- tickTime
时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。
tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。 - clientPort
zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。 - dataDir
无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录;注意:如果想配置集群的话,请在clientPort下面添加服务器的ip
注意:如果想配置集群的话,请在clientPort下面添加服务器的ip
server.1=192.168.110.151:2888:3888
server.2=192.168.110.152:2888:3888
server.3=192.168.110.153:2888:3888
vim zoo.cfg
修改此三处:
接下来和重要的一步:
在每台机器刚才zoo.cfg dataDir路径下的data目录下创建myid :
touch myid
echo 1 > myid 这句在192.168.110.151执行
echo 2 > myid 这句在192.168.110.152
echo 3 > myid 这句在192.168.110.153
这里的1,2,3其实就是server.后面带的1,2,3标识符你也可以自己起别的:
server.1=192.168.110.151:2888:3888
server.2=192.168.110.152:2888:3888
server.3=192.168.110.153:2888:3888
在创建完后配置zk 环境以及配置的环境变量告诉zk 引用config 下刚才你cp 的zoo.cfg配置,这个执行命令行执行也可以,直接配置到/ect/profile也可以,如果这样记得source 激活
export ZOOKEEPER_INSTALL=/usr/local/apache-zookeeper-3.5.5-bin
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
以上操作每台机器都要来一遍
此外还要关闭防火墙或者开放zkport这里为了节省步骤我直接关闭防火墙了:
systemctl stop firewalld
最后逐个启动每台机器:
cd usr/local/apache-zookeeper-3.5.5-bin/bin
执行:
sh zkServer.sh start
启动状态查看:
sh zkServer.sh status
follower:
如果启动失败就是这个myid 文件不存在导致的在logs目录下可以看见错误提示:
失败错误提示:
[root@hostuser3 bin]# sh zkServer.sh start
/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START
日志错误提示:
root@hostuser3 logs]# ll
total 4
-rw-r--r--. 1 root root 1385 Jan 4 23:42 zookeeper-root-server-hostuser3.out
[root@hostuser3 logs]# cat zookeeper-root-server-hostuser3.out
2020-01-04 23:42:30,720 [myid:] - INFO [main:QuorumPeerConfig@133] - Reading configuration from: /usr/local/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
2020-01-04 23:42:30,726 [myid:] - INFO [main:QuorumPeerConfig@385] - clientPortAddress is 0.0.0.0/0.0.0.0:2181
2020-01-04 23:42:30,726 [myid:] - INFO [main:QuorumPeerConfig@389] - secureClientPort is not set
2020-01-04 23:42:30,730 [myid:] - ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/local/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:154)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Caused by: java.lang.IllegalArgumentException: myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.checkValidity(QuorumPeerConfig.java:734)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:605)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:420)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:150)
... 2 more
Invalid config, exiting abnormally
来源:https://www.cnblogs.com/SunshineKimi/p/12150624.html