1. 系统环境及配置环境变量
CentOS 5.10 x86_64
JDK.1.6.0_33
Zookeper3.4.6
在/etc/profile.d目录下增加java.sh脚本(也可以修改用户的bash配置文件:~/.bash_profile),内容如下:
# vi /etc/profile
#-------------------zkServer & jdk home begin-----------------------------------
export JAVA_HOME=/usr/local/jdk1.6.0_33
export JRE_HOME=$JAVA_HOME/jre
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export CLASSPATH=$JAVA_HOME/lib/:$JAVA_HOME/lib/jer/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
#-------------------zkServer & jdk home end----------------------------------
使环境变量生效
# source /etc/profile
2. 安装JDK并环境变量
ZooKeeper 要求JAVA 的环境才能运行,并且需要 JAVA6 以上的版本,可以从 SUN官网上下载,
安装脚本:
# chmod 755 jdk-6u6-linux-i586.bin
# ./jdk-6u6-linux-i586.bin
# mv jdk1.6.0_32/ /usr/local
测试JDK安装是否正确
[root@localhost ~]# java -version
java version "1.6.0_33"
OpenJDK Runtime Environment (IcedTea6 1.13.5) (rhel-1.13.5.0.el5_11-x86_64)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
3. 安装Zookeeper
3.1 下载安装
下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 创建zoo.cfg:
# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
# tar zxvf zookeeper-3.4.6.tar.gz
# mv zookeeper-3.4.6 /usr/local/
# cd /usr/local/zookeeper-3.4.6
3.2 单机模式配置
# cd conf
# cp zoo_sample.cfg zoo.cfg
# vom zoo.cfg
tickTime=2000
dataDir=/data/zookeeper
clientPort=2181
配置文件参数说明
- tickTime: zookeeper中使用的基本时间单位, 毫秒值
- dataDir: 顾名思义就是 Zookeeper 保存数据的目录。
- dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
- clientPort: 监听client连接的端口号.
3.3 集群模式
# cd conf
# cp zoo_sample.cfg zoo.cfg
# vom zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888
配置文件参数说明
- initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
- syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
- server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.
如果配置的是伪集群模式(1台服务器上部署3个ZK服务), 需要将整个目录复制2份,并修改dataDIR,clientPort,以及各个server的B, C参数也必须不同.
设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:
# echo "1" > /data/zookeeper/myid
3.4 启动,停止服务
启动服务
# bin/zkServer.sh start
关闭服务
# bin/zkServer.sh stop
连接测试
# bin/zkCli.sh -server 127.0.0.1:2181