Zookeeper学习笔记-单机/伪集群安装与部署

环境需要

  1. Zookeeper是使用Java语言编写的,推荐使用JDK1.6及以上版本,JDK安装过程请自行百度
  2. 操作系统适配,Linux,Windows,MacOS等大部分主流操作系统均可

本文安装Zookeeper基于JDK1.8,MacOS,MacOS系统下支持brew安装,为了讲解的通用性选择官网下载压缩包方式安装,附上官网zk下载地址

http://www.apache.org/dyn/closer.cgi/zookeeper

如果大家英文好,也看参考zk官方指导文档进行安装,官方文档地址如下

http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

本文中Zk版本是zookeeper-3.4.12

单机部署

  1. 下载zookeeper-3.4.12.tar.gz,并将压缩包放到自己对应的目录下

  2. 执行tar -xzvf zookeeper-3.4.12.tar.gz 将zk压缩包解压
    解压后的zk文件夹目录结构如下所示
    在这里插入图片描述

  3. 初次使用zk时,需要将conf目录下的zoo_sample.cfg文件重新命名为zoo.cfg,zk默认配置文件即为/zk安装目录/conf/zoo.cfg文件
    zoo.cfg文件中配置参数说明如下

# zk中一个基本心跳时间单位为一个tickTime,默认2000毫秒,用来衡量心跳及超时时间,如会话超时时间为2个tickTime
tickTime=2000
# 初始化同步时(Leader与Follwer建立链接)所耗费的时间,默认10个tickTime,如果zk中文件很大,可适当调大该值
initLimit=10
# Leader发出请求到得到Follower ack响应所耗费的时间,默认5个tickTime
syncLimit=5
# 数据目录路径,用于存放myid信息以及一些事务日志、znode快照信息,最好修改为自己的目录
dataDir=/tmp/zookeeper/data
# 日志文件路径
dataLogDir=/tmp/zookeeper/logs
# zk客户端连接的端口号,默认2181
clientPort=2181
# 可接受的客户端最大连接数
#maxClientCnxns=60
# 开启自动清除高级特性前,可参考
http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
# znode快照文件数量,超过这个数量会触发自动清除功能
#autopurge.snapRetainCount=3
# 自动清除时间间隔,单位-小时,如设置为0,则表示禁用自动清除功能
#autopurge.purgeInterval=1

附上我的zoo.cfg文件,如下

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/chenyin/zookeeper/data
dataLogDir=/Users/chenyin/zookeeper/logs
clientPort=2181
server.1=192.168.202.58:2888:3888

其中server.1=192.168.202.58:2888:3888 标识只有1个zk节点
server.X=IP:端口号1:端口号2

  • X对应dataDir下myid文件内容,机器唯一标识,故还需在dataDir下,即/Users/chenyin/zookeeper/data 新建myid文件,并只写入一行数字,即1
cd /Users/chenyin/zookeeper/data
echo '1' > myid
  • Ip对应机器ip
  • 端口号1用来连接Leader
  • 端口号2用来Leader选举
  1. 配置完zoo.cfg及新建myid文件后,剩下的就是启动zk服务了,常见命令如下,执行命令所需zk相关sh脚本文件在zk安装目录下的bin文件中

启动服务

./zkServer.sh start

执行后效果如图,看到zk默认配置文件即为conf下zoo.cfg文件
在这里插入图片描述
停止服务

./zkServer.sh stop

重启服务

./zkServer.sh restart

查看服务状态

./zkServer.sh status

执行结果如下,其中Mode:standalone标识当前集群只有一台server,如果是集群部署,Mode有可能是Leader或者Follower
在这里插入图片描述

连接zk服务

./zkCli.sh

或者直接指定ip+客户端连接端口号(zoo.cfg文件中指定的clientPort)

./zkCli.sh -server 127.0.0.1:2181 

执行结果如下
在这里插入图片描述
在该命令行界面可以输入 help 来查询zk相关命令
在这里插入图片描述

伪集群部署

在单机环境中配置zk伪集群,需要设置不同的配置文件,来启动不同的zk服务节点,需注意以下几点

  • clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183
  • dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的
  • server.X和myid: server.X 这个数字X就是对应,dataDir/myid中的数字。在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配 server.1 server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突

下载及解压缩过程不再赘述,从配置zoo.cfg及myid文件开始 ,流程如下

  1. 我在自己的zookeeper文件夹下分别新建3个文件夹,zk1,zk2,zk3来模拟3台机器对应的数据及日志存储目录,数据目录下新建myid文件,分别写入1,2,3来标识3台服务节点
    在这里插入图片描述
    2.在 /zk安装目录/conf下新建zoo1.cfg,zoo2.cfg,zoo3.cfg配置文件来模拟3台zk服务节点不同的配置,具体配置如下

zoo1.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/chenyin/zookeeper/zk1/data
dataLogDir=/Users/chenyin/zookeeper/zk1/logs
clientPort=2182
server.1=192.168.202.58:2887:3887
server.2=192.168.202.58:2888:3888
server.3=192.168.202.58:2889:3889

zoo2.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/chenyin/zookeeper/zk2/data
dataLogDir=/Users/chenyin/zookeeper/zk2/logs
clientPort=2183
server.1=192.168.202.58:2887:3887
server.2=192.168.202.58:2888:3888
server.3=192.168.202.58:2889:3889

zoo3.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/Users/chenyin/zookeeper/zk3/data
dataLogDir=/Users/chenyin/zookeeper/zk3/logs
clientPort=2184
server.1=192.168.202.58:2887:3887
server.2=192.168.202.58:2888:3888
server.3=192.168.202.58:2889:3889
  1. 根据配置文件启动不同zkServer,在上述介绍的命令中,后面都可以接上指定配置文件来启动、停止、查看不同的服务,如
./zkServer.sh start ../conf/zoo1.cfg
./zkServer.sh stop ../conf/zoo1.cfg  
./zkServer.sh status ../conf/zoo1.cfg 

先在/zk安装目录/bin下,执行启动命令启动3个服务节点
在这里插入图片描述

查看下节点状态,看是否启动成功,看到有2个节点的mode是follower,一个节点是leader,标识zk集群搭建成功
在这里插入图片描述
4. 启动客户端

#  输入ip+客户端连接端口号clientPort来连接zk服务器
./zkCli.sh -server 127.0.0.1:2184 

集群部署

集群部署本质上与伪集群部署一致,不再赘述(实际上市没有那么多机器,哈哈),各位有条件的看官参考下可自己动手实践

下篇文章会简单介绍下zk中常见命令的使用以及Java中zk客户端的介绍与使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值