跨节点正确分布副本使用

Correctly distribute replicas across nodes using

使用 Solr v5.5

我们正在尝试使用此来平衡我们的分片副本放置: https://cwiki.apache.org/confluence/display/solr/Rule-based+Replica+Placement

我们定义了一个规则'replica:<5,node:*'

我们的设置: 10 个 Solr 实例 20个碎片 2 复制因子

所以我们想要的是每个实例托管 4 个不同的分片,其中 2 个作为主分片,另外 2 个作为副本。根据我们的规则,这几乎是可行的,尽管总是有几个实例最终托管 1 个或 2 个分片的两个副本。例如

instance0: shard1-replica1
           shard1-replica2
           shard2-replica1
           shard2-replica2
instance1: shard3-replica1
           shard3-replica2
           shard4-replica1
           shard5-replica2                  

有什么想法可以改进规则以防止此类碰撞吗?

所以在用不同的规则做了一些测试之后,我们发现规则

shard:*,replica:4,node:*

大部分问题已解决。这似乎考虑了集群中的每个分片,跨多个集合。我们有两个集合,因此虽然规则强制每个节点有 4 个不同的分片,但它并没有像以前那样强制每个节点有 2 个前导 + 2 个跟随。

冗余比每个节点leaders/follows的平衡更重要,而且性能似乎是一致的,所以这个解决方案已经足够好了。