zookeeper集群安装部署
系统要求
对Zookeeper支持最好的平台是Linux,ZooKeeper在Java中运行,需要推荐使用JDK 8或更高版本。
ZooKeeper集群的最小大小为3,当然你可以部署更多的Zookeeper集群节点,但是最好是奇数个节点,这是为了保证集群选举时能推选出主节点。下面用作演示的版本为3.4.12,可以到官网下载。
下载
首先,选择一台机器下载Zookeeper安装包。
1 | 下载安装包 |
Notes: 如果出现报错信息,curl: (35) Peer reports incompatible or unsupported protocol version.可能是由于curl版本过低,可以将
https
修改为http
或者使用yum更新curl
1 | 解压缩,重命名并移动到对应目录 |
*修改java heap size(可选)
由于当内存不足时, swapping操作会严重拖慢zookeeper的性能,所以需要设置Java运行时的”heap size”(堆容量)。
对于内存的分配,还是根据项目和机器情况而定。如果内存够用,适当的大点可以提升zk性能。
1 | 新建一个文件 |
文件内容如下
1 | #!/bin/sh |
修改配置文件
1 | 修改机器的hostname |
对于三台机器依次修改为node1
,node2
,node3
修改/etc/hosts
,添加zookeeper集群对应的域名和IP地址映射
形如192.168.31.24 node1
以下操作均在node1上执行
1 | 复制示例配置文件 |
文件内容如下
1 | tickTime=2000 |
配置项 | 解释 |
---|---|
tickTime | Zookeeper的基本时间度量单位,毫秒 |
initLimit | 节点与leader连接同步的时间,单位为tickTime |
syncLimit | 节点数据同步的时间,单位为tickTime |
dataDir | 数据库快照的存放地址,默认也存放日志(除非配置了dataLogDir ) |
dataLogDir | 存放事务日志的地址,如果和dataDir 分开有助于提高吞吐 |
clientPort | Zookeeper客户端连接的端口地址 |
server配置项 | 形如:server.myid =hostname :tickport :electionport |
需要讲解下server.1=node1:2888:3888
这一行的配置。server.
是固定写法,1
代表zookeeper节点的ID,唯一的属于[1,255]之间的整数node1
为我配置的机器的hostname
2888
为tickport
, 是zookeeper节点用于内部通信的端口3888
为electionport
,是zookeeper节点用于选举的端口
autopurge.snapRetainCount
和 autopurge.purgeInterval
设置于清除最近3天的快照外的其他快照.
接下来需要创建dataLogDir
和dataDir
文件夹
1 | cd /root/bin/zookeeper |
将文件分发到各个节点
1 | cd /root/bin |
在集群的三个节点分别设置myid
,以node2为例
1 | cd ~/bin/zookeeper/data |
在集群的三个节点配置环境变量
1 | vim ~/.bashrc |
添加如下几行
1 | # Zookeeper |
1 | 使配置生效 |
启动与验证
在集群上分别执行启动命令
1 | zkServer.sh start |
可以看到有QuorumPeerMain
进程,说明zookeeper正常启动
1 | 查看各个节点的状态 |
Notes: 如果启动出错,可以通过zookeeper.out的日志排查错误,常见的错误是端口被禁用或占用,这时候需要修改配置文件中对应的端口号,还可能是Hosts文件没有正确配置,或者防火墙禁用了端口
不同的节点返回的状态不同,比如
1 | node1 |
出现如上信息,说明我们的zookeeper集群成功启动。
参考资料
版权声明:
除另有声明外,本博客文章均采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 进行许可。
分享