ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。在分布式泛滥的今天,ZooKeeper发挥着非常大的作用。
ZooKeeper是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。
我们本次所采用的环境是CentOS6.9,JDK1.8,ZooKeeper使用的是最新稳定版本3.4.9
安装步骤
由于ZooKeeper的特性,我们需要准备至少3台节点来进行部署ZooKeeper。注意ZooKeeper集群的数量必须是奇数。具体原因查看ZooKeeper的原理。
- 最小化安装CentOS6.9
- 配置各节点网络环境,具体的根据服务器规划来设置
- 下载并安装jdk,操作比较简单,参考Linux下安装部署Java环境
- 下载ZooKeeper,下载地址
- 解压ZooKeeper, 操作比较简单,
tar -zxvf ***.tar.gz
解压到/usr/local/zookeeper
下 - 配置ZooKeeper, 重点,下面具体说
- 启动服务
- 停止服务
服务器规划
IP地址 | 部署服务 |
---|---|
192.168.228.101 | zookeeper-01 |
192.168.228.102 | zookeeper-02 |
192.168.228.103 | zookeeper-03 |
配置ZooKeeper
解压之后目录结构下有conf文件夹,在conf文件夹下有zoo_example.cfg
- 拷贝zoo_example.cfg。ZooKeeper默认读取的是conf下的zoo.cfg配置文件,因此我们先拷贝一份事例文件
cp zoo_example.cfg zoo.cfg
- 修改配置文件,这里主要关联其他节点
这里我们关注两个划红线的地方,第一个是数据文件的路径,默认在tmp下,这里修改到了/var/lib/zookeeper下。主要要在指定的目录下创建这个文件夹。
mkdir /var/lib/zookeeper
第二个地方是配置服务器,server.后面跟的是服务器的id,一个整数值,从1-255之间。后面是机器的ip地址和端口号
这个地方需要注意,在数据目录下,要创建一个myid的文件,文件内容就是server.id。比如例子中的192.168.228.101在/var/lib/zookeeper/myid 的内容就是1
touch myid
echo 1 > myid
3.拷贝解压并配置好的ZooKeeper文件夹复制到另外两个节点中。
scp -r zookeeper... root@192.168.228.102:/usr/local/
如果scp没有安装使用yum安装scp
yum install openssh-clients -y
4.启动ZooKeeper集群
./usr/local/zookeeper/bin/zkServer.sh start
5.查看启动状态
telnet localhost 2181
stat
- 停止ZooKeeper集群
./usr/local/zookeeper/bin/zkServer.sh stop
遇到的问题
查看系统日志
如果启动不成功,第一个要找的就是系统日志。ZooKeeper的系统日志是使用log4j记录的,默认的位置是在当前位置,也就是在/usr/local/zookeeper/bin下的zookeeper.out的文件中。通过tail -f zookeeper.out
可以查看。
防火墙
启动不成功的很大原因有可能是被防火墙拦截了,因此可以通过service iptables stop
关闭防火墙
myid文件
在拷贝的过程中,不要忘记了创建dataDir和创建myid文件,并且每个节点的myid文件的内容是不同的。