首页
视频
资源
登录
原
Elasticsearch 基本概念:节点、集群、分片及副本
5831
人阅读
2020/8/14 21:44
总访问:
2536942
评论:
0
收藏:
0
手机
分类:
云产品
![elasticsearch](https://img.tnblog.net/arcimg/hb/5f1adabe8df94fdb8331eb80e393c4a3.jpeg "elasticsearch") >#Elasticsearch 基本概念:节点、集群、分片及副本 [TOC] <br/> 分布式系统的可用性与扩展性 ------------ - 高可用性 - 服务可用性 - 允许有节点可停止服务 - 数据可用性 - 部分节点丢失,不会丢失数据 - 可扩展性 - 请求量提升 / 数据的不断增长(将数据分布到所有的节点上) 分布式特性 ------------ - Elasticsearch 的分布式架构的好处 - 存储的水平扩容 - 提高系统的可用性,部分节点停止服务,整个集群的服务不受影响 - Elasticsearch 的分布式框架 - 不同的集群通过不同的名字来区分,默认名字“elasticsearch” - 通过配置文件修改,或者在命令行中通过 `-E cluster.name=elasticsearch` 进行设定。 - 一个集群可以有一个或多个节点 节点(node) ------------ - 是一个 Elasticsearch 的实例 - 本质上就是一个 Java 进程 - 一台实例上运行多个 Elasticsearch 进程,但是在生产环境一般建议一台机器上只运行一个 Elasticsearch 实例 - 每一个节点都有名字,通过配置文件配置,或者启动的时候 `-E node.name=node1` 指定 - 每一个节点启动后,会分配一个UID,保存到data目录下 Master-eligible nodes 和 Master node ------------ - 每一个节点启动后默认就是一个 Master eligible 节点 - 可以设置 node.master: false 禁止 - Master-eligible 节点参加选主流程,成为master节点 - 当第一个节点启动的时候,它会将自己选举成master节点 - 每个节点都保存了集群的状态,只有 Master 节点才能修改集群的状态信息 - 集群状态(Cluster state),维护了一个集群中,必要的信息 - 所有的节点信息 - 所有的索引和其相关的 Mapping 与 Setting 信息 - 分片的路由信息 - 任意节点都能够修改信息,会导致数据的不一致 Data Node & Coording Node ------------ <br/> >###Data Node tn>可以保存数据的节点,叫做Data Node。负责保存分片数据。在数据扩展上起到了至关重要的作用。 >###Coording Node tn>负责接收client的请求,并把请求分发到合适的节点中,最终把结果汇集在一起。 每个节点默认都起到了Coording Node的职责 其他节点类型 ------------ <br/> >###Hot & Warm Node tn>不同硬件配置的Data Node,用来实现 Hot & Ware 架构,降低集群部署的成本 >###Machine Learning Node tn>负责跑机器学习的Job,用来做异常检测。 >###Tribe Node tn>(5.3 开始使用 Close Cluster Search) Tribe Node 连接到不同到 Elasticsearch 集群,并且支持集群作为一个单独的集群处理 配置节点类型 ------------ - 开发环境中一个节点可以承担多种角色 - 生产环境中,应该设置单一的角色的节点(dedicated node) | 节点类型 | 配置参数 | 默认值 | | ------------ | ------------ | ------------ | | master.eligible | node.master | true | | data | node.data | true | | ingest | node.ingest | true | | coordinating | 无 | 每个节点默认都是coordinating | | machine learning | node.ml | true(需enable x-pack) | 分片(Primary Shard & Replica Shard) ------------ - 主分片用于作为数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有分片上 - 一个分片是运行 Lucene 的实例 - 主分片数在索引创建时指定,后续不允许修改,除非 Reindex - 副本,是用与解决高可用的问题。分片是主分片的拷贝 - 副本分片数,可以动态调整 - 增加副本数,还可以在一定程度上提高服务的可用性(读取可用性) - 一个三节点索引中,blogs 索引的分片分布情况 - 思考:增加一个节点或改大主分片数对系统的影响? >在 Dev Tools 中运行 `PUT /blogs` blogs 索引的分片分布情况 分片的设定 ------------ - 对于生产环境中分片的设定,需要提前做好容量的规划 - 分片数设置过小 - 导致无法增加节点实现水平扩展 - 单个分片数据量过大,导致数据重新分配耗时 - 分片数设置过大,7.0开始,默认主分片设置成1,解决了 over-sharding 的问题 - 影响搜索结果的相关打分,影响统计结果的准确性 - 单个节点上过多的分片,会导致资源浪费,同时也会影响性能 查看集群的健康状况 ------------ tn>我们可以通过 `_cluster/health` 来查看集群的健康状态 ![health](https://img.tnblog.net/arcimg/hb/ef7b7d001b484f9a9453b483210bee2b.png "health") >`Green` - 主分片与副本都正常分配 `Yellow` - 主分片全部正常分配,有副本分片未能正常分配 `Red` - 有主分片未能正常分配 tn>例如,当服务器的磁盘容量超过85%时,去创建了一个新的索引 cerebro 对 ES 的认识 ------------ ![](https://img.tnblog.net/arcimg/hb/686032a630704de49a314af217f69173.png) tn>从图中可以看到有2个节点,3个索引,6个分片,4719个文档;其中名为es7_01的es为主节点。如果当我们对副节点进行重起时我们可以看到 cerebro 会检测到,如下图所示。 ![](https://img.tnblog.net/arcimg/hb/2ad57a9ec32441ae8dd0e0a14b104eda.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
166篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术