一个ZooKeeper集群或复制的ZooKeeper服务器集群应该优化配置,以避免出现脑裂(split-brain)等情况。 由于网络分割,同一ensemble的两个不同服务器可能构成领导者不一致,因此可能发生脑裂的情景。

以下配置选项可用于ZooKeeper服务器的ensemble中:

  • electionAlg:这个选项用于在ZooKeeper ensemble选举一个领导者。0的值对应于原始的基于UDP的版本,1对应于非验证的基于UDP的fast leader选举,2对应于基于身份验证的fast leader选举的UDP的版本,3对应于基于TCP的fast leader选举。目前,算法3是默认值。领导者选举的实现0、1和2现在已被弃用,而3是唯一使用的。
  • initLimit:这是指tick表示的心跳次数,以便追随者与领导者保持联系。 initLimit应该根据领导者和追随者之间的网络速度(和心跳)以及根据两者之间要传输的数据量来设置。 如果ZooKeeper存储的数据量很大,或者如果网络带宽较低,则应该增加initLimit。
  • syncLimit:这是以tick表示的心跳次数,追随者与领导者同步的时间。如果追随者由于服务器负载或网络问题而落后于领导者,那么他们就会被删除。然而,管理员存储的数据量对领导者和追随者之间的同步时间没有影响。相反,syncLimit依赖于网络延迟和吞吐量。
  • leaderServes:默认情况下,以领导者模式运行的ensemble中的服务器也接受客户端连接。 但是,在负载较重且工作繁忙的集成中,我们可以将引导服务器配置为不接受客户端连接。 这可以使用zookeeper.leaderServes Java系统属性进行配置。 这可以帮助以更快的速率协调写入更新,从而提高写吞吐量。
  • cnxTimeout:指的是为领导者选举通知打开连接的超时值。此参数仅适用于领导者选举算法3——快速领导者选举。默认值是5秒。
  • server.x=[hostname]:port1[:port2]:该参数用于定义ZooKeeper ensemble中的服务器。 当ZooKeeper服务器进程启动时,它通过在数据目录中查找myid文件来确定其身份。 myid文件包含ASCII码的服务器编号; 这应该与配置参数的server.x中的x相同。 这个参数可以进一步解释如下:
  • 有两个TCP端口号:port1和port2。第一个端口用于发送事务更新,第二个端口用于领导者选举。如果electionAlg是1、2或3(默认),则领导选举端口是必需的。
  • 所有的服务器使用相同的server.x配置来正确连接它们是非常重要的。 此外,由客户端使用的ZooKeeper服务器列表必须与每个ZooKeeper服务器的列表相匹配。

配置一个quorum

ZooKeeper允许在ensemble中灵活配置quorum。我们可以通过将ZooKeeper服务器分组来形成分层的quorum。这对于形成跨多个数据中心的ZooKeeper ensemble特别有用。跨数据中心的ensemble有助于确保在灾难场景中提供高可用性服务。以下选项对于在一个ensemble形成这样的组是有用的:

  • group.x=nnnnn[:nnnnn]:这实现了分层quorum结构。 x是组标识符,nnnnn对应于服务器标识符。 组必须是分离的,所有组的联合必须是ZooKeeper ensemble。
  • weight.x=nnnnn:在形成quorum时,用于为组中的服务器分配权重。 它对应于领导选举和Zookeeper Atomic Broadcast(ZAB)投票时服务器的权重。 默认情况下,服务器的权重为1。为服务器分配更多的权重可以使其更容易与其他服务器形成quorum。

