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

wordpress 全站过滤wordpress 仿京东主题

wordpress 全站过滤,wordpress 仿京东主题,wordpress 文件重命名,怎么选择网站模板目录 前言 1 Elasticsearch分片基础概念 1.1 什么是分片 1.2 为什么需要手动分片分配 2 分片分配的基本原理 2.1 分片分配过程 2.2 分片状态生命周期 3 手动分片分配前的准备工作 3.1 检查集群健康状态 3.2 查看未分配分片 3.3 查看分片分配解释 4 手动分片分配方法…

目录

前言

1 Elasticsearch分片基础概念

1.1 什么是分片

1.2 为什么需要手动分片分配

2 分片分配的基本原理

2.1 分片分配过程

2.2 分片状态生命周期

3 手动分片分配前的准备工作

3.1 检查集群健康状态

3.2 查看未分配分片

3.3 查看分片分配解释

4 手动分片分配方法详解

4.1 使用Cluster Reroute API

4.2 分片分配过滤器

4.3 完整手动分配流程

5 不同场景下的手动分配实践

5.1 场景一:恢复丢失的主分片

5.2 场景二:强制分配副本分片

5.3 场景三:迁移分片到特定节点

6 高级分片分配控制

6.1 分配感知(Allocation Awareness)

6.2 分片分配过滤

6.3 分片分配限流

7 监控与验证

7.1 监控分片分配进度

7.2 验证分片分配

7.3 查看分片分配详情

8 常见问题与解决方案

8.1 分片无法分配的可能原因

8.2 手动分配失败的处理

8.3 数据一致性保证

9 实践建议

10 总结


前言

在Elasticsearch集群的日常运维中,分片分配是一个核心且关键的操作。虽然Elasticsearch具备自动分片分配和再平衡的能力,但在某些特殊场景下,我们需要手动干预分片的分配。本文将深入探讨Elasticsearch集群手动分片分配的各种方式、适用场景以及具体操作步骤,帮助运维人员和开发者更好地掌控集群状态。

1 Elasticsearch分片基础概念

1.1 什么是分片

分片(Shard)是Elasticsearch中最基本的数据存储单元,一个索引被分成多个分片分布在集群的不同节点上。Elasticsearch中的分片分为两种类型:
  • 主分片(Primary Shard):存储索引数据的主要副本,负责所有写操作
  • 副本分片(Replica Shard):主分片的拷贝,用于提供高可用性和读操作的负载均衡

1.2 为什么需要手动分片分配

虽然Elasticsearch的自动分片分配机制在大多数情况下工作良好,但在以下场景中,手动分配分片是必要的:
  • 节点故障恢复:当节点长时间离线后重新加入集群
  • 硬件更换:迁移数据到新硬件节点
  • 负载均衡:优化热点分片分布
  • 集群扩容:将数据均匀分布到新节点
  • 维护操作:计划内的节点维护

2 分片分配的基本原理

2.1 分片分配过程

Elasticsearch的分片分配过程涉及几个核心组件:
  • Allocation Service:负责决定分片应该分配到哪个节点
  • Cluster State:维护集群的元数据信息
  • Shard Allocation Awareness:感知节点属性进行智能分配

2.2 分片状态生命周期

了解分片状态对于手动分配至关重要:
  • UNASSIGNED:分片未分配到任何节点
  • INITIALIZING:分片正在初始化
  • STARTED:分片已启动并可处理请求
  • RELOCATING:分片正在迁移到另一个节点

3 手动分片分配前的准备工作

3.1 检查集群健康状态

  • 在进行任何手动分配操作前,首先检查集群状态:
curl -u 'es_user:es_user_passwd' -X GET "集群IP:9200/_cluster/health?pretty"
重点关注以下指标:
  • status:green/yellow/red
  • unassigned_shards:未分配分片数量
  • active_shards_percent:活跃分片百分比

3.2 查看未分配分片

  • 获取未分配分片的详细信息:
curl -u 'es_user:es_user_passwd' -X GET "集群IP:9200/_cat/shardsv&h=index,shard,prirep,state,unassigned.reason&s=state"

3.3 查看分片分配解释

  • 了解为什么某些分片没有被分配:
curl -u 'es_user:es_user_passwd' -X GET "集群IP:9200/_cluster/allocation/explain?pretty"

4 手动分片分配方法详解

4.1 使用Cluster Reroute API

