Zookeeper集群搭建

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环境

参考链接

zookeeper原理

zookeeper原理和应用场景

zookeeper环境搭建

zookeeper环境搭建2

zookeeper常用命令

【励志篇】: 古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
原文地址:https://www.cnblogs.com/tomtellyou/p/15018839.html