ES高可用及集群管理

本文详细介绍了Elasticsearch的高可用性及集群管理,包括分片概念及负载均衡、数据持久化变更、集群发现机制和选举过程。讨论了如何处理节点重启、分片迁移以及选举策略,强调了集群健康和数据安全的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ES高可用及集群管理

Elasticsearch 是一个分布式、高扩展、高实时、RESTful 风格的搜索与数据分析引擎。

  • 服务可用性:允许有节点停止服务
  • 数据可用性:部分节点丢失,不会丢失数据
  • 水平扩展
  • 集群容错
一、分片
1、什么是分片及其作用

节点:一个运行中的ES实例成为一个节点;

集群:由一个或者多个拥有相同cluster.name配置的节点组成;

分片:分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分。

​ 一个索引可以存储超出单个节点硬件限制的大量数据,会出现索引数据量大,响应慢等问题;ES把一个索引划分成了多份,每个分片都是功能完善且独立的索引,这些分片分配到集群中的各个节点上。

​ 分片分为主分片副本分片,对文档的新建、索引、删除等写操作,必须在主分片上完成之后才能被复制到相关的副本分片; 副本分片是主分片的一个副本,防止硬件故障导致数据丢失;提供读请求;当主分片异常,副本分片可以升级成主分片提供服务;高可用的一个保障;

​ 主分片和副本分片不会在同一个节点上,防止单点故障。如果其中一个节点宕机,任然可以从剩余节点中获取到一个索引的完整数据

在这里插入图片描述

    
//创建索引的时候指定分片数
PUT /my_index
{
   
  "settings": {
   
    "number_of_shards":   3, 
    "number_of_replicas": 1
  }
}

主分片数定义好后不能修改:shard = hash(routing) % number_of_primary_shards

routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。

数据写入流程:

在这里插入图片描述

2、分片负载均衡

Shard会被均衡的分配到每个节点上,且主分片和副本分片不会在同一个节点上。

​ master节点根据现在各个数据节点上的主分片分布情况来安排哪些节点来接收新的索引的主分片,根据各个数据节点上的总分片的分布情况来安排哪些节点来接收新的索引的副本分片。本着集群各数据节点总体均衡的策略来安排节点。

水平扩容:新增机器,会自动集群发现加入集群,同时自动分片负载均衡,进行分片迁移

在这里插入图片描述

添加第三个节点,为了分散负载对分片进行重新分配

在这里插入图片描述

(1)如果需要修改主分片数该怎么做

通过reindex

就是创建一个新的索引,将原来索引的数据迁移到新的索引里面去,以达到修改的目的。

  • 创建一个新的索引,设置副本数为0(使用零副本进行索引,然后在提取完成时启用副本,则恢复过程本质上是逐字节的网络传输。 这比复制索引过程更有效。)

  • 增加refresh间隔,再导入期间何以设置为-1来禁用刷新。

    PUT /my_index/_settings
    { "refresh_interval": -1 }
    
  • 数据迁移

    POST _reindex?slices=auto&wait_for_completion=false
     
    {
         
     
      "source": {
         
     
        "index": "old_index",
     
        "size": 5000,
     
      }<
### Elasticsearch 集群高可用性配置最佳实践 #### 1. 合理规划节点角色 为了提高Elasticsearch集群的稳定性和性能,建议采用热温架构来分配不同类型的节点。热节点处理实时索引和查询请求;而温节点则存储较旧的数据并执行较少资源密集型的任务[^2]。 #### 2. 设置合适的分片数量与副本数 增加主分片的数量可以帮助分布负载,但是过多会带来管理上的复杂度以及额外开销。对于大多数情况来说,默认的一个主分片加上一到两个副本来提供冗余通常是合理的方案。这有助于当某个节点发生故障时其他节点能够接管其工作负荷而不影响服务正常运行[^4]。 #### 3. 控制写入一致性级别 通过调整`index.write.wait_for_active_shards`参数可指定每次写入操作前需等待激活的状态下的最小活动分片数目。如果将其设为'all',那么只有在所有复制分片都处于健康状态的情况下才会完成一次完整的写入过程,从而增强了数据的安全性和完整性保障。 #### 4. 使用跨数据中心部署策略 考虑到单个地理位置可能出现灾难性的网络中断风险,在多个地理区域内部署Elasticsearch实例形成联邦结构也是一种有效的做法。这种方式不仅提高了整体系统的容错能力,还使得应用程序能够在更广泛的范围内访问最近位置的服务端点[^3]。 ```json { "cluster.name": "my_cluster", "node.master": true, "node.data": false, "path.conf": "/etc/elasticsearch/", "discovery.zen.ping.unicast.hosts": ["host1", "host2"], "gateway.recover_after_nodes": 2, "index.number_of_replicas": 2, "index.write.wait_for_active_shards": "all" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值