Похоже, вы ограничены двумя машинами этого типа, потому что они дорогие. Подумайте о приобретении трех или пяти более дешевых машин для запуска вашего уровня оркестрации.
Чтобы ответить на вопрос протокола, нет, нет возможности запустить двухузловой кластер с отказоустойчивостью в Raft. Чтобы было ясно, вы можете безопасно запустить кластер с двумя узлами и без проблем - он будет доступен и будет работать, как любой другой кластер. Просто когда одна машина выходит из строя, потому что ваша отказоустойчивость равна нулю, вы потеряете доступность и больше не добьетесь прогресса. Но безопасность никогда не ставится под угрозу - ваши данные по-прежнему постоянно хранятся на этих машинах.
Даже за пределами Raft нет возможности запустить двухузловой кластер и гарантировать прогресс в случае единственного сбоя. Это фундаментальный предел. В общем, если вы хотите поддерживать f-отказы (то есть оставаться безопасными и доступными), вам нужно 2f + 1 узлов.
Есть не-Raft способы улучшить ситуацию. Например, Flexible Paxos показывает, что мы можем потребовать оба узла для выбора лидера (как это уже есть в Raft), но только один узел для репликации. Это позволит вашему кластеру продолжить работу в некоторых случаях сбоя, когда Raft остановится. Но худший случай остается прежним: всегда возникают сбои, из-за которых любой двухузловой кластер становится недоступным.
Тем не менее, я все равно не знаю о каких-либо практических реализациях гибкого paxos.
Учитывая затраты даже на попытку взломать решение этой проблемы, лучше всего либо получить больший набор более дешевых машин, либо просто запустить двухузловой кластер и принять недоступность в случае сбоя.
person
GManNickG
schedule
06.11.2017