【问题标题】:Elasticsearch - Adding node without replication?Elasticsearch - 添加节点而不复制?
【发布时间】:2019-09-04 20:20:57
【问题描述】:

我有一个主/数据 Elasticsearch 节点。它现在已达到 90% 的容量,我需要配置额外的空间以继续添加更多数据。

我已经创建了一个具有 700gb 磁盘空间的新服务器,安装了 ES 和 Kibana,现在希望这第二台服务器能够为主节点提供额外空间/与主节点一起工作。

我的问题:

正如ES website 上所说:

当您向集群添加更多节点时,它会自动分配 副本分片。

我的问题是我不希望从主节点复制数据,而是只使用第二台服务器提供额外的空间,然后主节点可以查询。

我的问题:

实现这一目标的最佳方法是什么?在这里添加一个节点是不正确的吗?

【问题讨论】:

  • 主节点不保存任何数据,它唯一的工作是照看集群,但上面没有数据。我猜你的单节点是主/数据节点,对吗?
  • 是的,没错
  • 你有副本分片还是只有主分片?如果是后者,那么您的集群当前必须是黄色的,否则它是绿色的,对吗?
  • 只有主要的 - 它们是黄色的
  • 所以如果你只有主分片并且你的集群是黄色的,这意味着你还有未分配的分片,对吗?

标签: elasticsearch


【解决方案1】:

使用index-level shard allocation filtering,您可以将给定索引(或一组索引)限制在给定节点(或一组节点)上。

只需运行这个:

PUT orders,orders_1,orders_2,orders_3,orders_4,orders_5/_settings
{
  "index.routing.allocation.require._name": "your-first-node-name"
}

请注意,如果您愿意,也可以使用 ._ip._host 代替 ._name

然后您可以添加一个新节点并让它加入集群,并且不会重新平衡,您当前的所有分片都将保留在您当前的节点上。

如果您需要在第二个节点上创建新索引并希望确保它将保留在该节点上,您可以在创建索引时指定相同的设置:

PUT new_orders
{
  "settings": {
      "index.routing.allocation.require._name": "your-second-node-name"
  }
}

名为new_orders 的索引将在第二个节点上创建并保留在那里。

【讨论】:

  • 这看起来很完美,感谢您的帮助。如果我想将新数据添加到新索引中,如何指定它应该分配在新节点上而不是旧的、接近容量的主节点上?
  • 太棒了,很高兴它有帮助!
猜你喜欢
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2016-03-31
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
相关资源
最近更新 更多