本文档采用3.4.13(stable)版本搭建,生产环境建议部署当前稳定版本。
zookeeper二进制包下载地址:
http://archive.apache.org/dist/zookeeper/
参考官方文档地址:
http://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_systemReq
必备软件
ZooKeeper 在 Java 中运行,版本 1.6 或更高版本(本文采用8版本)。它作为ZooKeeper服务器的运行基础环境。
三个ZooKeeper服务器是整体的最小建议大小,建议部署在不同的物理机器上。
在Yahoo!,ZooKeeper通常部署在专用的RHEL盒子上,具有双核处理器,2GB RAM和80GB IDE硬盘。
安装部署
为了生产环境的 ZooKeeper 服务的可靠性,我们通常会部署多节点的 ZooKeeper 以确保服务的容错性。
准备三台测试服务器进行部署,分别添加进 hosts 文件
192.168.4.100 master
192.168.4.21 node
192.168.4.57 node1
添加同步时间的任务计划啊(三台机器都执行)
yum install -y ntpdate
echo "*/5 * * * * ntpdate time.windows.com" >> /var/spool/cron/root
注:搭建 Zookeeper 集群最好使用奇数个机器。例如,使用四台机器,ZooKeeper 只能处理单台机器的故障; 如果两台机器出现故障,其余两台机器不会占多数。但是,有了五台机器,ZooKeeper可以处理两台机器的故障,当有六台时也只能处理两台机器的故障。
冗余注意事项应包括环境的所有方面。如果有三台ZooKeeper服务器,但它们的网络电缆都插入同一个网络交换机,那么该交换机的故障将影响整个集群。
1、下载并解压二进制文件
[root@master ~]# tar zxf zookeeper-3.4.13.tar.gz
2、进入目录查看文件分布
3、进入配置文件目录
[root@master conf]# cp zoo_sample.cfg zoo.cfg
4、修改配置文件
[root@master conf]# cat zoo.cfg |grep -v ^$ |grep -v ^#
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/bigdata/zookeeper-3.4.13/data # 修改默认配置文件路径,不建议使用/tmp
clientPort=2181
# 新增集群配置 server.id = host:port:port 地址,id值唯一,host地址对应的id值需与各节点data目录下myid一致
server.1=master:2888:3888
server.2=node:2888:3888
server.3=node1:2888:3888
5、编辑 bin/zkEnv.sh 设置日志目录(启动如果报错多从日志中寻找信息)
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/bigdata/zookeeper-3.4.13/logs"
fi
6、在data目录下创建myid文件,并写入指定id
myid文件由一行组成,只包含该机器id的文本。所以服务器1的myid将包含文本“1”而没有别的。id在整体中必须是唯一的,并且应该具有1到255之间的值。
[root@master zookeeper-3.4.13]# echo '1' >data/myid
7、将 zookeeper-3.4.13 文件传输到其他节点上
[root@master bigdata]# scp -r zookeeper-3.4.13 192.168.4.21:/bigdata/
[root@master bigdata]# scp -r zookeeper-3.4.13 192.168.4.57:/bigdata/
8、分别在节点上修改成对应myid
# node 节点
[root@node zookeeper-3.4.13]# echo '2' >data/myid
# node1 节点
[root@node1 zookeeper-3.4.13]# echo '3' >data/myid
9、在各节点分别启动zookeeper
[root@node bin]# ./zkServer.sh start
10、查看各节点状态
[root@master bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /bigdata/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower
[root@node bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /bigdata/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader
[root@node1 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /bigdata/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower
在现有集群中三个节点的情况下,关闭两个节点后,第三个节点的状态会出现异常。
启动一个节点(两个节点)状态又可以恢复;主节点关闭后,会选举新的主节点,原主节点启动后会作为从节点。
11、通过连接到主机来测试部署
在Java中,您可以运行以下命令来执行简单操作:
[root@master bin]# ./zkCli.sh -server master:2181