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