_cluster/reroute API是手动分配分片的主要接口,它允许我们明确指定分片的分配。
  • 基本语法:
curl -u 'es_user:es_user_passwd' -X POST "集群IP:9200/_cluster/reroute?pretty" -H 'Content-Type: application/json' -d'
{"commands": [{"allocate_stale_primary": {"index": "index_name","shard": shard_number,"node": "node_name","accept_data_loss": true}}]
}
'

常用命令类型:

  • move:将已分配的分片从一个节点移动到另一个节点
  • cancel:取消正在进行的分配或恢复
  • allocate_replica:分配一个未分配的副本分片
  • allocate_stale_primary:分配一个陈旧的主分片(可能丢失数据)
  • allocate_empty_primary:分配一个空的主分片(数据会丢失)

4.2 分片分配过滤器

  • 我们可以通过设置分配过滤器来控制分片的分配位置:
curl -u 'es_user:es_user_passwd' -X PUT "集群IP:9200/index_name/_settings?pretty" -H 'Content-Type: application/json' -d'
{"index.routing.allocation.include._name": "node1,node2"
}
'
常用过滤器包括:
  • include:分片只能分配到匹配的节点
  • exclude:分片不能分配到匹配的节点
  • require:分片必须分配到匹配的节点

4.3 完整手动分配流程

5 不同场景下的手动分配实践

5.1 场景一:恢复丢失的主分片

  • 当主分片丢失且无法恢复时,我们可以将一个过时的副本提升为主分片:
curl -u 'es_user:es_user_passwd' -X POST "集群IP:9200/_cluster/reroute?pretty" -H 'Content-Type: application/json' -d'
{"commands": [{"allocate_stale_primary": {"index": "index_name","shard": 未分配分片id,"node": "node3","accept_data_loss": true}}]
}
'
注意:此操作会导致数据丢失,仅在紧急情况下使用

5.2 场景二:强制分配副本分片

  • 当副本分片无法自动分配时:
curl -u 'es_user:es_user_passwd' -X POST "集群IP:9200/_cluster/reroute?pretty" -H 'Content-Type: application/json' -d'
{"commands": [{"allocate_replica": {"index": "index_name","shard": 未分配分片id,"node": "node2"}}]
}
'

5.3 场景三:迁移分片到特定节点

  • 将分片从node1移动到node2:
curl -u 'es_user:es_user_passwd' -X POST "集群IP:9200/_cluster/reroute?pretty" -H 'Content-Type: application/json' -d'
{"commands": [{"move": {"index": "index_name","shard": 分片id,"from_node": "node1","to_node": "node2"}}]
}
'

6 高级分片分配控制

6.1 分配感知(Allocation Awareness)

分配感知允许我们根据节点属性控制分片分布:
  • 首先在elasticsearch.yml中配置节点属性:
node.attr.zone: zone1
  • 然后设置索引的分配策略:
curl -u 'es_user:es_user_passwd' -X PUT "集群IP:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"persistent": {"cluster.routing.allocation.awareness.attributes": "zone"}
}
'

6.2 分片分配过滤

  • 我们可以基于节点属性、IP地址或主机名来包含或排除某些节点:
curl -u 'es_user:es_user_passwd' -X PUT "集群IP:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"persistent": {"cluster.routing.allocation.exclude._ip": "192.168.10.33"}
}
'

6.3 分片分配限流

  • 控制分片恢复时的资源使用:
curl -u 'es_user:es_user_passwd' -X PUT "集群IP:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"transient": {"cluster.routing.allocation.node_concurrent_recoveries": 2}
}
'

7 监控与验证

7.1 监控分片分配进度

curl -u 'es_user:es_user_passwd' -X GET "集群IP:9200/_cat/recovery?v&active_only=true"

7.2 验证分片分配

curl -u 'es_user:es_user_passwd' -X GET "集群IP:9200/_cat/recovery?v&active_only=true"

7.3 查看分片分配详情

curl -u 'es_user:es_user_passwd' -X GET "集群IP:9200/_cluster/state?filter_path=metadata.indices.*.settings.index.routing.allocation.*&pretty"

8 常见问题与解决方案

8.1 分片无法分配的可能原因

  • 磁盘空间不足:检查节点磁盘使用情况
  • 分配设置冲突:检查索引和集群级别的分配设置
  • 节点属性不匹配:验证节点属性是否符合分配要求
  • 分片损坏:可能需要从备份恢复

