IVA ДОКУМЕНТАЦИЯ ОБНОВЛЕНИЯ

Развертывание кластера 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

  1. Установите PostgreSQL:

    apt install postgresql -y
  2. Задайте пароль для пользователя postgres и убедитесь, что он обладает правами суперпользователя:

    sudo -u postgres psql

    В интерактивной оболочке выполните:

    ALTER USER postgres WITH PASSWORD 'postgres';
    ALTER ROLE postgres SUPERUSER;
    \q
  3. Отредактируйте файл /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).
  4. Отредактируйте файл /etc/postgresql/15/main/postgresql.conf, чтобы PostgreSQL слушал все интерфейсы:

    nano /etc/postgresql/15/main/postgresql.conf

    Найдите строку #listen_addresses = 'localhost', раскомментируйте ее и замените на:

    listen_addresses = '*'
    Это позволит принимать соединения с любых сетевых интерфейсов, включая адреса почтовых серверов.
  5. Перезапустите PostgreSQL для применения изменений:

    systemctl restart postgresql

Установка и настройка NFS-сервера

Для совместимости с IVA Mail требуется использовать хранилище не выше NFS версии 3 (v3). Убедитесь, что в конфигурации не используется NFSv4.
  1. Установите пакет NFS-сервера:

    apt update && apt install nfs-kernel-server -y
  2. Создайте каталог, который будет общим для почтовых бэкенд-серверов, и установите права доступа 777 (полный доступ для всех).

    mkdir -p /srv/nfs/nfsshared
    chmod 777 /srv/nfs/nfsshared
    Каталог будет содержать общие файлы кластера, такие как настройки, лицензии и т.д. Права 777 нужны для того, чтобы почтовый процесс (пользователь ivamail) мог записывать данные.
  3. Отредактируйте файл экспортов 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 на сервере (необходимо для корректной работы некоторых операций).

  4. Примените настройки экспорта:

    exportfs -ra
  5. Перезапустите NFS-сервер:

    systemctl restart nfs-kernel-server

Настройка почтовых серверов

Все почтовые бэкенд-сервера настраиваются одинаково, за исключением этапа установки лицензии. Лицензия устанавливается только на первый запускаемый узел.

Для фронтенд-серверов пропускаются шаги настройки PostgreSQL и NFS. Так же они имеют другой параметр запуска в файле parameters.conf.


Установка IVA Mail и подготовка окружения

  1. Установите почтовый сервер из пакета ivamail.deb (файл должен быть предварительно скопирован на сервер):

apt-get install ./ivamail.deb -y
  1. Установите пакет dialog (необходим для запуска скрипта настройки подключения к базе данных):

    apt install dialog -y
  2. На бэкенд-серверах установите дополнительные пакеты для 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 для хранения кластерных данных.

  1. Установите пакет NFS-клиента (обычно он уже установлен по умолчанию):

    apt update && apt install nfs-kernel-server -y
    Пакет nfs-kernel-server включает в себя и клиентскую часть.
  2. Создайте точку монтирования вручную:

    mkdir -p /mnt/mailshare
  3. Проверьте, что экспортированный ресурс доступен:

    showmount -e 10.3.6.128

    Вы должны увидеть /srv/nfs/nfsshared.

  4. Выполните монтирование вручную:

    mount -t nfs 10.3.6.128:/srv/nfs/nfsshared /mnt/mailshare
  5. Убедитесь, что монтирование прошло успешно:

    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). После установки лицензии на первом узле, остальные узлы автоматически получат ее при подключении к кластеру.

Подробнее в разделе Лицензирование.


Настройка параметров кластера в административной панели

  1. На каждом почтовом сервере откройте веб-интерфейс панели администратора и перейдите в раздел Модули → Кластер.

  2. Заполните поля настроек кластера см. раздел Настройка кластера.

  3. После сохранения настроек на каждом узле кластера остановите сервис 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):

  1. Откройте файл /etc/fstab:

    nano /etc/fstab
  2. Добавьте строку:

    10.3.6.128:/srv/nfs/nfsshared /mnt/mailshare nfs defaults 0 0
  3. Примените изменения и проверьте, что монтирование проходит без ошибок:

    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-адреса. Это полезно для сохранения сессий.

  • Порты совпадают со стандартными портами почтовых служб.


Проверка и запуск HAProxy

После настройки перезапустите HAProxy:

systemctl restart haproxy

Убедитесь, что сервис активен и прослушивает указанные порты:

netstat -tlnp | grep haproxy

Полезные команды для отладки

В процессе настройки и эксплуатации кластера могут пригодиться следующие команды:

  • Проверка процессов 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 позволяет равномерно распределять нагрузку между узлами.

Ключевые моменты:

  1. На каждом бэкенд-сервере создана символьная ссылка /var/ivamail/Cluster → /mnt/mailshare с правами ivamail:ivamail.

  2. Лицензия установлена только на один первый узел.

  3. Настроены параметры кластера в веб-интерфейса панели администратора.

  4. Серверы остановлены, затем запущены последовательно с параметром --backend/--frontend.

  5. Настроено автоматическое монтирование NFS через /etc/fstab.

При возникновении проблем сверьтесь с разделом Полезные команды для отладки и проверьте логи соответствующих служб.