Я пытаюсь создать базовое решение высокой доступности с HAproxy и mysql. В настоящее время это выглядит так
В случае host1
в случае неудачи host2
должен получать его IP и трафик (используя функцию моего VPS-провайдера, называемую отказоустойчивым IP. Я не думаю, что возможно заставить там работать CARP).
Я хочу запустить программу мониторинга на узлах. Это может сработать? Я боюсь, что в случае проблемы со связью между узлами (ситуация с разделенным мозгом) каждый экземпляр программного обеспечения для мониторинга будет считать, что другой узел мертв, и попытается захватить плавающий IP-адрес для себя.
Это не страшно, но, похоже, становится еще хуже. При отсутствии связи между серверами и обоими хостами, считающими, что они единственные живые, база данных быстро станет несовместимой.
Есть ли выход из этой ситуации без использования третьего сервера? Должен ли я действительно беспокоиться о ситуации с расщепленным мозгом, если:
host1
и host2
те же, что используются для маршрутизации трафика из Интернета. Так, может быть, ситуация с раздвоенным мозгом с фактическими записями (поскольку Интернет - единственный источник записи) невозможна?Это разумный сценарий, и STONITH (Shoot The Other Node In The Head) разработан специально для этого.
Если вы собираетесь это сделать и хотите быть абсолютно уверены, что разделение мозга никогда не возникнет, вам нужно использовать какое-то внеполосное управление, обычно дистанционно управляемую панель питания, чтобы дать каждому узлу мощность. чтобы убедиться, что другой узел действительно не работает (отключив его), прежде чем приступить к обслуживанию.