前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象。本文只关注分布式模式的zookeeper,因为这也是在生产环境的唯一部署方式,单机的zookeeper可以在测试和开发环境使用,但是单机环境的zookeeper就不再是zookeeper了。

安装配置很简单,官网也有介绍,这里就只对后面的文章有提到的点说明下。

配置-zoo.cfg

这是zookeeper的主要配置文件,因为Zookeeper是一个集群服务,集群的每个节点都需要这个配置文件。为了避免出差错,zoo.cfg这个配置文件里没有跟特定节点相关的配置,所以每个节点上的这个zoo.cfg都是一模一样的配置。这样就非常便于管理了,比如我们可以把这个文件提交到版本控制里管理起来。其实这给我们设计集群系统的时候也是个提示:集群系统一般有很多配置,应该尽量将通用的配置和特定每个服务的配置(比如服务标识)分离,这样通用的配置在不同服务之间copy就ok了。ok,下面来介绍一些配置点:

clientPort=2181

client port,顾名思义,就是客户端连接zookeeper服务的端口。这是一个TCP port。

dataDir=/data

dataLogDir=/datalog

dataLogDir如果没提供的话使用的则是dataDir。zookeeper的持久化都存储在这两个目录里。dataLogDir里是放到的顺序日志(WAL)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,这样就可以充分利用磁盘顺序写的特性。

下面是集群中服务的列表

server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883

在上面的例子中,我把三个zookeeper服务放到同一台机器上。上面的配置中有两个TCP port。后面一个是用于Zookeeper选举用的,而前一个是Leader和Follower或Observer交换数据使用的。我们还注意到server.后面的数字。这个就是myid(关于myid是什么下一节会介绍)。

上面这几个是一些基本配置。

还有像 tickTime,这是个时间单位定量。比如tickTime=1000,这就表示在zookeeper里1 tick表示1000 ms,所有其他用到时间的地方都会用多少tick来表示。

比如 syncLimit = 2 就表示fowller与leader的心跳时间是2 tick。

maxClientCnxns -- 对于一个客户端的连接数限制,默认是60,这在大部分时候是足够了。但是在我们实际使用中发现,在测试环境经常超过这个数,经过调查发现有的团队将几十个应用全部部署到一台机器上,以方便测试,于是这个数字就超过了。

minSessionTimeout, maxSessionTimeout -- 一般,客户端连接zookeeper的时候,都会设置一个session timeout,如果超过这个时间client没有与zookeeper server有联系,则这个session会被设置为过期(如果这个session上有临时节点,则会被全部删除,这就是实现集群感知的基础,后面的文章会介绍这一点)。但是这个时间不是客户端可以无限制设置的,服务器可以设置这两个参数来限制客户端设置的范围。

autopurge.snapRetainCount,autopurge.purgeInterval -- 客户端在与zookeeper交互过程中会产生非常多的日志,而且zookeeper也会将内存中的数据作为snapshot保存下来,这些数据是不会被自动删除的,这样磁盘中这样的数据就会越来越多。不过可以通过这两个参数来设置,让zookeeper自动删除数据。autopurge.purgeInterval就是设置多少小时清理一次。而autopurge.snapRetainCount是设置保留多少个snapshot,之前的则删除。

不过如果你的集群是一个非常繁忙的集群,然后又碰上这个删除操作,可能会影响zookeeper集群的性能,所以一般会让这个过程在访问低谷的时候进行,但是遗憾的是zookeeper并没有设置在哪个时间点运行的设置,所以有的时候我们会禁用这个自动删除的功能,而在服务器上配置一个cron,然后在凌晨来干这件事。

以上就是zoo.cfg里的一些配置了。下面就来介绍myid。

配置-myid

在dataDir里会放置一个myid文件,里面就一个数字,用来唯一标识这个服务。这个id是很重要的,一定要保证整个集群中唯一。zookeeper会根据这个id来取出server.x上的配置。比如当前id为1,则对应着zoo.cfg里的server.1的配置。

2. 而且在后面我们介绍leader选举的时候,这个id的大小也是有意义的。

OK,上面就是配置的讲解了,现在我们可以启动zookeeper集群了。进入到bin目录,执行 ./zkServer.sh start即可。

转载于:https://www.cnblogs.com/yuyijq/p/3438829.html

