У меня есть небольшой кластер из 2 серверов Apache/PHP, работающих под управлением HAProxy, подключенных к 2 кластеризованным серверам MySQL. Сайты обслуживаются с обоих серверов Apache, а DNS RR используется для отказоустойчивости и грубой балансировки нагрузки.
Диаграмма:
Apache/PHP -- HAProxy -- MySQL
\/
/\
Apache/PHP -- HAProxy -- MySQL
(извините за отсутствие навыков работы с ASCII-графикой!)
Проблема, с которой я столкнулся, заключается в том, что периодически возникают сбои в работе сети между одним из серверов Apache/PHP/HAProxy и обоими серверами MySQL.
Однако поскольку Apache все еще работает, он начинает выдавать ошибки всякий раз, когда запрос зависит от доступности MySQL (как и следовало ожидать!).
В идеале Apache следует остановить, если MySQL недоступен, и, по возможности, перезапустить автоматически, когда MySQL снова станет доступен.
Это приведет к тому, что клиентские запросы будут обрабатываться другим сервером Apache без какого-либо ручного вмешательства.
Кто-нибудь знает пакет, который можно настроить так, чтобы он делал это «из коробки»?
решение1
Pacemaker — это менеджер ресурсов кластера, который можно настроить для обеспечения ограничений местоположения и порядка для ваших служб. Если какая-либо операция монитора дает сбой, кластер может перезапустить зависимые службы в указанном порядке.
Более подробную информацию о проекте Pacemaker можно найти на сайте ClusterLabs:http://clusterlabs.org/