例如Zookeeper集群都是奇数,为什么需要这样的要求呢?主要有以下两种原因

1、节省资源

Zookeeper集群的master节点选举为过半机制,例如集群节点总数为7,那么需要4个节点集群才能选举出来master节点,最多允许3个节点不可用;如果集群节点总数为8,那么需要5个节点才能选举出来master节点,最多允许3个节点不可用

所以7个节点和8个节点的容错能力是相同,所以奇数个更加节省资源

2、防止脑裂

什么是脑裂

脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。

脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群,而这些集群环境有一个统一的特点,就是它们有一个大脑,比如ElasticSearch集群中有Master节点,Zookeeper集群中有Leader节点。

Zookeeper集群中的脑裂场景

对于一个集群,想要提高这个集群的可用性,通常会采用多机房部署,比如现在有一个由6台zkServer所组成的一个集群,部署在了两个机房:

正常情况下,此集群只会有一个Leader,那么如果机房之间的网络断了之后,两个机房内的zkServer还是可以相互通信的,如果不考虑过半机制,那么就会出现每个机房内部都将选出一个Leader。

这就相当于原本一个集群,被分成了两个集群,出现了两个“大脑”,这就是脑裂。

对于这种情况,我们也可以看出来,原本应该是统一的一个集群对外提供服务的,现在变成了两个集群同时对外提供服务,如果过了一会,断了的网络突然联通了,那么此时就会出现问题了,两个集群刚刚都对外提供服务了,数据该怎么合并,数据冲突怎么解决等等问题。

刚刚在说明脑裂场景时,有一个前提条件就是没有考虑过半机制,所以实际上Zookeeper集群中是不会出现脑裂问题的,而不会出现的原因就跟过半机制有关。

而如果过半机制的条件是set.size() >= 3,那么机房1和机房2都会选出一个Leader,这样就出现了脑裂。所以我们就知道了,为什么过半机制中是大于,而不是大于等于。就是为了防止脑裂。

为什么集群节点都是奇数相关推荐

  1. zookeeper集群节点热扩容和迁移详解

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  2. Why is it recommended to create clusters with odd number of nodes? | 为什么集群节点建议奇数个?

    Why is it recommended to create clusters with odd number of nodes? | 为什么集群节点建议奇数个? 常说集群节点要奇数台,因为当你节点 ...

  3. MySQL集群节点宕机,数据库脑裂!如何排障?

    作者介绍 王晶,中国移动DBA,负责"移动云"业务系统的数据库集成架构设计.运维.优化等工作:擅长技术领域MySQL,获Oracle颁发的"MySQL DBA" ...

  4. 读懂这一篇,集群节点不下线

    作者 | 声东  阿里云售后技术专家 导读:排查完全陌生的问题.完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战.今天借这篇文章,跟大家分析一例这样的问题.排查过程中,需要理解一些自己完 ...

  5. Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本)...

    Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本) Hive 安装依赖 Hadoop 的集群,它是运行在 Hadoop 的基础上. 所以在安装 Hive 之 ...

  6. 04_Flink-HA高可用、Standalone集群模式、Flink-Standalone集群重要参数详解、集群节点重启及扩容、启动组件、Flink on Yarn、启动命令等

    1.4.Flink集群安装部署standalone+yarn 1.4.1.Standalone集群模式 1.4.2.Flink-Standalone集群重要参数详解 1.4.3.集群节点重启及扩容 1 ...

  7. Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线

    排查完全陌生的问题,完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战.今天借这篇文章,跟大家分析一例这样的问题.排查过程中,需要理解一些自己完全陌生的组件,比如systemd和dbus. ...

  8. Promethus搭建 K8S 集群节点资源监控系统

    对于集群的监控一般我们需要考虑以下几个方面: Kubernetes 节点的监控:比如节点的 cpu.load.disk.memory 等指标 内部系统组件的状态:比如 kube-scheduler.k ...

  9. 【Elasticsearch】ELASTICSEARCH集群节点的扩容(移除与添加)

    1.概述 转载:ELASTICSEARCH集群节点的扩容(移除与添加) 0x01 前言 我的elasticsearch集群在刚建立之初只是想用于测试,所以每个节点只有300G的磁盘空间.但后来用在我自 ...

最新文章

  1. 【原】开源——基于文件驱动的站点开发
  2. 男人必看:最近在网上流传甚广的一个帖子
  3. 使用IDEA界面或者命令行进行git cherry-pick
  4. [译]WCF RIA Services中的集合(2)
  5. java dispatchevent_dispatchEvent(AWTEvent) 分派事件
  6. 51单片机之定时器/计数器应用实例(方式0、1、2、3)
  7. Real to Int
  8. 韩顺平 servlet 笔记 第4讲
  9. 【AGC005F】Many Easy Problems FFT 容斥原理
  10. 简述负载均衡CDN技术
  11. 使用treeNMS管理及监控Redis
  12. Qt QTableView详解
  13. 微信公众号服务器需要备案,微擎不备案可以用吗?微信公众号开发域名一定要备案吗?...
  14. 服务器cpu哪个型号可以超频,CPU超频史上的14个神器:你用过几个?
  15. Hola~ 一款基于Electron的聊天软件
  16. fastboot 命令
  17. windows10虚拟机安装苹果系统
  18. 钉钉一行代码_利用Python快速搭建钉钉和邮件数据推送系统
  19. Valley Blue Pasture《谷蓝尼牧场》签到可领大红包
  20. Python - 至多包含两个字符的最大子串

热门文章

  1. computed原理
  2. 计算机教学助手,教学助手
  3. 【上海】上海七牛云存储招聘
  4. 【北亚数据恢复】IBM服务器raid5硬盘离线,热备盘未激活导致raid崩溃的数据恢复案例
  5. 你值得拥有的IoT 物联网平台开发实用技巧(一)——数据价值类
  6. Ruby Jquery 地图,地理信息相关资源
  7. intellij idea 无法使用复制,粘贴按钮
  8. 毕业设计 Stm32家庭有害气体检测系统 - 物联网 嵌入式 单片机
  9. Juniper SSG5--Fragmented traffic异常流量报错
  10. cakephp 安装mysql_CakePHP 2.x 安装与配置