Мне любопытно, действительно ли кто-то запускает PostgreSQL в производственном контейнере в какой-либо форме распределенной файловой системы - предпочтительно GlusterFS или что-то в этом роде.
В настоящее время я использую Mesos / Marathon. В случае сбоя узла PostgreSQL Marathon просто запускает другой экземпляр PostgreSQL на других узлах, и если все будет сделано правильно (обнаружение служб и восстановление приложений после потери соединения с базой данных), будет достигнута максимальная отказоустойчивость.
Я знаю, что PostgreSQL имеет свой собственный Решения высокой доступности, такие как доставка журналов и резервное копирование в горячем режиме, но тогда все еще нужно решить проблему, когда переключаться с главного на подчиненное, как это делать правильно и т. Д.
Итак, как запустить PostgreSQL в продакшене на GlusterFS или подобном? Если так, это стабильно? Как насчет производительности?
, но тогда все еще нужно решить проблему, когда переключаться с ведущего на ведомое, как это делать правильно и т. Д.
Каждый кластер обычно имеет понятие кворума: наблюдатели (мониторы, что угодно) должны решить, какой узел является главным. Затем вы можете использовать их информацию для правильной маршрутизации запросов. Довольно типично запускать haproxy не только с базовыми проверками работоспособности TCP / IP , но и с некоторой логикой высокого уровня, реализованной с помощью запросов конкретных служб.
Посмотрите peacemaker , например, e. г ..
Вам нужно запустить postgresql в режиме обслуживания с отслеживанием состояния. Масштабирование выполняется mesos, но репликация данных выполняется самим postgresql. Взгляните на этот сайт служба с отслеживанием состояния и постоянные тома .