zookeeper 3.5 AdminServer

前言

笔者很久没有使用zookeeper,一直稳定运行着3.4版本的zookeeper。并且业务也在流行去zk化,zk的ZAB协议决定了不能无限扩容,选主复制恢复决定了这是一个中心化的思想。但是笔者在升级到3.5的时候居然,不能启动,说Unable to start AdminServer。什么时候多了这玩意,干啥的呢?

AdminServer

笔者看日志发现是8080端口冲突,笔者查询了官方文档,说这是一个jetty的嵌入式服务器,默认开启,端口就是8080,跟笔者业务冲突了官方文档

The AdminServer
New in 3.5.0: The AdminServer is an embedded Jetty server that provides an HTTP interface to the four letter word commands. By default, the server is started on port 8080, and commands are issued by going to the URL “/commands/[command name]”

zookeeper这是自己搞了一个简易应用服务器,可以查看一些信息,笔者先在本地环境启动成功zookeeper3.5,看到可以查看这些信息
zookeeper 3.5 AdminServer
随意点击一个
zookeeper 3.5 AdminServer
原来是用来查看配置信息的,其他选项应该也有相应的功能,每个命令有什么功能官方都有详细的解析:官方文档
也可以看zookeeper的lib目录,jetty的jar
zookeeper 3.5 AdminServer

配置AdminServer

上面讲述了AdminServer是干啥的,那么能否禁用呢,或者规避端口,官方也给出了详细的讲解
zookeeper 3.5 AdminServer
设置系统变量即可禁用,改端口,改url。也就是说我们可以在启动时通过-D参数来实现上述功能
当然由于是zookeeper参数,我么也可以配置进zoo.cfg文件
笔者修改为8180
zookeeper 3.5 AdminServer
重启一下
zookeeper 3.5 AdminServer
ok了,冲突也解决了。

集群配置

笔者经常看见查询各种博客来配置zookeeper集群,其实没必要,官方有详细的示例:示例
zookeeper 3.5 AdminServer
非常的详细,还有各种配置参数的说明,照着做即可

总结

zookeeper其实功能非常强大,比如分布式锁,配置中心,注册中心等。只是随着微服务与容器等技术与业务快速扩容的需求,很多时候不能很好的支持,比如不能无限扩容,比如很多时候并不需要强一致性。zookeeper集群需要一半以上的节点存活才能正常工作,一般推荐3+2或者5+3模式。

zookeeper其实官方文档很完善,也很好配置,可以根据需要调整配置。