`
kfcman
  • 浏览: 399506 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

elasticsearch之节点重启

 
阅读更多

 

Elasticsearch节点重启时背后发生的故事有哪些,应该注意哪些配置内容,本篇文章做一个简单的探讨。

节点离开

在elasticsearch集群中,假设NodeA因为种种原因退出集群,在NodeA上的Shard分片情况(ShardA是主分片,ShardB是某一分片副本)

  1. 在存活节点上找到ShardA的副本,将该副本升格为主分片
  2. 由于ShardB这一分片副本丢失,所以会重新创建相应的分片副本
  3. 在存活的节点中对于分片进行再平衡
    这样做的目的是保证每个分片都有足够的副本,可以避免数据丢失。需要注意的是,步骤二和步骤三牵涉到大量的网络I/O操作。

节点返回

如果离开的节点重新加入集群,elasticsearch为了对数据分片(shard)进行再平衡,会为重新加入的NodeA再次分配数据分片(Shard), 这会再次导致大量的网络I/O操作。

延迟副本的重新分配

如果NodeA在离开前上面存在副本ShardB,重新加入之后还是有副本ShardB,看起来一样,但其实中间已经进行了大量的网络I/O,那么 有没有办法延迟副本的重新分配呢,这样会冒丢失数据的可能(如果在NodeA重新加入之前,其它节点也挂了), 但是可以节省相应的网络开销。

延迟副本分配可以通过设置参数index.unassigned.node_left.delayed_timeout来实现,该参数动态可调,默认值是1分钟(1m)

PUT /_all/_settings
{
  "settings": {
    "index.unassigned.node_left.delayed_timeout": "5m"
  }
}

上述脚本将副本重新分配延迟到5分钟之后。

查看数据分片分布情况

使用elasticsearch中的marvel插件可以很清楚的看到数据分片的分布情况,选取marvel中右上角 DashBoard 中的 Shard Allocation , 可以看到类似于下图的分布情况

更多选项

如果日常维护elasticsearch集群,针对某一节点进行需要重启的更改,那么可以先禁止分片分配,待重启完成后,再打开

PUT _cluster/setting
{
    "cluster.routing.allocation.disable_allocation": true
}

避免节点重启导致的脑裂

如果elasticsearch集群中节点数比较多,而且负载也比较高,这个时候对某一个instance进行重启,很有可能会导致该instance无法找到master而将自己推举为master的情况出现,如何防止,需要调整 elasticsearch.yml 中的内容

discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.timeout: 120s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["host1","host2"]

client.transport.ping_timeout:60s

加快recovery的进程

Elasticsearch在默认情况下将资源更多的分配给正常的traffic,这样给recovery的资源相对有限,会导致整个集群长时间处 于yellow状态,如果机器配置很强劲,那么更改如下配置,可以加快elasticsearch instance重启之后的恢复过程。

cluster.routing.allocation.node_initial_primaries_recoveries: 10
cluster.routing.allocation.node_concurrent_recoveries: 5
indices.recovery.max_bytes_per_sec: 100mb
indices.recovery.concurrent_streams: 5
分享到:
评论

相关推荐

    ES节点自主选择

    ### ES节点自主选择知识点解析 #### 一、ES(Elasticsearch)简介 ...总之,理解和掌握Elasticsearch的主节点选举机制有助于提高系统的健壮性和性能表现,是运维人员和技术团队不可或缺的知识点之一。

    elasticsearch未授权访问 漏洞修复

    完成配置后,重启 Elasticsearch 服务。然后,通过命令 `./elasticsearch-setup-passwords interactive` 在 `/usr/share/elasticsearch/bin/` 目录下设置用户密码,包括默认的 `elastic` 用户。确保在 Kibana 的配置...

    Elasticsearch 开机自启脚本

    `start` 用于启动Elasticsearch,这里使用 `su` 命令切换到指定的Elasticsearch用户(例如 `es-admin`),然后进入Elasticsearch的安装目录并执行 `bin/elasticsearch` 文件以后台模式启动服务。`stop` 通过查找并杀...

    elasticsearch7.14.0.zip

    在配置文件中启用插件,并重启Elasticsearch以应用改动。之后可以在查询语句中使用插件提供的功能。 8. **集群配置**:Elasticsearch支持多节点集群,通过配置`elasticsearch.yml`文件可以设置节点间的通信,实现...

    Elasticsearch-head谷歌插件谷歌插件.zip

    "es-head"是Elasticsearch-head的简写,它允许用户无需编写复杂的curl命令就能与Elasticsearch进行交互。通过这个插件,你可以查看索引的状态,监控节点健康状况,查看集群统计信息,甚至进行索引的创建、删除和映射...

    elasticsearch1.5.2带head插件

    3. 安装完成后,重启 Elasticsearch 服务以使插件生效。 **使用 Head 插件** 1. 在浏览器中输入 `http://localhost:9200/_plugin/head/`,你将看到 Head 插件的界面。 2. 通过 Head 插件,你可以监控集群的健康...

    Chrome浏览器查看elasticsearch head插件

    标题"Chrome浏览器查看elasticsearch head插件"指的是在Google Chrome浏览器上使用一个名为"head"的插件来查看和管理Elasticsearch(ES)集群。Elasticsearch是一个流行的开源搜索引擎和数据分析工具,而"head"插件...

    elasticsearch-head-5.0.0.zip

    安装elasticsearch-head-5.0.0.zip非常简单,通常只需要将解压后的文件放到Elasticsearch的plugins目录下,然后重启Elasticsearch服务。通过在浏览器中输入`http://localhost:9200/_plugin/head/`(假设Elastic...

    elasticsearch-7.7(内含一键安装脚本)

    6. **服务化管理**:为了方便管理和维护,可以将 Elasticsearch 设置为系统服务,这样可以使用 `systemctl` 或 `service` 命令来启动、停止或重启服务。 **Elasticsearch 的核心特性** - **分布式架构**:Elastic...

    Elasticsearch head插件

    安装完成后,无需重启 Elasticsearch 服务,Head 插件就已经生效。只需在浏览器中输入 `http://localhost:9200/_plugin/head/`(假设 Elasticsearch 运行在本地且默认端口为 9200)即可访问到 Head 插件的界面。 ##...

    ranger-2.1.0-elasticsearch-plugin.tar.gz

    - 在Ranger Admin界面创建新的服务定义,选择Elasticsearch类型,并配置相关参数,如Elasticsearch节点地址。 - 定义策略:在Ranger界面创建权限策略,设定用户或用户组对Elasticsearch索引、文档、字段的访问权限。...

    elasticsearch-7.14.0+分词器+head插件一键下载

    安装过程通常包括克隆仓库、编译源码、将生成的 JAR 文件放入 Elasticsearch 的 plugins 目录,然后重启 Elasticsearch 服务。 在实际使用中,你需要考虑以下几点: 1. 配置 Elasticsearch:根据你的需求调整配置...

    ElasticSearch7.2.1+SearchGuard+Kibana+KerBeros集群测试环境部署文档.pdf

    在安装SearchGuard前,为了减少节点重启时的分片分配时间,我们需要临时禁用分片分配。执行如下命令: ``` curl -s -XPUT 'http://<节点IP>:<端口>/_cluster/settings?pretty' -H 'Content-Type: application/json' ...

    elasticsearch-6.1.2.tar.gz,elasticsearch-5.5.2.tar和head插件

    - **启动与访问**: 安装完成后,重启Elasticsearch。然后,可以通过浏览器访问`http://localhost:9200/_plugin/head/`来使用Head插件(默认端口9200)。 4. **多版本Elasticsearch共存**: - **端口配置**: 为...

    elasticsearch-head 的谷歌浏览器(chrome)插件,版本为 0.1.5。

    安装完成后,无需重启浏览器,只需在地址栏输入`http://localhost:9200/_plugin/head/`(假设Elasticsearch运行在本地且默认端口9200),即可看到Elasticsearch-Head的界面。 2. **主要功能** - **集群监控**:...

    elasticsearch-5.6.4-head.tar

    完成后,Elasticsearch服务需重启以使插件生效: ```bash ./bin/elasticsearch stop ./bin/elasticsearch ``` ### 使用head插件 一旦Elasticsearch和`head`插件都已安装并运行,我们就可以在浏览器中访问`head`...

    Elasticsearch 6.5.1 xpack 试用版安装教程20200701.pdf

    4. 修改ES配置文件:每个ES节点的配置文件elasticsearch.yml需要进行修改,以启用xpack的安全功能,机器学习功能,并设置许可证类型为试用版。 5. 重启ES集群:修改配置文件后,需要重启Elasticsearch集群,以使新...

    IK分词器elasticsearch-analysis-ik-7.17.16

    3. 重启Elasticsearch服务使更改生效。 4. 在索引设置中指定使用IK分词器,例如: ```json { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "ik_max_word" } } } }, ...

    ElasticSearch基于Mysql热更新IK词典项目

    在传统的IK分词器中,词典通常是静态的,需要重启Elasticsearch服务才能生效新的词库。但在本项目中,我们利用MySQL数据库存储词典,通过Elasticsearch的监听机制,实现实时更新词典: 1. 数据库存储:将词典信息...

    elasticsearch-head 1.0.8.zip

    3. 重启 Elasticsearch 服务,插件会自动加载。 4. 打开浏览器,输入 `http://localhost:9200/_plugin/head/` (默认端口,如果Elasticsearch配置了其他端口,请相应调整),即可访问 Elasticsearch-Head。 **使用...

Global site tag (gtag.js) - Google Analytics