ZooKeeper中bin目录4个脚本执行文件详解

ZooKeeper中bin目录中有如下4个可执行脚本:

这些脚本是 ZooKeeper 的一部分,用于管理和操作 ZooKeeper 实例。

  1. zkCleanup.sh

    • 用途:这个脚本主要用于清理 ZooKeeper 数据目录中的快照和事务日志文件,以便进行数据清理和维护。
    • 使用方法:通常在需要清理 ZooKeeper 数据目录时运行此脚本,它将删除旧的快照和日志文件,帮助释放磁盘空间和维护 ZooKeeper 数据。
  2. zkCli.sh

    • 用途:zkCli.sh 是 ZooKeeper 自带的客户端命令行工具,用于连接到 ZooKeeper 实例并执行各种操作,比如创建节点、读取节点数据、监控节点变化等。
    • 使用方法:运行 zkCli.sh 脚本,指定连接参数(例如 ZooKeeper 实例的地址),然后在命令行界面中输入各种 ZooKeeper 客户端命令来与 ZooKeeper 交互。
  3. zkEnv.sh

    • 用途:zkEnv.sh 脚本用于设置 ZooKeeper 的环境变量和配置,它可以设置 Java 环境、内存配置、JVM 参数等环境变量。
    • 使用方法:通常在启动 ZooKeeper 实例之前,可以使用 zkEnv.sh 来设置 ZooKeeper 运行时的环境参数和配置。
  4. zkServer.sh

    • 用途:zkServer.sh 脚本用于启动、停止和管理 ZooKeeper 服务实例。
    • 使用方法:通过运行 zkServer.sh 脚本并指定启动、停止等参数,可以对 ZooKeeper 服务进行管理。例如,zkServer.sh start 用于启动 ZooKeeper 服务,zkServer.sh stop 用于停止服务。

下文将逐个详细介绍4个 ZooKeeper 相关脚本的使用、参数、场景和注意事项

 

1. zkCli.sh

1-1. zkCli-使用示例

zkCli.sh 脚本是 ZooKeeper 提供的命令行客户端工具,用于连接到 ZooKeeper 服务器并执行相关操作。它允许用户交互式地操作 ZooKeeper 数据,例如创建节点、设置节点数据、获取节点信息等。以下是关于 zkCli.sh 脚本的使用方法和一些常用命令示例:

1-2. zkCli-连接方式

-server server:port:指定连接的 ZooKeeper 服务器地址和端口号,默认端口是 2181。

1-3. zkCli-基础常用命令

  1. 创建节点
  1. 获取节点数据
  1. 设置更新节点数据
  1. 列出节点信息
  1. 删除节点
  1. 查看帮助

1-4. zkCli-注意事项

1-5. zkCli-高级使用方法

zkCli.sh 是 ZooKeeper 提供的基本命令行客户端工具,用于与 ZooKeeper 服务器交互执行各种操作。虽然它是一个命令行工具,但仍然提供了一些较为复杂和高级的功能,可以用于节点监控、权限管理、Watcher 监听等。

使用 stat 命令可以监控节点状态的变化,实时查看节点的详细信息,例如版本、数据长度、创建时间等:

  • cZxid:节点创建的事务 ID。
  • ctime:节点创建时间。
  • mZxid:节点最后修改的事务 ID。
  • mtime:节点最后修改时间。
  • pZxid:节点父节点修改的事务 ID。
  • cversion:子节点变更次数。
  • dataVersion:节点数据变更次数。
  • aclVersion:ACL 变更次数。
  • ephemeralOwner:临时节点的所有者 ID。
  • dataLength:节点数据长度。
  • numChildren:子节点数量。

stat获取的状态信息,基本get命令也都可以获取,但stat不会获取value,只纯粹的获取各类状态,所以使用到监控方面更加适合。

 

  1. 在对节点进行操作时,可以设置 Watcher,以便在节点状态发生变化时得到通知。
  2. 当节点的状态发生变化时,比如节点被创建、被删除、数据被修改等情况,Watcher 就会被触发
  3. 一旦 Watcher 被触发,客户端可以在收到通知后执行相应的逻辑处理,比如重新获取节点数据、更新缓存等

窗口1中操作:

 

窗口2中操作:

 

回到窗口1中观察是否有监控信息通知

 

注意事项:

  1. 一次性触发: Watcher 是一次性的,一旦触发,就会失效。需要在处理完 Watcher 事件后重新设置 Watcher。
  2. 事件通知顺序: Watcher 不保证事件通知的严格顺序,只能保证 FIFO(先进先出)的顺序。
  3. Watch 太多: 如果客户端设置了大量的 Watcher,可能会增加服务器端的负载。合理使用 Watcher 非常重要。

 

