1.单节点zk搭建
1.)安装
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz
# 解压
tar -xcf aparche-zookeeper-3.6.0-bin.tar.gz
2.)zoo.cfg配置文件
# The number of milliseconds of each tick
tickTime=2000 #心跳的单元时间 2s
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 #follower和leader开始连接的最长时间 20s
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 #follower和leader同步的最长时间 10s
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper/zk1 #myid所在目录,数据目录
dataLogDir=/data/zookeeper/zk1/logs # 日志目录
# the port at which the clients will connect
clientPort=2181 # 客户端连接server的端口,即对外服务端口
server.1=dev1.xiayu.com:2881:3881
server.2=dev2.xiayu.com:2882:3882
server.3=dev3.xiayu.com:2883:3883
#server.1 server.2 server.3代表有3台机器 123要同myid文件对应;
#2881,2882,2883是数据同步端口;
#3881,3882,3883是选举端口
3.)在zk数据目录data目录下,创建myid文件
vim myid
1 # 三个文件中,分别写入1,2,3 表示节点序号
4.)启动
./bin/zkServer.sh start
# 查看状态
./bin/zkServer.sh status
# 查看进程
jps
# 查看集群状态
zkServer.sh status
5.)命令行访问
./bin/zkCli.sh -server dev1.xiayu.com:2181,dev2.xiayu.com:2182,dev3.xiayu.com:2183 # 连接所有节点
./bin/zkCli.sh -server 192.168.20.120:2181
6.)ZK配置sasl
修改zoo.cfg
# sasl配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
添加用户
运行zkCli.sh
# 查看当前身份认证
getAcl /
# 增加一个认证用户
addauth digest zkadm:123456
设置权限
setAcl / auth:zkadm:123456:cdrwa
重启服务
zkServer.sh restart # 貌似可以不重启
7.)zk常用命令
bin/zkCli.sh -server 127.0.0.1:2181 # zkCli 客户端连接
# 创建节点
create /mynode hello # 创建永久节点
create -s /mynode hello # 创建有序节点
create -e /temp hello # 创建临时节点
# 列出节点
ls /mynode # 列出节点
ls -s /mynode # 显示详情
# 节点监控
ls -w /mynode # 注意:监听是一次性的
create /mynode/subnode2 # 创建节点会产生NodeChildrenChanged事件
delete /mynode/subnode2 # 删除节点也会产生NodeChildrenChanged事件
ls -w /mynode/subnode2 # 监听子节点
delete /mynode/subnode2 # 会有删除节点的事件NodeDeleted
# 获取节点信息
get /mynode
get -s /mynode # 获取详情
get -w /mynode/subnode # 监控节点信息变化
delete /mynode/subnode # 删除节点事件 NodeDeleted
# 节点状态
stat /mynode
# 如果节点内容发生改变,会产生 NodeDataChanged 事件;如果删除节点,会产生 NodeDeleted 事件
stat -w /mynode 监听节点状态
# 修改节点信息
set /mynode hello # 修改节点值之后,mZxid、mtime、dataVersion 都发生了变化
stat /mynode
#删除节点
delete /mynode
deleteall /mynode # 如果有子节点的时候,都会删除
# 其他
history # 历史记录
redo [cmdno] # 重复之前的命令,加命令编号
printwatches on|off #输出watch事件
quit # 退出
sync path # 强制客户端所连接的服务器状态与leader的状态同步
2. zookeeper连接工具
PrettyZoo: https://cloud.tencent.com/developer/article/1758584
https://zhuanlan.zhihu.com/p/353163620
总结
zk集群搭建所需外部变量:
1.)数据目录、日志目录
2.)服务端口,默认2181
3.)其他节点的IP,数据同步端口,选举端口 (默认2881:3881)
4.) JAVA环境