11. 配置ZooKeeper ensemble的更多相关文章

  1. Linux配置zookeeper 和zookeeper简单介绍

    一.zookeeper介绍? 一.zookeeper 简单介绍? 1.什么是集群? // 很多台服务器保持连接通讯状态,并且所有的服务器做同一件事就称之为集群 2.什么是zookeeper? 注册中心 ...

  2. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

    今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...

  3. Ubuntu环境下手动配置zookeeper

    配置zookeeper 注意:因为是单机伪分布式配置,故同一机器上有3个server zookeeper文件格式如下 home---zookeeper---server0---zookeeper | ...

  4. Ubuntu 16下单机安装配置zookeeper和kafka

    网上其他的没有一个能直接照做完成的,我这个也是看了些帖子,整出来的怕以后忘记 建议连接工具:Bitvise SSH Client 一.安装配置zookeeper 下载zookeeper 3.4.13: ...

  5. 怎样在本地windows安装和配置zookeeper

    Zookeeper是什么?有什么用? Zookeeper是一个分布式协调服务. 作用:为用户的分布式应用程序提供协调服务.  zookeeper在底层其实只提供了两个功能: 1.管理(存储,读取)用户 ...

  6. 配置zookeeper集群

    创建3台服务,不同ip,相同端口 1.先安装jdk1.8 解压: tar -zxvf jdk-8u11-linux-x64.tar.gz 重新命名文件夹名字: mv jdk1..0_11/ jdk8 ...

  7. window安装配置 zookeeper 单机模式

    1.zookeeper简单介绍 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,我所了解到的主要的使用场景有两个 (1).微服务注册中心(Dubbo较常用Zookeeper做注册中 ...

  8. hbase异常:java.io.IOException: Unable to determine ZooKeeper ensemble

    项目中用到hbase,有时候可能会报一些异常,比如java.io.IOException: Unable to determine ZooKeeper ensemble 等等,当出现这个问题时,根据个 ...

  9. 安装配置ZooKeeper及基本用法

    要想学习分布式应用,ZooKeeper是一个绕不过去的基础系统.它为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册. 今天先介绍系统的安装和基本使用,后续会推一些基本的Java使用代码. ...

随机推荐

  1. php+openresty 部署安装

    1. ecs 购买 地域: 华北 2 可用区: 随机分配 安全组 ID: sg-2533jog6k I/O 优化实例: I/O 优化实例 实例规格: 1 核 1GB 网络类型: 经典网络 带宽: 1M ...

  2. node+vue进阶【课程学习系统项目实战详细讲解】打通前后端全栈开发(1):创建项目,完成登录功能

    第一章 建议学习时间8小时·分两次学习      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章]) 视频教程地 ...

  3. iOS开发中使用文字图标iconfont

    在iOS的开发中,各种图标的使用是不可避免的,如果把全部图标做成图片放在项目中,那么随着项目的逐渐庞大起来,图片所占的地方就会越来越大,安装包也就随之变大了,如果图标需要根据不同的场景改变使用不同的颜 ...

  4. TsBatis 预览

    前言 在发布了 mybatis-dynamic-query之后感觉基本功能稳定了,而且现在在工作项目开发效率大大提高,而且非常易于维护. 最近准备带几个小朋友以前用typescript 打通前后端,当 ...

  5. Android———最详细的系统对话框使用

    在实际应用开发中,用到系统对话框中的情况几乎是没有的.按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的. 即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它 ...

  6. 阿里巴巴Java开发手册思维导图

    趁着有时间把阿里巴巴Java开发手册又看了一遍了,很多时候觉得看完之后,发现自己好像一点都不记得了里面的内容了.只能把大概内容画一遍在脑子里形成一张图方便记忆,这样就更能够记得自己的看完的内容了.其中 ...

  7. 想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~ #精选JAVASCRIPT前端开发

    想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~ 作为一个软(ku)件(bi)工(de)程(ma)师(nong),你有没有觉得做什么事都没时间?没时间学习新东西,没时间去回顾.整理原来写的烂代 ...

  8. iOS动画学习 -隐式动画

    事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.你并不需要在Core Animation中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...

  9. IdentityServer4 配置负载均衡

    如果使用 IdentityServer4 做授权服务的负载均衡,默认情况下是不可以的,比如有两个授权服务站点,一个资源服务绑定其中一个授权服务(Authority配置),如果通过另外一个授权服务获取a ...

  10. Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法

    相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x97\xa0\xe5\x90\x8d' 的编码,直接s.decode()是无法解决编码问题.尝试了无数办法,都无法 ...