1.zookeeper下载地址
http://apache.fayea.com/zookeeper/
备注:3.5.5版本之后,有bin名称的包是编译后的二进制的包,普通的tar.gz的包里面是只是源码的包。
2.配置
#解压
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
#修改包名
mv apache-zookeeper-3.5.6-bin zookeeper-3.5.6
#在安装目录下新建data和logs文件
mkdir data
mkdir logs
3.修改配置文件
#定位到conf目录下,拷贝一份新的配置文件
cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg
vi zoo.cfg
#修改内容如下
dataDir=/usr/local/zookeeper/zookeeper-3.5.6/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.5.6/logs
#2888 选举端口
#3888 心跳端口
#集群信息:服务器编号 = 主机别名:集群通讯端口:Leader选举端口
server.1=192.168.60.72:2888:3888
server.2=192.168.60.73:2888:3888
#tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
#initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,
而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
#syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
#dataDir:
快照日志的存储路径
#dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
#clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点
#autopurge.purgeInterval 这个参数指定了日志清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。
#autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。
4.拷贝zookeeper到各个服务器
#将配置好的zookeeper复制到192.168.60.73
scp -r /usr/local/zookeeper/zookeeper-3.5.6/ 192.168.60.73:/usr/local/zookeeper
5. dataDir目录下创建myid文件,生成集群id 192.168.60.72
#创建myid
[root@localhost data]# touch "1" > myid
#在myid中写入1
echo "1">>myid #往myid中写入1,对应server.X={IP}:2888:3888 中的x数字
6.修改各个服务器中myid对应的值 192.168.60.73
rm -f ./myid
echo "2">>myid #往myid中写入2,对应server.X={IP}:2888:3888 中的x数字,此处为2
7.配置各个服务器zookeeper环境变量 vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.5.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
8.bin目录下启动各个服务器,并查看启动状态
./zkServer.sh start
查看启动状态 ./zkServer.sh status (192.168.60.72)
查看启动状态 ./zkServer.sh status (192.168.60.73)
jsp命令查看是否有QuorumPeerMain (若存在,则表示启动成功)
客户端连接zookeeper ./zkCli.sh -server 192.168.60.72:2181