zookeeper系列(二)—部署、配置和基本命令

本文详细介绍ZooKeeper 3.5.5版本的安装、部署及配置过程,包括单机模式、伪集群模式和集群模式,并提供基本命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zookeeper系列(二)—部署、配置和基本命令

前言

大家好,牧码心今天给大家推荐一篇zookeeper系列(二)—安装,部署和配置说明的文章,在实际工作中有很多应用场景,希望对你有所帮助。内容如下:

  • 版本说明
  • 安装前准备
  • 安装部署
  • 配置说明
  • 基本命令

版本说明

2019年5月20日发行的3.5.5是3.5分支的第一个稳定版本。此版本被认为是3.4稳定分支的后续版本,可以用于生产。基于3.4它包含以下新功能

  • 动态重新配置
  • 本地会议
  • 新节点类型:容器,TTL
  • 原子广播协议的SSL支持
  • 删除观察者的能力
  • 多线程提交处理器
  • 升级到Netty 4.1
  • Maven构建

注意:建议的最低JDK版本为1.8

安装前准备

  • 环境说明
    zookeeper 基于JAVA开发,下载后只要有对应JVM环境即可运行。其默认的端口号是2181运行前得保证其不冲突。
  • 下载zookeeper
    官方下载地址

安装部署

Zookeeper的安装和配置比较简单,既可以配置成单机模式,伪集群模式和集群模式,下面分别对这三种模式进行说明:

单机模式
单机模式较简单,是指只部署一个zk进程,客户端直接与该zk进程进行通信。 在开发测试环境下,通过来说没有较多的物理资源,因此我们常使用单机模式。当然在单台物理机上也可以部署集群模式,但这会增加单台物理机的资源消耗。故在开发环境中,我们一般使用单机模式。 但是要注意,生产环境下一般不可用单机模式,这是由于无论从系统可靠性还是读写性能,单机模式都不能满足生产的需求。
运行配置

  • 下载:wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/current/apache-zookeeper-3.5.5-bin.tar.gz
  • 解压到某个目录下,如 /data/zookeeper/;
  • 拷贝解压后的conf目录下的zoo_sample.cfg文件,重命名为zoo.cfg;
  • 修改默认的配置,配置如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/tmp/data
dataLogDir=/data/zookeeper/tmp/log
clientPort=2181
autopurge.purgeInterval=1
autopurge.snapRetainCount=3
maxClientCnxns=60
  • 参数说明:
tickTime: 心跳间隔(毫秒),超过2倍tickTime将会被认为会话超时, 毫秒值.
syncLimit:允许follower与leader数据同步最大时长,它表示tickTime时间倍数;
initLimit:允许follower初始化连接到leader最大时长,它表示tickTime时间倍数 即:initLimit*tickTime
dataDir: 数据目录. 可以是任意目录.
dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
clientPort: 监听client连接的端口号.
maxClientCnxns:单个客户端与zookeeper最大并发连接数;
autopurge.snapRetainCount:保存的数据快照数量,之外的将会被清除;
autopurge.purgeInterval:自动触发清除任务时间间隔,小时为单位。默认为0,表示不自动清除。

至此,单机模式的zookeeper已经配置完毕,下面启动即可,启动server 只需运行脚本:

bin/zkServer.sh start  

Server启动之后, 就可以启动client连接server了, 执行脚本:

bin/zkCli.sh -server localhost:2181  

伪集群模式
所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例.
1、将zookeeper的目录拷贝2份,分别解压到三个目录下,如

/data/zookeeper/zServer1,/data/zookeeper/zServer2,/data/zookeeper/zServer3

2、创建每个目录下的conf/zoo.cfg配置文件,如/data/zookeeper/zServer1/conf/zoo.cfg 内容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/zServer1/tmp/data
dataLogDir=/data/zookeeper/zServer1/tmp/log
clientPort=2181
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

