从官网下载 Zookeeper 不要从github下载 https://zookeeper.apache.org/

先去下载:切记是 名字中含有bin的 文件,不然 你启动不了!

当前是windows环境。

解压好了,我们自觉地启动那个名字 包含 server .cmd 的那个文件吧

发现这玩意,他敢闪退,叫二营长,拉意大利炮拉来,

直接编辑他

内容@pause 这是 批处理命令中,程序执行完毕吗,不会里面结束,会告诉你:按任意键结束,你不按,窗口就不会关闭,这个时候,你就可以查看错误日志了。

小逼崽子说,配置文件不对,那就配置一下配置文件呗

进入conf目录

仔细发现 他找的是一个叫conf下面的一个叫zoo.fig的文件,没有这个文件啊,这就需要凭借对其他软件的玩法积累出的思维了,之前搞PHP,就是,没有php.ini,怎么办,复制一份php-开发环境.ini 文件 改个名字 就有了php.ini了。这里估计是差不多滴,那试试?试试就逝世。

复制一根 zoo_sample.cfg 并命名为 zoo.cfg

再次启动呗

那个log4j 的 做过Java 里面就知道是日志,配置花里胡哨,跟程序运行,没直接关系,直接跳过。看zoo_sample.cfg 文件

将那个tmp位置改改 就可以启动单体项目了。

然后 去bin目录下 用脚本程序启动吧。

启动

windows

  • 直接启动就行 双击 zkServer.cmd 但是不能-s 或者status,就是报错。

linux中

文件授权

zookeeper 小心被占用端口是8080,所以 dubbo-admin在tomcat 切换为别的端口,然后启动!!!

./zkServer.sh start 
查看状态
./zkServer.sh status

命令输错 提示信息

Usage: ./zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}

启动失败的去看下日志

自行排查,如果不确定是否启动 可以

lsof -i:2181
1.tickTime:Client-Server通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

2.initLimit:Leader-Follower初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5

3.syncLimit:Leader-Follower同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2 

4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data

5.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B

server.1=itcast05:2888:3888
server.2=itcast06:2888:3888
server.3=itcast07:2888:3888

7.ZK为什么设置为奇数个?
zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2 -> 0; 3 -> 1; 4 - >1; 5 -> 2; 6 -> 2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper呢。

发表评论

您的电子邮箱地址不会被公开。