Elasticsearch-节点、集群、分片、副本

一、分布式系统的可用性与扩展性

1.高可用

  • 服务可用性:允许有节点停止服务
  • 数据可用性:部分节点丢失,不会丢失数据

2.可扩展性

  • 请求量提升/数据不断增长(将数据分布到所有节点上)

3.ES分布式架构的好处

  • 存储的水平扩容
  • 提高系统的可用性,部分节点停止服务,整个集群的服务不受影响

4.ES的分布式架构

  • 不同的集群通过不同的名字区分,默认名字“elasticsearch”
  • 通过配置文件修改,或者在命令行中 -E cluster.name=myes 进行设定
  • 一个集群可以有一个或者多个节点

二、节点

1.定义

节点是一个ES的实例,本质是一个Java进程,一台机器上可以 运行多个ES进程,但是生产环境一般建议一台机器上只运行一个ES实例

  • 每一个节点都有名字,通过配置文件配置,或者启动的时候 -E node.name=mynode指定
  • 每一个节点在启动之后,会分配 一个UID,保存在data目录下

2.Master-eligible nodes和Master Node

  • 每个节点启动后,默认就是一个Master eligible节点
    可以设置 node.master:false禁止
  • Master eligible节点可以参与选主流程,成为Master节点
  • 当第一个节点启动时,它会将自己选举为Master节点
  • 每个节点上都保存了集群的状态,只有Master节点才能修改集群的状态信息

集群状态维护了一个集群中必要的信息:

  • 所有的节点信息
  • 所有的索引和其他相关的Mapping和Setting信息
  • 分片的路由信息

任意节点都能修改信息会导致数据的不一致性

3.Data Node 和 Coordinating Node

  • Data Node:可以保存数据的节点;负责保存分片数据,在数据扩展上起到了至关重要的作用
  • Coordinating Node:负责接受Client请求,将请求分发到合适的节点,最终把结果汇集到一起

每个 节点都默认起到了Coordinating Node的职责

4.Hot 和 Warm Node

不同硬件配置的 Data Node ,用来实现 Hot & Warm 架构,降低集群部署的成本(硬件成本)
Hot机器选择较好的,Warn机器选择较差的

5.Machine Learning Node

负责跑机器学习的job,用来做异常检测

6.Tribe Node

Tribe Node连接到不同的ES集群,并且支持将这些集群当成一个单独的集群处理。

5.3开始使用 Cross Cluster Search

7.配置节点类型

开发环境中一个节点可以承担 多种角色
生产环境中,应该设置单一角色的节点(dedicated node)

节点类型 配置参数 默认值
maste eligible node.master true
data node.data true
ingest node.ingest true
coordinating only 每个节点默认都是coordinating节点。设置其他类型全部都为false
machine learning node.ml true(需enable x-pack)

三、分片

一个索引可以存储超出单个节点硬件限制的大量数据。
比如,一个具有 10 亿文档数据的索引占据 1TB 的磁盘空间,而任一节点都可能没有这样大的磁盘空间。或者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力,每一份就称之为分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。
分片很重要,主要有两方面的原因:
1)允许你水平分割 / 扩展你的内容容量。
2)允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。
至于一个分片怎样分布,它的文档怎样聚合和搜索请求,是完全由 Elasticsearch 管理的,对于作为用户的你来说,这些都是透明的,无需过分关心。
被混淆的概念是,一个 Lucene 索引 我们在 Elasticsearch 称作 分片 。
一个Elasticsearch 索引 是分片的集合。
当 Elasticsearch 在索引中搜索的时候, 他发送查询到每一个属于索引的分片(Lucene 索引),然后合并每个分片的结果到一个全局的结果集。

1.主分片

用以解决数据水平扩展的问题。通过主分片,可以将数据分布在集群内的所有节点上

  • 一个分片是一个运行的Lucene的实例
  • 主分片数在索引创建时指定,后续不允许修改,除非Reindex

2.副本分片

用以解决数据高可用的问题。副本分片是主分片的拷贝

  • 副本分片数可以动态调整
  • 增加副本数可以在一定程度上提高服务的可用性(读取的吞吐量)

3.分片的设定

对于生产环境中分片的设定,需要提前做好容量规划

  • 分片数设置过小
    导致后续无法增加节点实现水平扩展
    单个分片的数量太大,导致数据重新分配耗时
  • 分片数设置过大,7.0开始默认主分片设置成1,解决了over-sharding的问题
    影响搜索结果的相关性打分,影响统计结果的准确性
    单个节点上过多的分片,会导致资源浪费,同时也会影响性能

4.集群健康状况

安装多个es

#start multi-nodes Cluster
bin/elasticsearch -E node.name=node0 -E cluster.name=hongcaixia -E path.data=node0_data
bin/elasticsearch -E node.name=node1 -E cluster.name=hongcaixia -E path.data=node1_data
bin/elasticsearch -E node.name=node2 -E cluster.name=hongcaixia -E path.data=node2_data
bin/elasticsearch -E node.name=node3 -E cluster.name=hongcaixia -E path.data=node3_data

GET _cluster/health

{
  "cluster_name" : "hongcaixia",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 2,
  "active_shards" : 2,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

GET _cat/shards:

.kibana_1            0 p STARTED 3 11.3kb 172.18.0.4 es7_01
.kibana_task_manager 0 p STARTED 2 12.7kb 172.18.0.4 es7_01
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容