首先在Zookeeper官网下载最新版本,下载后解压到用户目录下。
tar -zxvf zookeeper-3.4.8.tar.gz
重命名conf目录下zoo_sample.cfg文件为zoo.cfg并且修改其中的配置项
initLimit=10 #默认值
syncLimit=5 #默认值
dataDir=/Users/umgsai/zookeeper/data
dataLogDir=/Users/umgsai/zookeeper/dataLog
server.1=172.24.51.28:2888:3888
其他配置项使用默认值即可。
172.24.51.28为当前机器的IP地址,也可以使用host文件中配置的域名。
2888端口号是zookeeper服务之间通信的端口。
3888端口是zookeeper与其他应用程序通信的端口。
initLimit:配置zookeeper接收客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是指zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳时间长度后zookeeper服务器还没有收到客户端的返回消息,那么表明这个客户端连接失败。总的时间长度就是5*2000=10秒。
syncLimit:配置Leader与Follower之间发送消息,请求和应答时间长度最长不能超过多少个ticketTime的时间长度,总的时间长度就是2*2000=4秒。
server.A=B:C: D 其中A是一个数字,表示这是第几号服务器。B是这台服务器的IP地址。C表示这台服务器与集群中的Leader服务器交换信息的端口。D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于B都是一样,所以不同的zookeeper实例通信端口号不能一样,所以要给他们分配不同的端口号。
在dataDir=/Users/umgsai/zookeeper/data 下创建myid文件
编辑myid文件,并在对应的IP的机器上输入对应的编号。如在zookeeper上,myid文件内容就是1.如果只在单点上进行安装配置,那么只有一个server.1
添加环境变量
vi /home/umgsai/.bash_profile
添加ZOOKEEPER_HOME配置,添加path=%ZOOKEEPER_HOME%/bin
# zookeeper env
export ZOOKEEPER_HOME=/home/umgsai/zookeeper-3.4.8
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
source .bash_profile
在防火墙中打开要用到的端口2181 2888 3888
sudo chkconfig iptables on
service iptables start
编辑 /etc/sysconfig/iptables
vi /etc/sysconfig/iptables
增加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重启防火墙
service iptables restart
检查防火墙状态
service iptables status
启动Zookeeper
进入bin目录下执行
./zkServer.sh start
可以使用jps命令查看进程。
QuorumPeerMain是Zookeeper进程。
查看状态
./zkServer.sh status
查看zookeeper服务输出信息,服务信息输出文件在.../bin/zookeeper.out
tail -500f zookeeper.out
配置zookeeper开始使用umgsai用户启动
编辑/etc/rc.local文件。加入以下内容
su - umgsai -c 'home/umgsai/zookeeper-2.4.8/bin/zkServer.sh start'
参考 http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/