1.zookeeper安装
安装一个zk其实很简单,就是下载zookeeper安装包:https://archive.apache.org/dist/zookeeper/ ,然后解压压(tar -zxvf
) 就好了。
1.1 单点模式
一般情况下,在开发测试环境,没有这么多资源的情况下,而且也不需要特别好的稳定性的前提下,我们可以使用单机部署。
tar -zxvf zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 /usr/local/zookeeper // 注:由于/usr/local/zookeeper目录是在移动时才创建,所以复制的结果是将zookeeper-3.4.5的内容直接复制进去
初次使用zookeeper,需要将conf目录下的zoo_sample.cfg文件copy一份重命名为zoo.cfg,修改dataDir目录,dataDir表示日志文件存放的路径
cd /usr/local/zookeeper
mkdir data // 创建用于存储临时数据的目录
mkdir log // 创建用于存储日志数据的目录
cd conf
cp zoo_sample.cfg zoo.cfg // 通过copy的方式创建zoo.cfg
vim zoo.cfg // 修改配置
修改如下配置:
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
下来就该启动zookeeper了:
/usr/local/zookeeper/bin/zkServer.sh start
几条常用命令(zkServer和zkCli脚本都在zk的bin目录下):
1. 启动ZK服务: zkServer.sh start
2. 查看ZK服务状态: zkServer.sh status
3. 停止ZK服务: zkServer.sh stop
4. 重启ZK服务: zkServer.sh restart
5. 连接服务器: zkCli.sh -server ip:port
1.2 集群模式
在zookeeper集群中,各个节点总共有三种角色,分别是:leader,follower,observer 集群模式我们采用模拟3台机器来搭建zookeeper集群。
搭建每台zk的步骤与上面搭建单点zk相同,只不过在配置zoo.cfg时有所不同,集群模式下肯定还要配置各个节点对不?
server.1=192.168.43.20:2888:3888 【2888:访问zookeeper的端口;3888:重新选举leader的端口】
server.2=192.168.43.21:2888:3888
server.3=192.168.43.20:2888:3888
在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,按照格式server.id=host:port:port,每一行代表一个机器配置
server.A=B:C:D中的 A/B/C/D 是什么意思?
- A:Server ID:,用来标识该机器在集群中的机器序号;
- B :是这个服务器的 ip地址; 如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端 口号
- C: 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
- D: 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举, 选出一个新的 Leader, 而这个端口就是用来执行选举时服务器相互通信的端口。
除此之外,在每台 zookeeper 机器上我们还需要在数据目录(dataDir)下创建一个 myid 文件,该文件只有一行内容,对应每台机器的Server ID数字。比如server.1的myid文件内容就是1。
cd ../data
touch myid
echo "1">>myid // server1机器的id是1
注意,必须确保每个服务器的 myid 文件中的数字不同,并且和自己所在机器的 zoo.cfg 中 server.id 的id值一致(id的范围是1~255)。
将配置好的 zookeeper 拷贝到 slave1 和 slave2,然后启动三个节点,启动/关闭方式同上。
2.Zookeeper常用命令
现在我们已经bin/zkCli.sh -server localhost:2181
链接上了zk,那接下来该怎么操作呢?
2.1 状态信息
1.查看集群状态
status
2.查看指定znode的子节点
ls /key
3.查看指定节点状态
stat /key
2.2 CRUD
1.创建节点
create /key value // 默认是持久节点
create -e /key value // 临时节点
create -s /key value // 顺序节点
create -s -e /key value
2.查看指定znode的值
get /key
3.设置、修改指定节点数据
set /key value
- 删除指定节点
delete /key
2.3 事件监听
监听指定节点状态,注:监听只是一次,下一次变化(set)不再能收到反馈
get /key watch
最后,想了解更多命令的同学,这里放一个命令的参考链接…