К нам в EFSOL обратился клиент с проблемой разваливающегося продакшн-кластера PostgreSQL, который также находился под постоянно высокой нагрузкой (предельной для используемых ресурсов). Проблема стала системной и повторялась периодически. Развал кластера решался реинитом отвалившейся ноды, но это было только временное решение до следующего сбоя. DevOps-специалисты EFSOL произвели разбор и установили следующее:
В момент прерывания работы в сетевой подсистеме ВМ (привет, Hetzner), происходило переключение PostgreSQL с мастера на реплику, а Patroni не мог самостоятельно восстановить целостность кластера, ссылаясь на неполный файл транзакций. Таким образом, мастер "отваливался". Происходило это вследствие недостаточного количества WAL-файлов — реплика не успевала получить необходимые разностные транзакции. Решение проблемы разваливающегося кластера PosgtreSQL
Требовалось внести изменения в конфигурационный файл postgresql.conf, используемый Patroni, кратно увеличив параметр wal_keep_siz