Zookeeper Windows安装小试

最近想学Zookeper,参考了http://blog.csdn.net/u010317829/article/details/52119281 进行动手配置

中间踩了一个坑,记录一下。

单机配置时:只配置dataDir和dataLogDir即可,不用配置下面的server.*

否则会报:Zookeeper Invalid config, exiting abnormally

Zookeeper Windows安装小试_第1张图片

安装集群伪分布模式
 1、分别建立zoo-1.cfg  zoo-2.cfg  zoo-3.cfg
server.id=IP地址:集群中机器与Leader通信的端口Port1:集群进行重新选举时端口Port2
如果为多台服务器,Port1可以相同,否则:同一台机器,则Port1也必须不同

zoo-1.cfg

Zookeeper Windows安装小试_第2张图片
zoo-2.cfg

Zookeeper Windows安装小试_第3张图片
zoo-3.cfg
Zookeeper Windows安装小试_第4张图片

2、在dataDir目录下分别建立d_1、d_2、d_3文件夹,每个文件夹中建立myid文件,myid文件中存放的分别是serverId

d_1/myid 中为1  
d_2/myid中为2  
d_3/myid中为3

Zookeeper Windows安装小试_第5张图片

Zookeeper Windows安装小试_第6张图片

 3、在zookeeper/bin  Copy  zkServer.cmd,修改后分别另存为:zkServer-1.cmd zkServer-2.cmd  zkServer-3.cmd


三个cmd中分别设置ZOOCFG为zoo-1.cfg \zoo-2.cfg\zoo-3.cfg
Zookeeper Windows安装小试_第7张图片

Zookeeper Windows安装小试_第8张图片

  剩下的按原作者教程,直接启动即可。cmd下分别运行zkserver-1.cmd,zkserver-2.cmd,zkserver-3.cmd.
  启动前两个zkserver时,会出现类似下面的错误,这是因为Zookeeper集群启动时,每个结点都会试图去连集群中的其他结点,其他结点还没启动,所以肯定会出现这样的异常的,这样的错误是可以忽略的。当三个结点都启动后就OK了
584] - Cannot open channel to 3 at election address localhost/127.0.0.1:3889
java.net.ConnectException: Connection refused: connect

在搭建中自己遇到的问题或知识点:

一、出现 Invalid config, exiting abnormally 的情况可能有3个:

1、是否开启了日志输出路径dataLogDir,如果开启了检查是不是创建了所需的文件夹
2、检查 myid 是不是在dataDir=/zzy/zookeeper-3.4.5/tmp (tmp 需要自己建立) 目录下。
3、myid 是不是有此文件,并且有值。myid若没有,需要自己建立,内容是一个数字、对应的server数值,就是对应每台服务器的Server ID数字。如:zoo.cfg中server.1,则此文件中内容为1

二、zkcli.cmd    zkcli的所有操作都可以通过API来实现

建立会话连接,zkClient常用的操作和文件系统大致相同,主要包括查看、新增、修改、删除、配额、权限控制等。具体内容可见官方文档或http://blog.csdn.net/u010392705/article/details/69664064

三、集群与单机的访问方式只是ConnectString不同

Zookeeper Windows安装小试_第9张图片
四、zoo.cfg 配置项解释

参数 说明
clientPort 无默认值,必须配置,不支持系统属性方式配置。当前服务器对外提供服务端口,客户通过此端口与服务器建立连接,一般设置为1281。集群中不需要统一端口,可任意配置端口。
dataDir 无默认值,必须配置。服务器存储快照文件目录。默认情况下,如果没有配置dataLogDir,那么事务日志也会存储在这个目录中。建议将事务日志目录独立配置。
tickTime 默认值:3000(ms),,不支持系统属性方式配置。用于配置zookeeper中最小时间单元长度,很多运行时的时间间隔都是使用它的倍数来表示的。
initLimit Leader Zookeeper接收集群其他服务器初始化等待最大时间(10*tickTime)。
syncLimit Leader Zookeeper和集群其他服务器通信最大时间(5*tickTime)。

server.id=host:port:port解析

每一行此配置表示一个集群中的一台服务器。其中id为Server ID,用来标识该机器在集群中的编号。同时,在所在服务器的数据目录(/tmp/zookeeper)下创建一个myid文件,该文件只有一行内容,并且是一个数字,就是对应每台服务器的Server ID数字。

比如server.1=IP1:2888:3888的myid中的内容就是1。不同服务器的ID需要保持不同,并且和zoo.cfg文件中server.id中的id和myid文件的内容保持一致。id的取值范围为1~255。

其中,server.id中配置参数的第一个port是集群中其他机器与Leader之间通信的端口,第二个port为当Leader宕机或其他故障时,集群进行重新选举Leader时使用的端口

参考:
http://blog.csdn.net/u010317829/article/details/52119281 
http://blog.csdn.net/wo541075754/article/details/56830137
http://blog.csdn.net/u010392705/article/details/69664064

你可能感兴趣的:(Zookeeper,zookeeper,windows)