1. 实验环境Suse Eneterprise Server 11
IP地址:A: 192.168.1.180 B:192.168.1.44 C:192.168.1.215
软件源:http://zookeeper.apache.org/releases.html#download
2.配置集群
2.1 zookeeper 简介,实践用途可以在apache官网查询,不做过多介绍。个人习惯把软件安装在/usr/local/xxx
2.2 安全问题,本人虚拟机只能内网访问比较安全,所以关闭了防火墙,且仅使用root权限,有这两个方面困扰的同学只能自行想办法解决,本文不提供解决方案。
解压命令:/usr/local # tar zxvf zookeeper-3.4.11.tar.gz
2.3 原始配置文件:集群发现的关键。解压之后的zookeeper-3.4.11/conf/目录下会自带一个原始的 zoo_sample.cfg 重命名一下 mv zoo_sample.cfg zoo.cfg
原始的config 文件只有5条基本配置(原始配置文件里有对每条配置的解释),更多配置请参考官网。
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
2.4 修改配置文件,多数配置是允许自定义的,如果客户端端口号与某些软件冲突可以改为其他的端口。但是dataDir 建议是要改的/tmp 目录绝对不是一个好的选择,至于原因没做深入调查。更改之后的zoo.cfg如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.180:2888:3888
server.2=192.168.1.215:2888:3888
server.3=192.168.1.44:2888:3888 //ip 可以换成 主机别名,但是需要预配置
为了方便的使用: 我在根目录下新建了一个data目录,不仅可以用来存放zookeeper的数据,还可以存放像redis数据文件之类的。
2.5 [ 配置环境变量 ] 该项可选,
export ZOO_HOME=/usr/local/zookeeper-3.4.11
export ZOO_LOG_DIR=$ZOO_HOME/logs
export PATH=$ZOO_HOME/bin:$PATH
2.6 配置节点ID,注意该ID一定要与配置文件里的保持一致,比如虚拟机A 在配置文件里写的是server1 则A之下数据目录下的myid 必须是1, 一定要保持B,C的配置文件中server 列表与A是一致的。
192.168.1.180:/data/zookeeper # ll
total 12
-rw-r--r-- 1 root root 2 Dec 4 19:58 myid
drwxr-xr-x 2 root root 4096 Dec 4 20:01 version-2
-rw-r--r-- 1 root root 4 Dec 4 20:01 zookeeper_server.pid
192.168.1.180:/data/zookeeper # cat myid
1
3. 启动
3.1启动服务,查看服务状态
在A,B,C 节点下/usr/local/zookeeper-3.4.11/bin # ./zkServer.sh start 启动zookeeper 服务,只要保持大于一半的服务可以用则集群认为状态是正常的
/usr/local/zookeeper-3.4.11 # ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
3.2启用客户端/usr/local/zookeeper-3.4.11 # ./bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]