如何在具有不同碎片数量的索引的ElasticSearch上实现负载的均匀分布



我们正在研究解决ES集群的一些性能问题。我们正在研究数据节点上的碎片分布。我知道有一个建议是让碎片在节点之间均匀分布——这是我的问题:

对于具有8个数据节点的集群,我们有一些索引,其中有2个主碎片和3个副本(因此总共有8个碎片(。我们还有一些索引,它们有1个主碎片和3个副本(总共4个(。

我的问题是,设置是否可以考虑";均匀分布";?我们当时认为不是这样,我们也在考虑用1个主碎片-7个副本建立索引(所以每个索引都将托管在8个节点上(-但我们不知道这样的设置是否有意义?如果不是,你会建议什么来更均匀地分配碎片?

以下是shard-cat查询的结果:

id1     0 p STARTED  2138  16.1mb x.x.x.x node1
id1     0 r STARTED  2138  16.1mb x.x.x.x node2
id1     0 r STARTED  2138  16.1mb x.x.x.x node3
id1     0 r STARTED  2138  16.1mb x.x.x.x node4
id2     0 r STARTED  3379  26.8mb x.x.x.x node5
id2     0 r STARTED  3379  26.8mb x.x.x.x node3
id2     0 r STARTED  3379  26.8mb x.x.x.x node4
id2     0 p STARTED  3379  26.8mb x.x.x.x node6
id3     0 r STARTED 20086  76.1mb x.x.x.x node1
id3     0 r STARTED 20086  76.1mb x.x.x.x node5
id3     0 p STARTED 20086  76.1mb x.x.x.x node6
id3     0 r STARTED 20086  76.1mb x.x.x.x node7
id4     0 r STARTED  2754   7.3mb x.x.x.x node2
id4     0 r STARTED  2754   7.3mb x.x.x.x node3
id4     0 r STARTED  2754   7.3mb x.x.x.x node8
id4     0 p STARTED  2754   7.3mb x.x.x.x node7
id5     0 r STARTED 10239  42.3mb x.x.x.x node1
id5     0 p STARTED 10239  42.3mb x.x.x.x node4
id5     0 r STARTED 10239  42.3mb x.x.x.x node6
id5     0 r STARTED 10239  42.3mb x.x.x.x node8
id6     0 r STARTED 13388  42.4mb x.x.x.x node1
id6     0 p STARTED 13388  42.4mb x.x.x.x node5
id6     0 r STARTED 13388  42.4mb x.x.x.x node3
id6     0 r STARTED 13388  42.4mb x.x.x.x node8
id7     1 r STARTED 27483 136.2mb x.x.x.x node2
id7     1 r STARTED 27483 136.2mb x.x.x.x node3
id7     1 r STARTED 27483 136.3mb x.x.x.x node8
id7     1 p STARTED 27483 136.2mb x.x.x.x node7
id7     0 r STARTED 27189 146.5mb x.x.x.x node1
id7     0 p STARTED 27189 146.6mb x.x.x.x node5
id7     0 r STARTED 27189 146.6mb x.x.x.x node4
id7     0 r STARTED 27189 146.7mb x.x.x.x node6
.kibana 0 r STARTED    13 106.8kb x.x.x.x node2
.kibana 0 p STARTED    13 106.8kb x.x.x.x node3
id8     1 r STARTED 13555  80.8mb x.x.x.x node2
id8     1 r STARTED 13555  80.8mb x.x.x.x node4
id8     1 r STARTED 13555  80.8mb x.x.x.x node8
id8     1 p STARTED 13555  80.8mb x.x.x.x node7
id8     0 r STARTED 13390    63mb x.x.x.x node1
id8     0 p STARTED 13390  62.7mb x.x.x.x node5
id8     0 r STARTED 13390  62.7mb x.x.x.x node6
id8     0 r STARTED 13390  62.8mb x.x.x.x node7

由于各种原因,在每个索引的所有ES数据节点上分配所有碎片是没有意义的。

  1. 应该根据主碎片的大小选择主碎片的数量,这有助于水平缩放索引
  2. 副本碎片的数量可以帮助您获得高可用性并提高搜索性能

在ES集群中实现完美的碎片平衡真的很困难(基于碎片数量、大小和流量(,尽管基于你的碎片大小(小于100MB(,你可以为所有索引使用1个碎片和7个副本,话虽如此,您需要根据集群设置和用例来进行基准测试并选择正确数量的碎片和副本

最新更新