zoukankan      html  css  js  c++  java
  • zookeeper环境的搭建

    近期因为项目中须要用到zookeeper,细致的研究了一下。将持续更新zookeeper相关文章。留个痕迹。

    本文以及兴许zookeeper相关的文章都是以Linux环境环境为基础的,代码是基于C语言。

    zookeeper是Hadoop下的一个子项目。主要用来解决同步服务,配置管理,集群管理,分布式调度等一些分布式应用中的问题,具体的zookeeper的具体介绍网上非常多,在此不再赘述。

    zookeeper执行时必须先装上java相关的库。Linux下怎样配置jdk网上也是多如牛毛。

    首先准备一个zookeeper开发包,能够到官网下载。这里提供一个版本号,zookeeper-3.4.6.tar.gz

    一般在项目中我们会使用多台机器来搭建zookeeper集群。因为条件限制,我们能够在一台机器上搭建一个伪集群。仅仅要指定不同的port即可了。

    将压缩包解压。会得到 zookeeper-3.4.6文件夹,进入zookeeper-3.4.6下的conf文件夹。我们来进行配置文件的改动,这里我们配置三个伪集群server,所以新建三个文件zoo1.cfg、zoo2.cfg、zoo3.cfg。分别写入以下的配置内容:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/cdadmin/thc/zookeeper/zookeeper-3.4.6/data/d_1
    clientPort=2181
    dataLogDir=/home/cdadmin/thc/zookeeper/zookeeper-3.4.6/log/log_1
    server.1=localhost:2887:3887
    server.2=localhost:2888:3888
    server.3=localhost:2889:3889

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/cdadmin/thc/zookeeper/zookeeper-3.4.6/data/d_2
    clientPort=2182
    dataLogDir=/home/cdadmin/thc/zookeeper/zookeeper-3.4.6/log/log_2
    server.1=localhost:2887:3887
    server.2=localhost:2888:3888
    server.3=localhost:2889:3889

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/cdadmin/thc/zookeeper/zookeeper-3.4.6/data/d_3
    clientPort=2183
    dataLogDir=/home/cdadmin/thc/zookeeper/zookeeper-3.4.6/log/log_3
    server.1=localhost:2887:3887
    server.2=localhost:2888:3888
    server.3=localhost:2889:3889
    注意:dataDir和dataLogDir相应的文件夹要相应的建立

    配置參数说明

    tickTime:zookeeperclient和server之间发送心跳的间隔时间

    initLimit:这个配置项是用来配置 Zookeeper 接受client(这里所说的client不是用户连接 Zookeeper server的client。而是 Zookeeper server集群中连接到 Leader 的 Follower server)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper server还没有收到client的返回信息,那么表明这个client连接失败。

    总的时间长度就是 5*2000=10 秒

    syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

    dataDir:顾名思义就是 Zookeeper 保存数据的文件夹,默认情况下。Zookeeper 将写数据的日志文件也保存在这个文件夹里。

    clientPort:这个port就是client连接 Zookeeper server的port,Zookeeper 会监听这个port,接受client的訪问请求。

    dataLogDir:顾名思义就是 Zookeeper 保存日志文件的文件夹

    server.A=B:C:D:当中 A 是一个数字。表示这个是第几号server。B 是这个server的 ip 地址;C 表示的是这个server与集群中的 Leader server交换信息的port。D 表示的是万一集群中的 Leader server挂了。须要一个port来又一次进行选举。选出一个新的 Leader。而这个port就是用来运行选举时server相互通信的port。假设是伪集群的配置方式。因为 B 都是一样,所以不同的 Zookeeper 实例通信port号不能一样。所以要给它们分配不同的port号。


    在改动好了參数文件后,在每一个dataDir下建立一个文件。文件名称为myid。文件的内容分别为1、2、3,(分别相应的是server.1。server.2,server.3)。这样就能够启动zookeeper服务器了。

    切换到zookeeper-3.4.6/bin文件夹分别执行命令:zkServer.sh start zoo1.cfg、zkServer.sh start zoo2.cfg、zkServer.sh start zoo3.cfg,输入命令jps,结果例如以下图一样。就说明启动成功了。


    启动成功以后。我们就能够用client去连接了,执行命令:zkCli.sh -server 127.0.0.1:2182,client连接上以后我们就能够对服务器进行一些结点的操作了,例如以下图所看到的:


    这样zookeeper就搭建成功了。

    今天先到这。晚安吧。待续!

  • 相关阅读:
    docker 安装es
    Redis 和 Zookeeper 到底谁更牛?
    Redisson 看门狗
    记一次线上服务CPU 100%的处理过程
    必须了解的mysql三大日志-binlog、redo log和undo log
    python学习笔记 -- reduce合并减少
    Python学习笔记 -- 列表2: 遍历:嵌套列表, 将其中同位置的元素组成新的列表
    python学习笔记 -- filter() 过滤符合条件的可迭代序列
    python学习笔记 -- map() 操作可迭代序列
    python学习笔记
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6766771.html
Copyright © 2011-2022 走看看