Elasticsearch节点重启时背后发生的故事有哪些,应该注意哪些配置内容,本篇文章做一个简单的探讨。
节点离开
在elasticsearch集群中,假设NodeA因为种种原因退出集群,在NodeA上的Shard分片情况(ShardA是主分片,ShardB是某一分片副本)
- 在存活节点上找到ShardA的副本,将该副本升格为主分片
- 由于ShardB这一分片副本丢失,所以会重新创建相应的分片副本
- 在存活的节点中对于分片进行再平衡
这样做的目的是保证每个分片都有足够的副本,可以避免数据丢失。需要注意的是,步骤二和步骤三牵涉到大量的网络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(Elasticsearch)简介 ...总之,理解和掌握Elasticsearch的主节点选举机制有助于提高系统的健壮性和性能表现,是运维人员和技术团队不可或缺的知识点之一。
完成配置后,重启 Elasticsearch 服务。然后,通过命令 `./elasticsearch-setup-passwords interactive` 在 `/usr/share/elasticsearch/bin/` 目录下设置用户密码,包括默认的 `elastic` 用户。确保在 Kibana 的配置...
`start` 用于启动Elasticsearch,这里使用 `su` 命令切换到指定的Elasticsearch用户(例如 `es-admin`),然后进入Elasticsearch的安装目录并执行 `bin/elasticsearch` 文件以后台模式启动服务。`stop` 通过查找并杀...
在配置文件中启用插件,并重启Elasticsearch以应用改动。之后可以在查询语句中使用插件提供的功能。 8. **集群配置**:Elasticsearch支持多节点集群,通过配置`elasticsearch.yml`文件可以设置节点间的通信,实现...
"es-head"是Elasticsearch-head的简写,它允许用户无需编写复杂的curl命令就能与Elasticsearch进行交互。通过这个插件,你可以查看索引的状态,监控节点健康状况,查看集群统计信息,甚至进行索引的创建、删除和映射...
3. 安装完成后,重启 Elasticsearch 服务以使插件生效。 **使用 Head 插件** 1. 在浏览器中输入 `http://localhost:9200/_plugin/head/`,你将看到 Head 插件的界面。 2. 通过 Head 插件,你可以监控集群的健康...
标题"Chrome浏览器查看elasticsearch head插件"指的是在Google Chrome浏览器上使用一个名为"head"的插件来查看和管理Elasticsearch(ES)集群。Elasticsearch是一个流行的开源搜索引擎和数据分析工具,而"head"插件...
安装elasticsearch-head-5.0.0.zip非常简单,通常只需要将解压后的文件放到Elasticsearch的plugins目录下,然后重启Elasticsearch服务。通过在浏览器中输入`http://localhost:9200/_plugin/head/`(假设Elastic...
6. **服务化管理**:为了方便管理和维护,可以将 Elasticsearch 设置为系统服务,这样可以使用 `systemctl` 或 `service` 命令来启动、停止或重启服务。 **Elasticsearch 的核心特性** - **分布式架构**:Elastic...
安装完成后,无需重启 Elasticsearch 服务,Head 插件就已经生效。只需在浏览器中输入 `http://localhost:9200/_plugin/head/`(假设 Elasticsearch 运行在本地且默认端口为 9200)即可访问到 Head 插件的界面。 ##...
- 在Ranger Admin界面创建新的服务定义,选择Elasticsearch类型,并配置相关参数,如Elasticsearch节点地址。 - 定义策略:在Ranger界面创建权限策略,设定用户或用户组对Elasticsearch索引、文档、字段的访问权限。...
安装过程通常包括克隆仓库、编译源码、将生成的 JAR 文件放入 Elasticsearch 的 plugins 目录,然后重启 Elasticsearch 服务。 在实际使用中,你需要考虑以下几点: 1. 配置 Elasticsearch:根据你的需求调整配置...
在安装SearchGuard前,为了减少节点重启时的分片分配时间,我们需要临时禁用分片分配。执行如下命令: ``` curl -s -XPUT 'http://<节点IP>:<端口>/_cluster/settings?pretty' -H 'Content-Type: application/json' ...
- **启动与访问**: 安装完成后,重启Elasticsearch。然后,可以通过浏览器访问`http://localhost:9200/_plugin/head/`来使用Head插件(默认端口9200)。 4. **多版本Elasticsearch共存**: - **端口配置**: 为...
安装完成后,无需重启浏览器,只需在地址栏输入`http://localhost:9200/_plugin/head/`(假设Elasticsearch运行在本地且默认端口9200),即可看到Elasticsearch-Head的界面。 2. **主要功能** - **集群监控**:...
完成后,Elasticsearch服务需重启以使插件生效: ```bash ./bin/elasticsearch stop ./bin/elasticsearch ``` ### 使用head插件 一旦Elasticsearch和`head`插件都已安装并运行,我们就可以在浏览器中访问`head`...
4. 修改ES配置文件:每个ES节点的配置文件elasticsearch.yml需要进行修改,以启用xpack的安全功能,机器学习功能,并设置许可证类型为试用版。 5. 重启ES集群:修改配置文件后,需要重启Elasticsearch集群,以使新...
3. 重启Elasticsearch服务使更改生效。 4. 在索引设置中指定使用IK分词器,例如: ```json { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "ik_max_word" } } } }, ...
在传统的IK分词器中,词典通常是静态的,需要重启Elasticsearch服务才能生效新的词库。但在本项目中,我们利用MySQL数据库存储词典,通过Elasticsearch的监听机制,实现实时更新词典: 1. 数据库存储:将词典信息...
3. 重启 Elasticsearch 服务,插件会自动加载。 4. 打开浏览器,输入 `http://localhost:9200/_plugin/head/` (默认端口,如果Elasticsearch配置了其他端口,请相应调整),即可访问 Elasticsearch-Head。 **使用...