当前位置: 首页 > article >正文

ElasticSearch06-分片节点分配

零、文章目录

ElasticSearch06-分片节点分配

1、单节点多分片多副本

(1)启动一个空节点
  • 节点的配置如下
cluster.name: mycluster
node.name: node-01
node.master: true
node.data: true
network.host: 127.0.0.1
http.port: 9201
transport.tcp.port: 9301
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
http.cors.enabled: true
http.cors.allow-origin: "*"
  • 节点启动完成分片副本情况如下

(2)空节点添加一个索引
  • 我们在空节点的集群内创建名为 teacher 的索引,分配3个主分片和每个主分片对应一个副本分片
# 请求
PUT http://localhost:9201/teacher
{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 1
    }
}

# 返回
{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "teacher"
}
  • number_of_shards:3 // 索引的主分片 3 个,也就是说索引的数据分成 3 片分开存储。分片主要实现高性能。
  • number_of_replicas:1 // 每个分片的副本有 1 个。副本是备份用的,主要实现高可用。
(3)主分片在一个节点,副本未分配
  • 三个主分片运行正常,但是三个副本分片都是未分配状态。
  • 当集群只有一个节点的时候,节点故障,数据是会丢失的。所以我们需要多节点,才能解决数据不安全问题。

2、故障转移

(1)启动新节点加入集群
  • 节点配置如下
cluster.name: mycluster
node.name: node-02
node.master: true
node.data: true
network.host: 127.0.0.1
http.port: 9202
transport.tcp.port: 9302
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
http.cors.enabled: true
http.cors.allow-origin: "*"
(2)主分片在主节点,副本在从节点
  • 三个分片在主节点上,对应的副本在从节点上,其中一个节点故障,也不影响。

3、水平扩容

(1)启动新节点加入集群
  • 节点配置如下
cluster.name: mycluster
node.name: node-03
node.master: true
node.data: true
network.host: 127.0.0.1
http.port: 9203
transport.tcp.port: 9303
discovery.seed_hosts: ["localhost:9301","localhost:9302","localhost:9303"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
http.cors.enabled: true
http.cors.allow-origin: "*"
(2)主分片和副本分布在多节点
  • 单个节点上分布的分片数量减少,每个节点上的硬件资源被更少的分片共享,提高系统整体的性能。
  • 如果继续扩容,节点超过 6 个节点后,每个节点上的分片就只有一个了,再增加节点就没有用了。

4、增加副本数量

(1)主分片和副本数量
  • 主分片的数目:在Elasticsearch中,索引的主分片(primary shard)数量是在创建索引时设置的,并且一旦索引被创建,其主分片的数量就不能再被修改。主分片的设计是为了确保数据的分布和查询的并行处理能力。
  • 副本的数量:Elasticsearch 允许你动态地修改索引的副本(replica)数量。副本数量可以在索引创建之后进行调整,以改变数据的冗余度和查询的负载分布。修改副本数量可以帮助你平衡集群的负载,提高数据的可靠性,或者在不同的使用场景下优化性能。
(2)修改副本数量
  • 我们把副本数量从 1 增加到 2
# 请求
PUT http://localhost:9201/teacher/_settings
{
    "number_of_replicas" : 2
}

# 返回
{
    "acknowledged": true
}
(3)副本数量增加,分配到多节点
  • 索引现在有 9 个分片,三个主分片,6 个副本分片

5、主节点宕机

(1)主节点 1 宕机
  • 主节点宕机之后,我们重新连接节点 2 查看
    • 节点重新选举,节点 2 变成了新的主节点
    • 宕机节点外的部分副本提升成了主节点,节点 3 上所有分片都成了主分片
    • 因为其他节点上存有全部分片的副本,所以数据未丢失

(2)为什么集群状态是 yellow
  • 虽然我们拥有所有的三个主分片,但是同时设置了每个主分片需要对应 2 份副本分片,而此时只存在一份副本分片。
(3)重新启动节点 1
  • 此时,节点 1 变成了从节点,节点 2 继续是主节点,集群状态是 green,分片又恢复成 9 片。


http://www.kler.cn/a/442907.html

相关文章:

  • 34.在 Vue 3 中使用 OpenLayers 上传 GeoJSON 文件并显示地图数据
  • 【DevOps基础篇】SCM(Source Code Management)
  • 网络安全管理员三级考试整理
  • 大数据治理相关工具:提升数据质量与合规性
  • 密码编码学与网络安全(第五版)答案
  • Redis篇--实际应用篇1--缓存穿透(布隆过滤器)
  • MySQL中in和exists的使用场景
  • Python 中使用 pymysql 操作 MySQL 数据库的基础指南
  • 2_使用 HTML5 Canvas API (1) --[HTML5 API 学习之旅]
  • Java毕设项目:基于Springboot生鲜销售商城网站系统设计与实现开题报告
  • Spring Boot 3.X:Unable to connect to Redis错误记录
  • [LeetCode-Python版]142. 环形链表 II
  • Springboot3.x 进阶-配置和序列化
  • Android绘图Path基于LinearGradient线性渐变,Kotlin(1)
  • 免费开源了一个图床工具 github-spring-boot-starter
  • 汽车发动机电控系统-【传感器】篇
  • 实践环境-docker安装mysql8.0.40步骤
  • elasticsearch 使用enrich processor填充数据
  • 代码随想录算法训练营第五十天 | 图 | 并查集
  • fpga系列 HDL:Quartus II PLL (Phase-Locked Loop) IP核 (Quartus II 18.0)