原文:出自本人的Linux博客http://blog.csdn.net/unix21/
ZooKeeper版本:3.4.5
约定:3台虚拟机
前提:需要安装JDK,关于Linux环境JDK安装配置参考我的另一帖Linux环境安装卸载JDK以及安装Tomcat和发布Java的web程序
ZooKeeper官网:http://zookeeper.apache.org/
1.下载解压
# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
# tar zxvf zookeeper-3.4.5.tar.gz
# cd zookeeper-3.4.5
2.配置
1).建立数据目录
# mkdir data
2).编辑配置文件
# cd /usr/zookeeper-3.4.5/conf
conf目录下修改文件名 zoo_sample.cfg 改为 zoo.cfg
# mv zoo_sample.cfg zoo.cfg
# vim ./conf/zoo.cfg
#dataDir=/tmp/zookeeper
dataDir=/usr/zookeeper-3.4.5/data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
注意千万不要把IP写错了,不然启动后会报奇怪的错误!
快照是需要的#mkdir data
如果需要事务#mkdir datalog
新建配置文件zoo.cfg,保存在conf子目录下,写入以下内容:
tickTime=# Zookeeper服务器心跳时间,单位毫秒
dataDir= # 数据持久化路径
clientPort=# 连接端口
initLimit=# 投票选举新leader的初始化时间。
syncLimit=# Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer挂掉,从服务器列表中删除Follwer
dataLogDir=# 日志保存路径 这个要自己新建,具体目录根据自己的实际情况为准!
3).新增myid文件
# cd /usr/zookeeper-3.4.5/data
在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在192.168.1.1上,“myid”文件内容就是1,在192.168.1.2上,内容就是2,在192.168.1.3上,内容就是3
3.修改防火墙
如果是用iptable的话,在/etc/sysconfig/iptables中加入ZooKeeper的端口:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 –j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 –j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 –j ACCEPT
执行防火墙重启命令:
4.启动ZooKeeper
启动
# /usr/zookeeper-3.4.5/bin/zkServer.sh start
[root@localhost conf]# /usr/zookeeper-3.4.5/bin/zkServer.sh start
JMX enabled by default
Using config: /usr/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
停止
# /usr/zookeeper-3.4.5/bin/zkServer.sh stop
重启
# /usr/zookeeper-3.4.5/bin/zkServer.sh restart
5.检查状态
# /usr/zookeeper-3.4.5/bin/zkServer.sh status
可能需要安装nc包
# yum install nc
ZooKeeper会自动选出Leader,一旦Leader挂了会选出新的Leader。
Leader/Follower会通过选举算法进行选择。
6.客户端登陆
# /usr/zookeeper-3.4.5/bin/zkCli.sh -server 127.0.0.1:2181