Я запускаю кластер solrcloud в AWS.Иногда мне нужно больше экземпляров в периоды, когда происходит много поисков.
Поэтому я пытаюсь найти способ автоматического масштабирования кластера Solr.
Моя процедура добавления большего количества узлов заключается в увеличении желаемого количествав группе автоматического масштабирования.Через несколько минут у меня появились новые узлы.Затем я запускаю этот сценарий, чтобы добавить больше реплик.
#!/usr/bin/env bash
set -euo pipefail
REPLICAS=2
res=$(curl -s localhost:8983/api/cluster/configs?omitHeader=true | jq '.configSets')
for config in $(echo ${res} | jq -r '.[]' | grep -iE "lemma|entry"); do
wget "localhost:8983/solr/admin/collections?action=ADDREPLICA&collection=${config}&shard=shard1&nrtReplicas=${REPLICAS}&type=nrt" -O /dev/null
done
Скрипты добавляют реплики для всех сегментов в новых узлах.
Проблемы возникают, когда я хочу уменьшить масштаб.Я хочу удалить X узлов.Единственный способ, который я нашел, состоял в том, чтобы идентифицировать имена узлов и затем запустить скрипт, подобный этому:
NODE=core_nodeXX
res=$(curl -s localhost:8983/api/cluster/configs?omitHeader=true | jq '.configSets')
for config in $(echo ${res} | jq -r '.[]' | grep -iE "lemma|entry"); do
wget "localhost:8983/solr/admin/collections?action=DELETEREPLICA&collection=${config}&shard=shard1&replica=${NODE}" -O /dev/null
done
Я пытаюсь найти лучший способ, чтобы я мог автоматически масштабировать кластер Solr с помощью лямбда-функции.Увеличивать легко, уменьшать - вот в чем вопрос!