第四篇 elasticsearch的基本分布式架构

原创 2017年10月28日 17:19:13

1、Elasticsearch对复杂分布式机制的透明隐藏特性

Elasticsearch是一套分布式的系统,分布式是为了应对大数据量,它很好的隐藏了复杂的分布式机制:

  • shard分片机制
    我们可以随随便便就将一些document插入到es集群中去,而且不用关心数据怎么进行分片的,数据到哪个shard中去。
  • cluster discovery集群发现机制
    举例:我们之前在做那个集群status从yellow转green的实验里,直接启动了第二个es进程,那个进程作为一个node自动就发现了集群,并且加入了进去,还接受了部分数据,replica shard
  • shard负载均衡
    举例:假设现在有3个节点,总共有25个shard要分配到3个节点上去,es会自动进行均匀分配,以保持每个节点的均衡的读写负载请求

2、Elasticsearch的垂直扩容与水平扩容

垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈,假设世界上最强大的服务器容量就是10T,但是当你的总数据量达到5000T的时候,你要采购多少台最强大的服务器啊

水平扩容:业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力

普通服务器:1T,1万,100万
强大服务器:10T,50万,500万

3、shard&replica机制梳理

(1)index包含多个shard
(2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
(3)增减节点时,shard会自动在nodes中负载均衡
(4)primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
(5)replica shard是primary shard的副本,负责容错,以及承担读请求负载
(6)primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
(7)primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard
(8)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上

4、elasticsearch的横向扩容过程,如何超出扩容极限,以及如何提升容错性

(1)primary&replica自动负载均衡,6个shard,3 primary,3 replica
(2)每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好
(3)扩容的极限,6个shard(3 primary,3 replica),最多扩容到6台机器,每个shard可以占用单台服务器的所有资源,性能最好
(4)超出扩容极限,动态修改replica数量,9个shard(3primary,6 replica),扩容到9台机器,比3台机器时,拥有3倍的读吞吐量
(5)3台机器下,9个shard(3 primary,6 replica),资源更少,但是容错性更好,最多容纳2台机器宕机,6个shard只能容纳0台机器宕机
(6)这里的这些知识点,你综合起来看,就是说,一方面告诉你扩容的原理,怎么扩容,怎么提升系统整体吞吐量;另一方面要考虑到系统的容错性,怎么保证提高容错性,让尽可能多的服务器宕机,保证数据不丢失

5、elasticsearch容错过程分析

master node宕机的一瞬间这个节点上的primary shard就没了,此时就不是active status,就不是所有的primary shard都是active了。
容错第一步: master选举,自动选举另外一个node成为新的master,承担起master的责任来;
容错第二步: 新master将丢掉的primary shard的某个replica shard提升为rpimary shard。此时cluster status会变为yellow,因为primary shard全都变成active了。但是少了一个replica shard,所以不是所有的replica shard都是active了。
容错第三步: 重故障的node,new master会将缺失的副本都copy一份到node上去,并且该node会使用之前已有的shard数据,只是同步下一个宕机之后发生过的修改。cluster status变为green,因为primary shard和replica shard都齐全了。

Elasticsearch集群未分配的shard

一般情况下,Elasticsearch会自动将shard分配到各个数据节点上,但有些特殊的情况下,也会有shard未被分配的情况,整个集群处于Yellow状态。在你有足够的replica shard备...
  • quicknet
  • quicknet
  • 2015年02月23日 08:37
  • 9524

mongoDB——shard简介

shard     shard是mongoDB的数据存储构件。     是逻辑上的一种称呼,集群中,shard是一个instance的集合。如下图所示:     示意图画的不好,纯粹是为了自己记...
  • huyangshu87
  • huyangshu87
  • 2016年03月31日 21:19
  • 385

es-01

GET /_cat/health?vepoch timestamp cluster status node.total node.data shards pri relo ini...
  • zlfing
  • zlfing
  • 2017年11月08日 13:39
  • 122

大话Elasticsearch常用操作和核心原理

我们想要寻找某些信息的时候,一般会直接去百度、谷歌、搜歌、360搜索等,搜索分为垂直搜索、互联网搜索、IT系统的搜索。搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然...
  • sdksdk0
  • sdksdk0
  • 2017年11月07日 16:20
  • 932

Elasticsearch节点磁盘空间耗尽

最近遇到了一个特殊的情况,我们所使用的一个Elasticsearch集群的数据节点磁盘空间耗尽,啥事会发生呢? 当然你的RED。下面是相关的日志信息,其中ES-Data_11是当时的Master节点,...
  • quicknet
  • quicknet
  • 2017年03月23日 06:23
  • 5482

mongodb 分片集群切换单个分片副本集primary的正确步骤

1、将原来的primay降为secondary shard1:PRIMARY> rs.stepDown(); 2016-07-11T20:35:30.134+0800 I NETWORK  D...
  • mchdba
  • mchdba
  • 2016年07月14日 21:58
  • 4450

MongoDB之集群安装部署与shard操作

近期在设计用户标签系统当中, 采用了mongodb作为标签体系的底层主要的存储系统,因此在这里先尝试下有关mongodb的shard方式集群方式安装与测试: 一. 环境部署:    1.1   版...
  • shenxiaoming77
  • shenxiaoming77
  • 2016年04月14日 12:19
  • 877

Elasticsearch模块功能之-索引分片分配(Index shard allocation)

1、分片分配                    包含或者排除filters可以来控制基于节点的索引分配。filters可以在索引级别和集群级别进行设置。如下使用集群级别举例:         ...
  • changong28
  • changong28
  • 2014年08月06日 00:05
  • 7988

[mongodb]shard cluster(分片集群)搭建实录

mongodb集群搭建实例
  • ssrc0604hx
  • ssrc0604hx
  • 2016年06月28日 16:56
  • 783

数据库 shard 分片存储

2.1.1什么是数据切分 "Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏中。"Sharding" 姑且称之为"分片"。Shardin...
  • zhuyijian135757
  • zhuyijian135757
  • 2014年11月06日 22:58
  • 5318
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第四篇 elasticsearch的基本分布式架构
举报原因:
原因补充:

(最多只允许输入30个字)