http://zookeeper.apache.org/releases.html zookeeper下载地址
版本:zookeeper-3.4.6.tar.gz
本次安装目录:/software/zookeeper-3.4.6/
单机模式安装
单机安装很简单,解压、运行就可以了
1、在/software/zookeeper-3.4.6/目录中解压zk
tar -zxvf zookeeper-3.4.6.tar.gz
2、将zk配置zoo_sample.cfg 拷贝一份,并命名为:zoo.cfg
cd /software/zookeeper-3.4.6/zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
3、运行zk
cd zookeeper-3.4.6/bin/
sh zkServer.sh start
通过上述两个命令就可以启动一个单机的zk server
4、运行zk客户端
sh zkCli.sh -server localhost:2181
通过这个命令就可以启动一个zk的客户端
这样单机的zk就搭建完成,下面将介绍集群zk
集群安装(伪集群)
1、集群安装建立在单机安装的基础上,因为电脑配置原因所以我在一台虚拟机上模拟集群安装,首先先来了解一下zk集群的一些概念然后再单机的基础上进行搭建集群
注意 zk的集群最少需要zn+1台机器
在zk集群中包含三种集群角色
leader 用来处理事务请求并统一协调发起提案投票,负责与follower进行通信
follower 处理非事务请求并且参与提案投票,与leader进行数据交换
observer 处理非事务请求不参与投票,与leader进行数据交换,主要用来扩展zk性能
2、集群搭建开始,在home目录下创建一个zookeeper目录,然后拷贝三份zookeeper-3.4.6并且重命名为
zookeeper-3.4.6-01
zookeeper-3.4.6-02
zookeeper-3.4.6-03
cd /home
mkdir zookeeper
cp -r /software/zookeeper-3.4.6 /home/zookeeper/
mv /home/zookeeper-3.4.6/ /home/zookeeper/zookeeper-3.4.6-01
cp -r /software/zookeeper-3.4.6 /home/zookeeper/
mv /home/zookeeper-3.4.6/ /home/zookeeper/zookeeper-3.4.6-02
cp -r /software/zookeeper-3.4.6 /home/zookeeper/
mv /home/zookeeper-3.4.6/ /home/zookeeper/zookeeper-3.4.6-03
查看一下我的路径
zookeeper-3.4.6-01
zookeeper-3.4.6-02
zookeeper-3.4.6-03
3、在每个zk服务下创建两个文件夹 data 和 logs
cd /home/zookeeper/zookeeper-3.4.6-01
mkdir data
mkdir logs
cd /home/zookeeper/zookeeper-3.4.6-02
mkdir data
mkdir logs
cd /home/zookeeper/zookeeper-3.4.6-03
mkdir data
mkdir logs
4、修改每个zk服务的配置文件,这里先配置,下面会有配置文件的详细表示信息
修改zookeeper-3.4.6-01
cd /home/zookeeper/zookeeper-3.4.6-01/conf
vim zoo.cfg
修改zookeeper-3.4.6-02
cd /home/zookeeper/zookeeper-3.4.6-02/conf
vim zoo.cfg
修改zookeeper-3.4.6-03
cd /home/zookeeper/zookeeper-3.4.6-03/conf
vim zoo.cfg
配置文件详解:
tickTime=2000
代表zk中的时间单位2000毫秒,zk中所有时间都是按这个单位来计算的。
initLimit=10
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,
而是 Zookeeper 服务器集群中Leader 连接到 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,
那么表明这个客户端连接失败。这里表示10个ticktime
syncLimit=5
这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,
最长不能超过多少个 tickTime 的时间长度。这个里表示5个ticktime
dataDir=/home/zookeeper/zookeeper-3.4.6-02/data
存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。
建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。
dataLogDir=/home/zookeeper/zookeeper-3.4.6-02/logs
事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能
clientPort=2182
客户端连接server的端口,即对外服务端口,一般设置为2181吧
server.1=127.0.0.1:2880:3880
server.2=127.0.0.1:2881:3881
server.3=127.0.0.1:2882:3882
这里1、2、3表示每个服务的标识,与myid文件里的数字对应
192.168.2.101每个服务的ip
第一个 端口号用于Follower 和Leader之间的数据同步和其它通信端口
第二个 端口用来表示Leader选举过程中投票通信端口
这里注意:搭建伪集群第一个端口号、第二个端口号不能与clientPort端口相同,否则报错、下面贴出报错内容、这个错误占时不知道为什么,后续看源码肯定可以知道答案
5、为每一个服务配置myid文件,myid文件存在于data目录下
zookeeper-3.4.6-01的myid的值为1
zookeeper-3.4.6-02的myid的值为2
zookeeper-3.4.6-03的myid的值为3
这里的值要与配置文件中server.id的id值对应起来
cd /home/zookeeper/zookeeper-3.4.6-01
vim myid
cd /home/zookeeper/zookeeper-3.4.6-02
vim myid
cd /home/zookeeper/zookeeper-3.4.6-03
vim myid
注意,请确保每个server的myid文件中id数字不同,并且和server.id=host:port:port中的id一致。另外,id的范围是0~255。 我这里用的vim来创建的myid文件,大家可以通过echo快速创建
6、启动每个zk服务
cd /home/zookeeper/zookeeper-3.4.6-01/bin
./zkServer.sh start
cd /home/zookeeper/zookeeper-3.4.6-02/bin
./zkServer.sh start
cd /home/zookeeper/zookeeper-3.4.6-03/bin
./zkServer.sh start
7、查看状态
./zkServer.sh status
9、查看zk服务输出信息
cd /home/zookeeper/zookeeper-3.4.6-01
tail -500 zookeeper.out
10、停止zk
进入每个zk的bin目录下执行
./zkServer.sh stop