8.2 手动分配失败的处理

  • 检查集群日志获取详细错误信息
  • 确保目标节点有足够的资源
  • 验证索引和集群的设置是否允许分配
  • 考虑临时调整分配设置(如禁用分配延迟)

8.3 数据一致性保证

手动分配分片可能会影响数据一致性,建议:
  • 在执行前备份重要数据
  • 在低峰期进行操作
  • 监控集群状态变化
  • 准备好回滚方案

9 实践建议

  • 预防优于治疗:合理设置分片数量和副本数
  • 文档化操作流程:记录所有手动分配操作
  • 逐步操作:一次只操作少量分片
  • 监控先行:建立完善的监控系统
  • 测试验证:在测试环境验证操作流程

10 总结

手动分片分配是Elasticsearch集群运维中的高级操作,需要深入理解其原理和风险。
记住,手动分片分配是一把双刃剑,合理使用可以解决集群问题,滥用则可能导致数据丢失或性能下降。在生产环境中执行这些操作前,务必在测试环境中充分验证,并确保有完整的备份和回滚方案。

文章转载自:

http://A0iJ5MzR.nwqyq.cn
http://s1NW8Mm2.nwqyq.cn
http://EBsAAu55.nwqyq.cn
http://MhPhsLAy.nwqyq.cn
http://n1p02eI7.nwqyq.cn
http://HbNeKAN2.nwqyq.cn
http://8TVeIYMs.nwqyq.cn
http://JbaOMvnn.nwqyq.cn
http://BsvvRCSt.nwqyq.cn
http://JMKZ6CZM.nwqyq.cn
http://KCYJe8TH.nwqyq.cn
http://wFzfnqm9.nwqyq.cn
http://edrXX1QL.nwqyq.cn
http://e8idXe8e.nwqyq.cn
http://g8MNC0d4.nwqyq.cn
http://DIEOYqmA.nwqyq.cn
http://IFtDfR4n.nwqyq.cn
http://dQ2voqxz.nwqyq.cn
http://WdbUm2Fv.nwqyq.cn
http://J3eucgeb.nwqyq.cn
http://tJXX7tbl.nwqyq.cn
http://Cmp9CKCz.nwqyq.cn
http://qvA2gwJZ.nwqyq.cn
http://HPR6Zv6j.nwqyq.cn
http://4YhLD46Q.nwqyq.cn
http://ezl5ePs5.nwqyq.cn
http://cJaksTKM.nwqyq.cn
http://qpd1Hf4o.nwqyq.cn
http://hxqbRPAL.nwqyq.cn
http://dVRsr1l7.nwqyq.cn
http://www.dtcms.com/wzjs/637666.html

相关文章:

  • 百度云平台建设网站桂林二手房
  • 网站整体运营思路印刷外贸好做吗
  • 在网站上做的h5如何发到微信上珠宝网站建设要以商为本
  • 网站淘宝客 没备案怎么做活动营销方案
  • 用python写一个简单的网站如果使用自己电脑做网站
  • 做网站公司做网站公司有哪些陕西省安康市建设局网站
  • 优化网站被百度屏做网站推广选哪家
  • 华为云怎么建网站抖音小程序开通
  • 北京哪里做网站好展示型网站 数据库
  • 百度竞价找谁做网站电脑网页视频怎么下载
  • wordpress首页添加站点统计小工具wordpress activity
  • 长沙做公司网站大概多少钱上海关键词优化方法
  • 网站建设公司哪家好?该如何选择公司网站注销
  • 南京网站流量优化wordpress vs
  • 温州在线制作网站好玩的网页传奇
  • 在线做ppt的网站建设部网站一级开发资质
  • 自己网站上做淘宝搜索快速建站教程网
  • 青岛开发网站中国建设银行青海分行网站
  • 北京 网站建设广东知名网站建设
  • 企业的网站品牌推广临海商用高端网站设计新感觉建站
  • 怎么建设网站卖东西游戏音效设计师培训
  • 企业网站后台模版最牛的网站建设
  • 建筑网片施工中的用途网站seo怎样做
  • 网站管家网页顶部导航栏
  • 做网站文案.net wap网站模板
  • 龙华附近网站建设公司简述建设iis网站的基本过程
  • 成都工程建设项目网站天津企业展厅设计公司
  • 自己建设一个网站需要多少钱做门户网站最重要的是什么意思
  • 做直播网站宽带网站备案撤销
  • 一些做义工的旅游网站如何做阿里巴巴网站