Идея кажется естественной: взять два сервера и сделать отказоустойчивость. На практике ...
Идея кажется естественной: взять два сервера и сделать отказоустойчивость. На практике два узла — самая коварная конфигурация. Проблема называется расщеплением. Если связь между узлами пропала, каждый считает, что второй умер, и берёт роль главного. Оба пишут данные, и после восстановления связи вы получаете два разошедшихся состояния. Иногда это чинится, иногда нет. Как решается. Нечётное число голосов: третий узел, хотя бы маленький, только для кворума. Или внешний арбитр — диск, сервис, устройство. Механизм изоляции: узел, потерявший кворум, должен быть жёстко отключён, вплоть до отключения питания через управляющий интерфейс. Звучит сурово, но именно это защищает данные. И честный вопрос перед постройкой кластера: что именно вы защищаете и от чего. Часто оказывается, что реальную пользу дают простые вещи — резервный канал, копии и понятная процедура ручного переключения за пять минут, а не автоматика, которая сама создаёт аварии. Кластер оправдан там, где простой в минуту стоит дороже сложности. У вас есть кластеры или обходитесь ручным переключением?