Развертывание кластера IVA Mail с PostgreSQL и NFS
Назначение
Данный сценарий описывает развертывание отказоустойчивого кластера IVA Mail с использованием:
-
общей базы данных PostgreSQL;
-
общего файлового хранилища (NFS);
-
разделения ролей серверов на backend и frontend.
Кластер обеспечивает высокую доступность почтовой службы и централизованное хранение данных.
| В данном сценарии рассматривается развертывание кластера IVA Mail в среде Astra Linux. Команды и конфигурация могут отличаться для других дистрибутивов Linux. |
| Все действия выполняются от имени пользователя root, если не указано иное. |
Архитектура
В рассматриваемом сценарии используется следующая типовая схема:
| Роль | IP-адрес | Примечание |
|---|---|---|
Backend 1 |
10.3.6.126 |
Первый узел кластера, на него устанавливается лицензия |
Backend 2 |
10.3.6.127 |
|
Frontend 1 |
10.3.6.133 |
|
Frontend 2 |
10.3.6.134 |
|
PostgreSQL + NFS |
10.3.6.128 |
Общий ресурс для почтовых бэкенд-серверов |
Настройка сервера базы данных и NFS (10.3.6.128)
Установка PostgreSQL
-
Установите PostgreSQL:
apt install postgresql -y -
Задайте пароль для пользователя postgres и убедитесь, что он обладает правами суперпользователя:
sudo -u postgres psqlВ интерактивной оболочке выполните:
ALTER USER postgres WITH PASSWORD 'postgres'; ALTER ROLE postgres SUPERUSER; \q -
Отредактируйте файл
/etc/postgresql/15/main/pg_hba.conf(версия может отличаться, уточните актуальную) для разрешения подключений с почтовых серверов:nano /etc/postgresql/15/main/pg_hba.confДобавьте в конце файла строки с IP-адресами бэкенд-серверов:
host all all 10.3.6.126/32 md5 host all all 10.3.6.127/32 md5Эти строки разрешают подключения к любой базе данных с IP-адресов почтовых серверов с аутентификацией по паролю (MD5). -
Отредактируйте файл
/etc/postgresql/15/main/postgresql.conf, чтобы PostgreSQL слушал все интерфейсы:nano /etc/postgresql/15/main/postgresql.confНайдите строку
#listen_addresses = 'localhost', раскомментируйте ее и замените на:listen_addresses = '*'Это позволит принимать соединения с любых сетевых интерфейсов, включая адреса почтовых серверов. -
Перезапустите PostgreSQL для применения изменений:
systemctl restart postgresql
Установка и настройка NFS-сервера
| Для совместимости с IVA Mail требуется использовать хранилище не выше NFS версии 3 (v3). Убедитесь, что в конфигурации не используется NFSv4. |
-
Установите пакет NFS-сервера:
apt update && apt install nfs-kernel-server -y -
Создайте каталог, который будет общим для почтовых бэкенд-серверов, и установите права доступа 777 (полный доступ для всех).
mkdir -p /srv/nfs/nfsshared chmod 777 /srv/nfs/nfssharedКаталог будет содержать общие файлы кластера, такие как настройки, лицензии и т.д. Права 777 нужны для того, чтобы почтовый процесс (пользователь ivamail) мог записывать данные. -
Отредактируйте файл экспортов NFS
/etc/exports:nano /etc/exportsДобавьте следующие строки:
/srv/nfs/nfsshared 10.3.6.126(rw,sync,no_subtree_check,no_root_squash) /srv/nfs/nfsshared 10.3.6.127(rw,sync,no_subtree_check,no_root_squash)Параметры:
-
rw— чтение и запись; -
sync— синхронный режим записи (данные записываются на диск немедленно); -
no_subtree_check— отключает проверку поддеревьев, повышает производительность; -
no_root_squash— позволяет пользователюrootна клиенте иметь праваrootна сервере (необходимо для корректной работы некоторых операций).
-
-
Примените настройки экспорта:
exportfs -ra -
Перезапустите NFS-сервер:
systemctl restart nfs-kernel-server
Настройка почтовых серверов
Все почтовые бэкенд-сервера настраиваются одинаково, за исключением этапа установки лицензии. Лицензия устанавливается только на первый запускаемый узел.
Для фронтенд-серверов пропускаются шаги настройки PostgreSQL и NFS. Так же они имеют другой параметр запуска в файле parameters.conf.
Установка IVA Mail и подготовка окружения
-
Установите почтовый сервер из пакета
ivamail.deb(файл должен быть предварительно скопирован на сервер):
apt-get install ./ivamail.deb -y
-
Установите пакет dialog (необходим для запуска скрипта настройки подключения к базе данных):
apt install dialog -y -
На бэкенд-серверах установите дополнительные пакеты для PostgreSQL (клиентские утилиты):
apt install postgresql-contrib -y
Проверка подключения к базе данных
Перед выполнением скрипта настройки убедитесь, что с почтового бэкенд-сервера можно подключиться к PostgreSQL:
psql -h 10.3.6.128 -U postgres
Если подключение успешно, вы попадаете в psql. Выйдите командой \q.
| При необходимости введите пароль postgres, заданный на сервере базы данных. |
Настройка подключения IVA Mail к базе данных
На бэкенд-серверах выполните скрипт, который с помощью диалогового интерфейса настроит параметры подключения:
/opt/ivamail/ivamail-db-setup.sh
Следуйте подсказкам, укажите:
-
Хост базы данных: 10.3.6.128;
-
Порт: 5432 (по умолчанию);
-
Имя базы данных: postgres (обычно);
-
Пользователь базы данных: postgres/ivamail;
-
Пароль: postgres/ivamail;
-
Volume Base DN: DN создаваемого тома (остаётся пустым для корневого тома).
Подробнее про скрипт установки см. пункт "Инициализация базы данных" в руководстве по установке.
Настройка NFS-клиента на почтовых серверах
Оба почтовых бэкенд-сервера должны монтировать общий каталог NFS для хранения кластерных данных.
-
Установите пакет NFS-клиента (обычно он уже установлен по умолчанию):
apt update && apt install nfs-kernel-server -yПакет nfs-kernel-server включает в себя и клиентскую часть. -
Создайте точку монтирования вручную:
mkdir -p /mnt/mailshare -
Проверьте, что экспортированный ресурс доступен:
showmount -e 10.3.6.128Вы должны увидеть
/srv/nfs/nfsshared. -
Выполните монтирование вручную:
mount -t nfs 10.3.6.128:/srv/nfs/nfsshared /mnt/mailshare -
Убедитесь, что монтирование прошло успешно:
df -h | grep mailshareСтрока должна отобразить смонтированный том.
Создание символьной ссылки в каталоге IVA Mail
IVA Mail ожидает, что общая кластерная директория будет доступна по пути /var/ivamail/Cluster. На бэкенд-серверах создайте символьную ссылку на смонтированный общий каталог NFS:
cd /var/ivamail
ln -s /mnt/mailshare Cluster
Затем установите правильные права владельца для всех файлов в /var/ivamail:
chown -R ivamail:ivamail *
Почтовый процесс работает от имени аккаунта ivamail, поэтому он должен иметь доступ к этим файлам.
|
Настройка кластера IVA Mail
Кластерная конфигурация включает установку лицензии, настройку параметров кластера в веб-интерфейсе и запуск узлов в специальном режиме.
Установка лицензии
Лицензия устанавливается только на первый запускаемый бэкенд-сервер кластера (в данном случае это 10.3.6.126). Установка производится через веб-интерфейс панели администратора (в данном случае по адресу http://10.3.6.126/Admin). После установки лицензии на первом узле, остальные узлы автоматически получат ее при подключении к кластеру.
Подробнее в разделе Лицензирование.
Настройка параметров кластера в административной панели
-
На каждом почтовом сервере откройте веб-интерфейс панели администратора и перейдите в раздел Модули → Кластер.
-
Заполните поля настроек кластера см. раздел Настройка кластера.
-
После сохранения настроек на каждом узле кластера остановите сервис IVA Mail:
systemctl stop ivamail
Создание файла параметров запуска в кластерном режиме
На каждом почтовом сервере создайте файл /var/ivamail/parameters.conf со следующим содержимым:
-
На бэкенд-серверах:
ARGS="--backend" -
На фронтенд-серверах:
ARGS="--frontend"
| Данный параметр заставляет IVA Mail запускаться в кластерном режиме (backend/frontend). Без него сервер будет работать как изолированный. |
Последовательный запуск узлов кластера
Запускайте узлы кластера последовательно: сначала бэкенд-серверы, начиная с того, на котором была установлена лицензия (в данном случае 10.3.6.126):
systemctl start ivamail
Дождитесь полного запуска. Получение роли в модуле Мониторинг → Кластер → Статистика будет означать, что сервер полностью запущен. После этого выполните команду запуска на следующем узле.
После запуска всех узлов, они должны объединиться в кластер. Проверить состояние можно в веб-интерфейсе панели администратора в разделе Мониторинг → Кластер.
Настройка автоматического монтирования NFS
Чтобы общий каталог NFS автоматически монтировался при перезагрузке почтовых серверов, добавьте запись в /etc/fstab.
На каждом почтовом бэкенд-сервере (в данном случае 10.3.6.126 и 10.3.6.127):
-
Откройте файл
/etc/fstab:nano /etc/fstab -
Добавьте строку:
10.3.6.128:/srv/nfs/nfsshared /mnt/mailshare nfs defaults 0 0 -
Примените изменения и проверьте, что монтирование проходит без ошибок:
mount -a df -h | grep mailshare
Настройка балансировщика нагрузки HAProxy (опционально)
Назначение
Для распределения трафика между двумя почтовыми фронтенд-серверами можно использовать HAProxy.
Данный пример конфигурации обеспечивает балансировку по протоколам HTTP (80), HTTPS (443), IMAP (143) и SMTP (25).
| HAProxy устанавливается на отдельном сервере (или на одном из имеющихся) и выступает в роли балансировщика для всех клиентских подключений. |
Пример конфигурации HAProxy
Файл /etc/haproxy/haproxy.cfg содержит:
global
log /dev/log local0
maxconn 10000
user haproxy
group haproxy
defaults
log global
mode tcp
timeout connect 5s
timeout client 1m
timeout server 1m
#################################
# HTTP (порт 80)
#################################
frontend fe_http
bind *:80
mode http
default_backend be_http
backend be_http
mode http
balance source
option forwardfor header X-Real-IP
server frontend1 10.3.6.133:80 check
server frontend2 10.3.6.134:80 check
#################################
# HTTPS (порт 443) - SSL pass-through
#################################
frontend fe_https
bind *:443
mode tcp
default_backend be_https
backend be_https
mode tcp
balance source
server frontend1 10.3.6.133:443 check
server frontend2 10.3.6.134:443 check
#################################
# IMAP (порт 143)
#################################
frontend fe_imap
bind *:143
mode http
default_backend be_imap
backend be_imap
mode http
balance source
option forwardfor header X-Real-IP
server frontend1 10.3.6.133:143 check
server frontend2 10.3.6.134:143 check
#################################
# IMAPS (порт 993)
#################################
frontend fe_imaps
bind *:993
mode tcp
default_backend be_imaps
backend be_imaps
mode tcp
balance source
server frontend1 10.3.6.133:993 check
server frontend2 10.3.6.134:993 check
Пояснения:
-
Режим balance source обеспечивает привязку клиента к одному и тому же фронтенду на основе IP-адреса. Это полезно для сохранения сессий.
-
Порты совпадают со стандартными портами почтовых служб.
Полезные команды для отладки
В процессе настройки и эксплуатации кластера могут пригодиться следующие команды:
-
Проверка процессов IVA Mail
ps aux | grep ivamail -
Принудительное завершение всех процессов IVA Mail (если необходимо)
sudo pkill -f ivamail -
Проверка статуса NFS-монтирования
mount | grep nfs -
Проверка доступности NFS-ресурса
showmount -e 10.3.6.128 -
Проверка подключения к PostgreSQL с удалённого сервера
psql -h 10.3.6.128 -U postgres -c "SELECT 1"
Заключение
После выполнения всех шагов вы получите работоспособный 2х2 кластер IVA Mail, использующий общую базу данных PostgreSQL и общее файловое хранилище NFS. Такой кластер обеспечивает отказоустойчивость: при выходе из строя одного из узлов, второй продолжает обслуживать пользователей. Дополнительно установленный HAProxy позволяет равномерно распределять нагрузку между узлами.
Ключевые моменты:
-
На каждом бэкенд-сервере создана символьная ссылка /var/ivamail/Cluster → /mnt/mailshare с правами ivamail:ivamail.
-
Лицензия установлена только на один первый узел.
-
Настроены параметры кластера в веб-интерфейса панели администратора.
-
Серверы остановлены, затем запущены последовательно с параметром --backend/--frontend.
-
Настроено автоматическое монтирование NFS через /etc/fstab.
При возникновении проблем сверьтесь с разделом Полезные команды для отладки и проверьте логи соответствующих служб.