
К нам обратился клиент с сервером на openSUSE, который годами выполнял сразу две роли: на нём работала учётная система на Odoo 8 вместе с телефонией (приём и учёт звонков), и одновременно этот же сервер служил сетевым шлюзом — через него шёл весь трафик офиса наружу.
Совмещение ролей — практично, но рискованно
Держать учётную систему и сетевой шлюз на одной машине — обычная практика для небольшой инфраструктуры: меньше железа, меньше администрирования. Но у такого решения есть обратная сторона — любая проблема с сервером задевает сразу обе функции. Именно это и произошло: после сбоя выяснилось, что часть данных Odoo — база PostgreSQL и файлстор (папка с вложениями и документами, прикреплёнными к записям) — оказались в нерабочем состоянии.
С чего начали
Первым делом восстановили сетевой шлюз — без связи с интернетом не работает вообще ничего в офисе, включая саму диагностику остальных проблем на сервере. Дальше разбирались с Odoo: база данных PostgreSQL и файлстор — это две физически разные части хранения (одна в СУБД, другая — обычные файлы на диске), и повреждены они могут быть независимо друг от друга, поэтому проверять пришлось по отдельности каждую.
Итог
Сервис подняли заново: Odoo снова работает вместе с телефонией, обе роли сервера — учётная система и сетевой шлюз — снова выполняются на одной машине без потери данных.
Урок из этого случая простой и универсальный: если сервер совмещает несколько критичных для бизнеса ролей, то, насколько быстро можно восстановиться после сбоя, определяется не мощностью железа, а тем, есть ли отдельное резервное копирование под каждую из этих ролей.