Хмхм, или я не понимаю, как эти вещи решают мою проблему, или я что-то про них не знаю.
Вот в рамках моей задачи разделим узлы кластера, терминологически, на «серверы» (те, которые в сид-листе, и про которые знают все клиенты) и «клиенты» (которых в сид-листе нет, но которые как раз в кластер к сидам и цепляются). Условно говоря, про серверы знают заранее все участники кластера; клиенты цепляются динамически, и про них кластер узнаёт только в момент прицепления.
Бутстрап – это хорошо, конечно. Помогает найти соседей в момент запуска узла. Но в нашем случае все серверы и так прописаны в сид-листы. Все знают, с кем бутстрапиться.
SBR – да, это разбираться, что происходит, когда в кластере вдруг частично пропало коннективити между узлами. Но у нас оно даже не пропало – у нас серверы сами, легально, официально вышли из кластера. Graceful shutdown-ились, а не просто упали. А клиенты – остались.
И теперь у клиентов – свой кластерочек. Живой, они себе в нём живут. И они забыли про то, что когда-то там были сид-узлы. Потому что сид-узлы вышли.
А потом сид-узлы заново поднялись и запустили «свой новый кластер». И у нас стало два кластера. Первый – в котором остались клиенты. Второй – который подняли серверы, когда перезапустились.
Получился класс, в котором школьники затупили в свои телефончики и не заметили, что все учителя вышли из класса. И школьники сидят и продолжают тупить. Вместо того, чтобы начать искать, а где учителя.
И бутстрап тут, по идее, не поможет. Клиенты уже забутстраплены (сид-листами), но не догадываются попытаться переконнективаться к seed-ам. Потому что те вышли. Потому что какая-то общая идея кластера – что узлы заходят в кластер, а не кластер пытается переприсоединиться к узлам.
И SBR тоже. Не было никакого split-brain-а на самом деле, был вполне легальный выход всех серверов из кластера. И была полная апатичность по этому поводу всех клиентов, вместо того чтобы «ааа, хост с ролью seed стал down, дай-ка я буду пытаться к нему присоединиться сам, а не ждать, когда он сам присоединится к кластеру».