明天你会感谢今天奋力拼搏的你。
ヾ(o◕∀◕)ノヾ
只要集群中大多数设备都准备好了,就可以使用ZK服务,对外部客户端没有影响。容错集群设置至少需要三个服务器,建议使用奇数个服务器。
怎么搭建,其实官方文档都写的很全。
zk集群服务器配置步骤如下:
1、安装JDK,这个还不会也就不用学ZK了。
2、zk是用Java编写的,所以启动的时候要设置Java虚拟机的堆内存大小(这做过Java运维和服务优化的都懂)。具体可能要根据实际情况测试和监控JVM中的CG频率来调整。文中也保守推荐了下:对于4GB的机器,使用最大3GB的堆大小。
3、下载安装ZK服务包,可以从这个地址下载(其实就是下载解压缩,把文件放到服务器的哪个目录下面)
4、创建配置文件其实就是在zk服务的conf目录下,一般有个zoo_sample.cfg文件,这就是一个示例的配置文件,把其拷贝一份改名为zoo.cfg,此为默认加载的配置文件,最简单配置如下:
5、在dataDir设置的目录下创建一个名为myid的文件,文件由一行组成,只包含该机器的id的文本。因此,服务器1的myid只包含文本“1”,不包含其他内容。在集群中,id必须是惟一的,其值应该在1到255之间(不是强制要求)。但注意:如果启用诸如TTL节点,由于内部限制,id必须在1到254之间。
6、在与myid相同的目录中创建初始化标记文件“initialize”,里面什么都不用写为空就行(这是在3.6版本中才出现的,这是什么鬼呢,后续介绍)。
7、给了一种用jar包启动的方式,其实bin目录下面已经写好了一个脚本zkServer.sh,如下,可以start后面带上配置文件,表明用哪个配置文件启动。第2点中堆内存的修改也可以在此文件中修改。
扩展关于initiate(初始化标记文件的介绍):官网地址
initialize 文件在 ZooKeeper 中用于指示服务器在启动时应该初始化一个新的数据树(data tree)。具体来说,initialize 文件的作用包括:
initiate文件使用场景
扩展关于dataLogDir的配置:官方文档
默认情况下,事务日志和快照(Snapshot)可能存储在同一个目录(通常是 dataDir),官方文档也强烈建议加上这个配置,将事务日志存储在单独的目录(通过 dataLogDir 指定)。这有助于避免日志写入和快照操作之间的资源竞争。
客户端连接时,连接串可以指定多个或全部集群接地那的连接地址,用逗号分隔,当一个节点不通时,客户端将自动切换到另一个节点。
ZooKeeper 提供了一系列四字母命令(通过 netcat 或 telnet 发送到客户端端口),用于快速获取集群状态。
完整四字命令列表:
| 命令 | 描述 | 示例输出格式 |
|---|---|---|
ruok |
检查服务器是否正常运行。返回 imok 表示正常。 |
imok |
stat |
查看服务器概要状态(版本、客户端连接数、Leader/Follower 模式等)。 | 多行文本(键值对) |
srvr |
类似 stat,但仅显示服务器自身状态(不包含客户端连接信息)。 |
多行文本(键值对) |
mntr |
输出详细的监控指标(需 ZooKeeper 3.4.0+),适合集成到监控系统。 | 键值对(每行 key\tvalue) |
conf |
显示服务器的运行时配置参数(zoo.cfg 中的配置)。 |
多行文本(键值对) |
cons |
列出当前所有客户端的连接详细信息(IP、会话ID、请求延迟等)。 | 多行文本(每行一个连接) |
crst |
重置客户端连接统计信息(如 stat 中的计数器)。 |
无输出 |
dump |
列出所有临时节点(ephemeral nodes)及其会话ID(仅 Leader 节点响应)。 | 多行文本 |
envi |
显示服务器环境信息(JVM 参数、操作系统信息等)。 | 多行文本(键值对) |
wchs |
列出所有 Watcher 的概要信息(总 Watcher 数、节点路径数量等)。 | 多行文本 |
wchc |
列出所有 Watcher 的详细信息(按节点路径分组,需开启白名单权限)。 | 多行文本 |
wchp |
列出所有 Watcher 的详细信息(按节点路径前缀分组,需开启白名单权限)。 | 多行文本 |
srst |
重置服务器的统计信息(如 mntr 或 stat 中的计数器)。 |
无输出 |
isro |
检查服务器是否处于只读模式(返回 ro 或 rw)。 |
ro 或 rw |
使用示例:
通过 netcat 或 telnet 向 ZooKeeper 客户端端口(默认 2181)发送命令:
注意事项
1、版本兼容性:部分命令(如 mntr)需要 ZooKeeper 3.4.0 及以上版本。
2、权限控制:默认情况下,四字命令可能被防火墙或 ZooKeeper 配置限制。需在 zoo.cfg 中配置白名单:
3、安全性:开放四字命令存在风险,建议限制访问 IP 或结合网络防火墙规则。
常用命令场景
全部评论