Zookeeper-Zookeeper的配置相关推荐

  1. Zookeeper 安装和配置

    Zookeeper 安装和配置01 ZooKeeper的安装与部署02 转载于:https://www.cnblogs.com/hfultrastrong/p/8414587.html

  2. [大数据] zookeeper 安装和配置

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  3. Zookeeper的安装配置及基本开发

    一.简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. ZooKeeper的目标就 ...

  4. ZooKeeper安装及配置(Windows系统下)

    ZooKeeper的定义用一句话就能说清:分布式服务框架 Zookeeper -- 管理分布式环境中的数据.下面从安装开始,对这个框架进行分析. 1.安装 1. 官网下载压缩包并解压到D:\Progr ...

  5. zookeeper集群配置与配置文件详解

    1.配置文件解读 tickTime=2000 //leader和follower之间心跳检测时间 initLimit=10 //初始化连接次数是10次,和第一个配置连在一起意思就是10*2000 20 ...

  6. Zookeeper 安装和配置---学习二

    zookeeper介绍 zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<The Chubby lock servi ...

  7. ZooKeeper实战(三):ZooKeeper实现分布式配置中心、分布式锁、Reactive响应式模型

    引入 ZooKeeper是做分布式协调的,那它协调啥? 配置写在哪里?难道运维人员要登录到每一台机器一台一台地改吗? 可以将配置文件放在一个共享的位置中,比如redis,比如数据库,比如zk,任何一个 ...

  8. 基于zookeeper实现分布式配置中心(二)

    上一篇(基于zookeeper实现分布式配置中心(一))讲述了zookeeper相关概念和工作原理.接下来根据zookeeper的特性,简单实现一个分布式配置中心. 配置中心的优势 1.各环境配置集中 ...

  9. ZooKeeper动态重新配置

    ZooKeeper动态重新配置 概观 配置格式的更改 指定客户端端口 standaloneEnabled标志 reconfigEnabled标志 动态配置文件 向后兼容性 升级到3.5.0 动态重新配 ...

  10. 记录 zookeeper集群配置参数 flume配置参数

    1.zookeeper zookeeper作为大数据集群的最基础的服务组件,许多集群服务都需要zookeeper集群的稳定并且高效的运行.那么对于zookeeper集群的基本参数理解就是不可避免的了. ...

最新文章

  1. java如何用c 的方法_JAVA如何调用C/C++方法
  2. 一个二维码能装10T电影?看样子我也能改变世界了
  3. React多页面应用脚手架-v1.3.0
  4. linux命令行下命令参数前的一横(-)和两横(--)的区别
  5. nginx+keepalived 高可用
  6. quit推不出mysql_cmd下使用mysql插入中文出现无法退出语句的情况!终极解决办法! 安装mysql详细教程。...
  7. mysql 5.6压缩安装_MySQL 5.6 for Windows 解压缩版配置安装
  8. 如何理解苹果iOS版PhoneGap原理分析
  9. vimdiff的简单使用
  10. cocos2dx进阶学习之屏幕适配
  11. Python datetime 格式化字符串:strftime()
  12. python mount回调函数_python类(4)——自己造第一个轮子
  13. 330UF16V 10*7.7片式铝电解电容封装
  14. 本特利电涡流传感器330709-000-060-10-02-00
  15. 系统配置 计算机管理,计算机系统安全配置管理方案
  16. 计算机类顶级会议排名+投稿经验
  17. vs2015发布网站到IIS
  18. elaticsear学习常见错误
  19. 面相对象模型(OOM)——用例图(The Use Case Diagram)
  20. 前端面试—html语义化

热门文章

  1. 项目管理基础:软件生命周期概念介绍
  2. 20 个最常用的 Git 命令用法说明及示例
  3. C#开发模式——单例模式
  4. 好好的活,简简单单过!
  5. 72年属鼠48岁有一灾2020_李半仙推算:1972年虚岁48岁属鼠人,2020年干什么最能发财??...
  6. Java Map集合
  7. 软件设计师中级 百度知道_设计师应该知道什么
  8. Chrome OS 设备或将允许用户自行选择 Linux 发行版
  9. Windows 10系统安装JDK1.8与配置环境
  10. 我用代码来给你们分析一个赚钱的技巧