其他的/data/zookeeper/zServer2/confzoo.cfg /data/zookeeper/zServer3/confzoo.cfg,与zServer1的相同

注意:因为是在一台机器上模拟集群,所以端口不能重复,这里用21812183,22872289,以及3387~3389相互错开。另外每个zk的instance,都需要设置独立的数据存储目录、日志存储目录,所以dataDir、dataLogDir这二个节点对应的目录,需要手动先创建好。

3、另外还有一个关键的设置,在每个zk server配置文件的dataDir所对应的目录下,必须创建一个名为myid的文件,其中的内容必须与zoo.cfg中server.x 中的x相同,即:

/data/zookeeper/zServer1/data/myid 中的内容为1,对应server.1中的1
/data/zookeeper/zServer2/data/myid 中的内容为2,对应server.2中的2
/data/zookeeper/zServer3/data/myid 中的内容为3,对应server.3中的3

生产环境中,分布式集群部署的步骤与上面基本相同,只不过因为各zk server分布在不同的机器,上述配置文件中的localhost换成各服务器的真实Ip即可。
分布在不同的机器后,不存在端口冲突问题,可以让每个服务器的zk均采用相同的端口,这样管理起来比较方便。
4、启动验证
进入每个zServer的bin/目录下执行 zServer.sh start进行启动,若已启动,请杀掉进程后启动。
启动成功后,执行jps查看进程,或用zServer.sh status查看状态。

集群模式
集群模式与伪集群模式的配置基本相同,由于集群模式是分布在不同的机器上,因此各server的conf/zoo.cfg文件可以完全一样。
下面是一个配置实例:

tickTime=2000    
initLimit=5    
syncLimit=2    
dataDir=/home/zookeeper/data    
dataLogDir=/home/zookeeper/logs    
clientPort=4180  
server.43=hadoop01:2888:3888  
server.47=hadoop02:2888:3888    
server.48=hadoop03:2888:3888

示例中部署了3台zookeeper server, 分别部署在hadoop01, hadoop02, hadoop03上. 需要注意的是, 各server的dataDir目录下的myid文件中的数字必须不同.hadoop01 server的myid为43, hadoop02 server的myid为47, hadoop03 server的myid为48.

基本命令

zookeeper的基本命令,可以通过help查看,如图所示:

[zk: localhost:2181(CLOSED) 1] help
ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history 
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit 
        getAcl path
        close 
        connect host:port

命令说明

 close:关闭当前会话
 connect host:port  重新连接指定Zookeeper服务 
 create [-s] [-e] [-c] [-t ttl] path [data] [acl]: 创建节点 
 delete [-v version] path :删除节点,(不能存在子节点);
 deleteall path :删除路径及所有子节点 
 setquota -n|-b val path: 设置节点限额 -n 子节点数 -b 字节数 ;
 listquota path: 查看节点限额;
 delquota [-n|-b] path :删除节点限额  
 get [-s] [-w] path: 查看节点数据 -s 包含节点状态 -w 添加监听  
 getAcl [-s] path:查看节点权限,-s 包含节点状态
 ls [-s] [-w] [-R] path 列出子节点 -s状态 -R 递归查看所有子节点 -w 添加监听 
 printwatches on|off 是否打印监听事件 
 quit:退出客户端  
 history:查看执行的历史记录 
 redo cmdno:重复执行命令,history 中命令编号确定 
 removewatches path [-c|-d|-a] [-l] :删除指定监听 
 set [-s] [-v version] path data :设置值 
 setAcl [-s] [-v version] [-R] path:  acl为节点设置ACL权限 
 stat [-w] path:查看节点状态 -w 添加监听 
 sync path:强制同步节点

节点数据的增删改查

  • 列出子节点 : ls /
  • 创建节点: create /zk-data "zk data"
  • 查看节点 :get /zk-data
  • 创建子节点: create /zk-data/sex "man"
  • 删除节点: delete /zk-data/sex
  • 删除所有节点 包括子节点 :deleteall /zk-data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值