Приветствую.
Имеются две серверные машины, которые держат веб-портал. Поддомены раскиданы по обеим машинам, для снижения общей нагрузки. Отказоустойчивость тихо плачет в сторонке Решил сделать отказоустойчивый кластер на базе этих двух машин.
Текущая архитектура: фронтенд nginx (на обеих серверах), бэкенд php-fpm (на обеих серверах). Машины связаны линком в 1 гигабит, однако обе имеют отдельный внешний канал.
Предполагаемая архитектура: HAProxy (на первой машине) на внешнем интерфейсе и фронтенды (nginx) + бэкенды (php-fpm) на локальных.
Специально хочу уточнить, что идея с RRDNS режется на корню кэширующими серверами провайдеров, отдающих единственный IP. Поэтому принято решение использовать балансировщик нагрузки HAProxy на первую серверную машину (она имеет более широкий канал).
То есть в теории будет так: запрос клиент попадает на балансировщик, который отправляет запрос на одну из нод. В случае отказа второй ноды балансировщик будет использовать только первую ноду, в случае отказа первой ноды (и балансировщика), увы, придется менять A-записи на неймсерверах и поднимать nginx на внешнем интерфейсе.
Однако, плюс этого решения в том, что все поддомены (сайты) будут доступны, а не только часть с работающего сервера (как это сейчас).
Возможно, мое решение не совсем верное и я хотел бы услышать ваши советы по этому поводу, но, как я понимаю, в данном случае отказоустойчивость предполагает наличие распределенной файловой системы, имеющей поддержку двусторонней репликации (так как придется хранить полные копии сайтов на обеих машинах, а также синхронизировать все изменения). Поэтому мне наиболее интересен именно этот момент и я жду ваших советов по выбору такой фс (отмечу, что сайты в большинстве содержат мелкие файлы, сильно крупных нет, максимум в 10-15 мегабайт, а в среднем не превышая мегабайт).
Спасибо за внимание! Жду ваших советов.
p.s. роутера нет в наличии :)