#consul #quorum
#консул #quorum
Вопрос:
У меня есть кластер consul, в котором обычно должно быть 5 серверов и куча клиентов. Наш скрипт для запуска серверов изначально настроен следующим образом
consul agent -server -bootstrap-expect 5 -join <ips of all 5 servers>
Однако нам пришлось перезапустить все серверы и выполнить повторную загрузку — на одном из наших серверов возникли проблемы с оборудованием, и начальная загрузка больше не работает.
Мой вопрос — в ситуации, когда имеется 5 серверов, но для кворума достаточно 3, должен ли параметр -bootstrap-expect быть установлен равным 3?
Документация здесь https://www.consul.io/docs/agent/options.html#_bootstrap_expect похоже, подразумевается, что значение -bootstrap-expect должно быть установлено на общее количество серверов, что означает, что даже сбой одной машины предотвратит загрузку кластера
Для ясности, наши сценарии запуска представляют собой статические файлы, поэтому, когда я говорю, что есть 5 серверов, это означает, что до 5 могут быть запущены с тегом server.
Ответ №1:
В вашем случае, если вам явно не требуется, чтобы все 5 серверов были подключены к Сети во время начальной настройки кластера, вам следует установить -bootstrap-expect
значение 3. Это позволит избежать ситуаций, подобных той, что произошла, т. Е. у вас есть 5 серверов, и вы говорите им, что они должны дождаться, пока все 5 подключатся к сети, для начальной настройки кластера. Как следует из документации:
При предоставлении Consul ожидает, пока не будет доступно указанное количество серверов, а затем загружает кластер. Это позволяет автоматически выбирать первоначального лидера.
С --bootstrap-expect=3
как только 3 из ваших 5 серверов Consul присоединятся к кластеру, начнутся выборы лидера, и в случае, если последние 2 присоединятся намного позже, кластер будет функционировать. И если уж на то пошло, вы можете позже подключить любое количество серверов.