ZooKeeper-集群操作、nc工具使用
1、命令简介
1.1、常见命令
命令 内容 conf 输出相关服务配置的详细信息 cons 列出所有连接到服务器的客户端的完全的连接/会话的详细信息 envi 输出关于服务环境的详细信息 dump 列出未经处理的会话和临时节点 stat 查看哪个节点被选择作为 Follower 或者 Leader ruok 测试是否启动了该 Server,若回复 imok 表示已经启动 mntr 输出一些运行时信息 reqs 列出未经处理的请求 wchs 列出服务器 watch 的简要信息 wchc 通过 session 列出服务器 watch 的详细信息 wchp 通过路径列出服务器 watch 的详细信息 srvr 输出服务的所有信息 srst 重置服务器统计信息 kill 关掉 Server isro 查看该服务的节点权限信息
1.2、开启白名单访问
ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。
默认情况下,这些4字命令有可能会被拒绝,发送如下报错 xxx is not executed because it is not in the whitelist.
解决办法:向 zoo.cfg 文件中添加如下配置 4lw.commands.whitelist=*
2、实战
2.1、基础命令
2.1.1、查看节点服务状态
echo stat | nc 127.0.0.1 2281
2.1.2、查看节点服务配置
echo conf | nc 127.0.0.1 2281
2.1.3、查看节点服务环境
echo envi | nc 127.0.0.1 2281
2.1.4、查看节点服务会话
echo cons | nc 127.0.0.1 2281
echo dump | nc 127.0.0.1 2281
2.2、基本安全
2.2.1、需求
在这么多的服务状态查看命令中有很多存在隐患的命令,所以为了避免生产中因为这些命令的安全隐患,所以我们要对这些命令进行一些安全限制,只需要编辑服务的zoo.cfg文件即可
2.2.2、增加策略重启zk服务
# 修改配置 # vi /data/server/zk1/conf/zoo.cfg 4lw.commands.whitelist=stat,ruok,conf,isro # 重启服务 /data/server/zk1/bin/zkServer.sh restart
2.2.3、查看允许通过的命令效果
echo isro | nc 127.0.0.1 2181 echo conf | nc 127.0.0.1 2181 echo stat | nc 127.0.0.1 2181
2.2.4、检查不允许通过的命令
echo dump | nc 127.0.0.1 2181
2.2.5、小结
所以生产中,我们一定要把不知道或者不想用的命令全部过滤掉,这样才能保证基本的安全。
2.3、角色
2.3.1、当前状态
当前角色效果 /data/server/zk1/bin/zkServer.sh status /data/server/zk2/bin/zkServer.sh status /data/server/zk3/bin/zkServer.sh status
可以看到: zk2的角色是Leader
2.3.2、关闭服务
关闭zk2服务 /data/server/zk2/bin/zkServer.sh stop
检查节点角色 /data/server/zk1/bin/zkServer.sh status /data/server/zk3/bin/zkServer.sh status
可以看到: zk3已经成为了新的主
2.3.3、恢复服务
# 启动zk2服务 /data/server/zk2/bin/zkServer.sh start
# 检查节点角色 /data/server/zk1/bin/zkServer.sh status /data/server/zk2/bin/zkServer.sh status /data/server/zk3/bin/zkServer.sh status
2.3.4、注意事项
当集群中的服务主机数量少于一半的时候,整个集群服务就崩溃了。