为什么ElasticSearch将主分片和副本分片放在同一主机上?

问题描述 投票:0回答:1

这是添加到现有集群的新主机

test
,它触发了重新平衡过程。

两个节点

node-5, node-6
位于新主机中。

对于每个分片,只有一个主分片和一个复制分片。

重新平衡后,主 shard-4 和副本 shard-4 被重新定位到该新主机中。

为什么这两个分片位于同一主机?为什么ES不将其中一个分片分配给不同的主机? 这是不安全的,因为如果该主机出现故障,shard-4 将丢失。

顺便说一下,重新平衡时,进程暂停了, ES 表示应该将

cluster.routing.allocation.same_shard.host
设置为
false
,以允许相同分片的副本分配到同一主机上的不同节点。

elasticsearch
1个回答
0
投票

Elasticsearch 无法知道哪个虚拟服务器安装在哪个物理服务器上。但你可以通过

elasticsearch.yml

在每台服务器上手动一一定义

您可以使用集群级分片分配意识来实现这一点。
示例:假设我们有 4 台虚拟服务器和 2 台物理服务器。这是数据节点的示例

elasticsearch.yml

第1步-更新elasticsearch yml

data-1 - elasticsearch.yml
node.attr.server: node1

data-2 - elasticsearch.yml
node.attr.server: node1

data-3 - elasticsearch.yml
node.attr.server: node2

data-4 - elasticsearch.yml
node.attr.server: node2

第2步-重新启动Elasticsearch

Step3-启用分片分配意识

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.awareness.attributes" : "server"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.