Краткий ответ: сегодня ваши цели не достижимы (до Solr 7.4).
NodeAddedTrigger перемещает реплики только с других узлов на новый, пытаясь сбалансировать кластер.Он не поддерживает добавление новых реплик.Я открыл SOLR-12715 , чтобы добавить эту функцию.
Точно так же NodeLostTrigger добавляет новые реплики на другие узлы, чтобы заменить те на потерянном узле.Он также не поддерживает просто удаление реплик из состояния кластера.Я открыл SOLR-12716 для решения этой проблемы.Я надеюсь выпустить оба усовершенствования в Solr 7.5.
Что касается третьей цели:
Только одна реплика для каждого шарда на каждом узле.
Для этого должно быть достаточно правила политики, указанного в примере " Limit Replica Placement ".Однако, глядя на скриншот, который вы разместили, вы на самом деле имеете в виду пару (collection, shard), которая сегодня не поддерживается.Вам потребуется правило политики, подобное следующему (следующее не работает, потому что коллекция: #EACH не поддерживается):
{"replica": "<2", "collection": "#EACH", "shard": "#EACH", "node": "#ANY"}
Я открыл SOLR-12717 , чтобы добавить эту функцию.
Спасибо за эти отличные варианты использования.Я рекомендую задавать подобные вопросы в списке рассылки solr-user , потому что не так много разработчиков Solr часто используют Stackoverflow.Я нашел этот вопрос только потому, что он был опубликован в проекте docker-solr .