代码之家  ›  专栏  ›  技术社区  ›  Martin Andersen

solr autoscaling-在新节点上添加副本

  •  4
  • Martin Andersen  · 技术社区  · 6 年前

    使用Solr 7.3.1版
    从3个节点开始:

    我创建了这样一个集合:

    wget“localhost:8983/solr/admin/collections?action=create&autoaddreplicas=true&collection.config name=my_col_config&maxshardspernode=1&name=my_col&numshards=1&replicationFactor=3&router.name=compositeid&wt=json“-o/dev/null
    

    这样,我在每个节点上都有一个副本。

    目标:

    这样,我在每个节点上都有一个副本。

    目标:

    • 每个碎片应该向加入集群的新节点添加一个副本。
    • 当一个节点被击落时。它应该就这样消失了。
    • 每个节点上的每个碎片只有一个副本。

    我知道新的AutoScalling API但是我很难找到正确的语法。API是非常新的,我能找到的只是文档。不错,但我遗漏了更多的例子。

    这就是今天的样子。有许多小碎片,每个碎片都有一个与节点数量匹配的复制因子。现在有3个节点。 enter image description here

    This video昨天(2018-06-13)和30分钟左右上传到视频中,有一个solr.httpTriggerListener的例子,可以用来调用任何类型的服务,例如一个用于添加新节点的aws lamda。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Shalin Shekhar Mangar    6 年前

    简单的答案是,你的目标在今天是不可能实现的(直到7.4节)。

    nodeadTrigger仅将副本从其他节点移动到新节点,以尝试平衡集群。它不支持添加新副本。我已经开门了 SOLR-12715 添加此功能。

    同样,nodelosttrigger会在其他节点上添加新的副本,以替换丢失节点上的副本。它也不支持仅从集群状态删除副本。我已经开门了 SOLR-12716 解决这个问题。我希望在solr 7.5中发布这两个增强。

    至于第三个目标:

    每个节点上的每个碎片只有一个副本。

    为了实现这一点,在 Limit Replica Placement “例子就足够了。然而,看看你发布的屏幕截图,你实际上是指一对(收集,碎片)的,这在今天是不受支持的。您需要如下策略规则(以下规则不起作用,因为不支持集合:每个规则都受支持):

    {"replica": "<2", "collection": "#EACH", "shard": "#EACH", "node": "#ANY"}
    

    我已经开门了 SOLR-12717 添加此功能。

    感谢您提供这些优秀的用例。我建议您在 solr-user mailing list 因为没有很多Solr开发人员经常出现stackoverflow。我只能找到这个问题,因为它张贴在 docker-solr 项目。