ZooKeeper 支持 ACL(访问控制列表)来管理节点的权限,可以使用 addauthsetAcl 命令来添加认证信息和设置节点权限

addauth 用于在会话中添加认证信息,而 setAcl 则用于设置节点的 ACL,以便控制节点的访问权限。在实际使用中,需要根据具体情况选择合适的认证方式和权限设置

  1. addauth 命令用于在 ZooKeeper 中添加认证信息
  • scheme:认证方案,例如 digestip

  • auth:认证信息,根据认证方案不同可以是用户名和密码或者 IP 地址等

  • 使用 addauth 命令添加的认证信息是针对当前会话有效的,且在会话结束后自动失效,因此不需要专门的命令来删除这些信息。

    一旦会话结束(例如客户端断开连接),addauth 命令添加的认证信息也随之失效,不再生效。如果需要重新认证,可以在新的会话中再次使用 addauth 命令添加认证信息。

  1. setAcl 命令则用于设置节点的访问控制列表(ACL)
  • /path:要设置 ACL 的节点路径。
  • acl:ACL 信息,包括权限和认证信息。
  • 如果设置了 ACL 的节点不再需要,可以直接删除节点,节点删除后 ACL 设置也会一并删除:delete /example_node
  • 通过重新设置节点的 ACL,可以改变节点的权限设置。可以使用 setAcl 命令修改节点的 ACL:setAcl /example_node acl
  • crwda 权限(createreadupdatedelete
  • ZooKeeper 的 ACL 权限管理较为复杂,需要小心谨慎操作,以免影响节点的访问权限

 

 

2. zkServer.sh

2-1. zkServer-使用示例

zkServer.sh 脚本是 ZooKeeper 提供的用于启动、停止和管理 ZooKeeper 服务器的脚本。它提供了一系列的命令用于管理 ZooKeeper 服务器的运行状态,例如启动、停止、重启等。

2-2. zkServer-使用方法

参数说明:

2-3. zkServer-注意事项

使用 zkServer.sh 脚本可以方便地管理 ZooKeeper 服务器的启动、停止和重启,同时也可以通过 status 命令查看 ZooKeeper 服务器的运行状态,以确保服务正常运行。

zkServer.sh 脚本是 ZooKeeper 提供的用于管理 ZooKeeper 服务器的脚本,包括启动、停止、重启和状态查询等功能。虽然这个脚本本身功能较为基础,但可以结合其他高级用法来提高 ZooKeeper 的运维效率和管理。

2-4. zkServer-高级使用方法

启动 ZooKeeper 时,可以配置 JMX 监控参数,以便通过 JMX 管理和监控 ZooKeeper 服务器的运行状态

通过复制 ZooKeeper 安装目录,配置不同的数据目录和端口号,可以启动多个 ZooKeeper 实例来提高系统的可用性和扩展性

配置 ZooKeeper 的日志级别和输出路径,以便更好地监控和调试 ZooKeeper 的运行状态

将 ZooKeeper 的启动、停止等命令结合 systemd进程管理工具进行管理,以便更好地监控和管理 ZooKeeper 服务。

实现方法:

/lib/systemd/system/ 目录下创建 zookeeper.service文件

注意修改对应路径

 

 

3. zkEnv.sh

3-1. zkEnv-使用示例

3-2. zkEnv-使用方式

source zkEnv.sh

3-3. zkEnv-注意事项

在zkServer.sh中可以看到如下代码:

zkEnv.sh 脚本主要用于配置 ZooKeeper 运行时的环境变量,确保 ZooKeeper 的运行所需的环境设置正确,进而保证 ZooKeeper 服务的正常运行。

3-4. zkEnv-高级使用方法

通过 zkEnv.sh 设置 JVM 相关的参数,比如内存大小、GC 策略等,可以提高 ZooKeeper 的性能和稳定性。

设置 ZooKeeper 的日志级别、输出路径等,以便更好地监控和调试 ZooKeeper 的运行状态。

对于需要安全认证的情况,可以配置 ZooKeeper 的认证信息,使用用户名和密码进行访问控制。

调整网络相关的参数,例如端口号、连接超时等,以适应特定的网络环境。

 

 

4. zkCleanup.sh

4-1. zkCleanup-使用示例

zkCleanup.sh 脚本主要用于清理 ZooKeeper 数据目录中的快照(snapshot)和事务日志(transaction logs),以减少磁盘占用并保持 ZooKeeper 数据的健康状态。这个脚本允许你限制保留的快照和事务日志的数量,以及清理指定路径下的数据。该脚本一般用于维护 ZooKeeper 的数据目录,清除旧的数据文件,防止数据过于庞大影响性能。

4-2. zkCleanup-使用方式

 

4-3. zkCleanup-注意事项

4-4. zkCleanup-使用示例