Elasticsearch 路由分配感知和分片分配
Posted
技术标签:
【中文标题】Elasticsearch 路由分配感知和分片分配【英文标题】:Elasticsearch Routing allocation awarness and shard allocation 【发布时间】:2014-08-27 15:13:46 【问题描述】:我有一个包含 10 个节点的弹性搜索集群,分布在 3 个区域(A
、B
、C
)。
ES配置文件包含:
cluster.routing.allocation.awareness.force.zone.values = "A,B,C";
我有一个索引 (index1
),其中包含大小为 =~ 231MB
的 =~ 283674
文档。
该索引的设置包含:
"number_of_replicas" : "2", "number_of_shards" : "5",
分片似乎在区域中正确分布,但在单个区域内它们分布不均(见下表,例如 Zone C | S = shard,(P = Primary | S = Secondary)
我可以做些什么来正确分配我的分片?
++------+----------------------------------------------------+
||Zone A-----------------------------------------------------|
|| | ||
|| Node 1| S1 (P) ||
|| +-----------------------------------------------------+ ||
|| | ||
|| | S2 (S) S4 (S) ||
|| | ||
|| Node 2| ||
|| +-----------------------------------------------------+ ||
|| | ||
|| | ||
|| | S0 (S) S3 (S) ||
|| | ||
|| Node 3| ||
|-------+----------------------------------------------------|
||Zone B-----------------------------------------------------|
|| | ||
|| | S0 (P) ||
|| Node 4| ||
|| +-----------------------------------------------------+ ||
|| | ||
|| | ||
|| | S3 (P) S4 (P) ||
|| Node 5| ||
|| +-----------------------------------------------------+ ||
|| | ||
|| | ||
|| | S1 (S) S2 (S) ||
|| Node 6| ||
|-------+----------------------------------------------------|
||Zone C-----------------------------------------------------|
|| | ||
|| | S0 (S) S1 (S) S2 (P) S3 (S) S4 (S) ||
|| Node 7| ||
|| +------------------------------------------------------+ ||
|| | ||
|| | ||
|| | ||
|| Node 8| ||
|| +------------------------------------------------------+ ||
|| | ||
|| | ||
|| | ||
|| Node 9| ||
|| +------------------------------------------------------+ ||
|| | ||
|| | ||
|| - ||
|| Node 10 ||
|------------------------------------------------------------|
+------------------------------------------------------------+
【问题讨论】:
您是否使用任何类型的 ui 来进行 elasticsearch 集群管理? (如弹性搜索头) 【参考方案1】:我通过强制每个主机的分片数量和更改每个索引的主/辅助数量来解决此问题:
index.number_of_shards = "5";
index.number_of_replicas = "3";
index.routing.allocation.total_shards_per_node = "2";
这导致每个节点有 2 个分片均匀分布在区域中。
【讨论】:
以上是关于Elasticsearch 路由分配感知和分片分配的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch揭秘 Elasticsearch 分片分配