Не удается правильно настроить systemd:postfix на pacemaker.

Вопрос или проблема

Цель: У меня есть кластер, управляемый Pacemaker, и я хочу, чтобы мой ресурс Postfix зависел от services clamav-daemon.service и mailscanner.service. Если один из этих двух ресурсов выйдет из строя, IP-switch будет активирован.

Я исследовал и обнаружил, что могу использовать systemd для настройки параметров, таких как “BindsTo=” и “After=”, что может быть полезно в моем случае.

Я использовал следующие команды для настройки моего ресурса на Pacemaker: (в настоящее время тестирую на одной машине, чтобы увидеть, смогу ли я заставить эту конфигурацию работать в кластере)

pcs resource create postfixmail systemd:postfix
pcs resource clone postfixmail clone-max=1 clone-node-max=1
pcs constraint location postfixmail-clone prefers mailt02=INFINITY

Вот результат, который я получил:

Неудачные действия с ресурсами:
  * postfixmail_start_0 на mailt02 'ошибка' (1): call=51, status="завершено", exitreason='', last-rc-change="2024-09-26 11:38:07 +01:00", queued=0ms, exec=456ms

Вот конфигурация моего файла systemd/postfix.service:

[Unit]
Description=Почтовый транспортный агент Postfix
Conflicts=sendmail.service exim4.service
ConditionPathExists=/etc/postfix/main.cf
BindsTo=mailscanner.service clamav-daemon.service
After=mailscanner.service clamav-daemon.service 

[Service]
Type=simple
ExecStart=/usr/sbin/postfix start
ExecReload=/usr/sbin/postfix reload

[Install]
WantedBy=multi-user.target

Вот что дает мне “systemctl status postfix.service”:

mailscanner.service: Найден цикл упорядочивания на postfix.service/start
mailscanner.service: Найдена зависимость от mailscanner.service/start
mailscanner.service: Невозможно разорвать цикл, начиная с mailscanner.service/start
mailscanner.service: Найден цикл упорядочивания на postfix.service/start
mailscanner.service: Найдена зависимость от mailscanner.service/start
mailscanner.service: Невозможно разорвать цикл, начиная с mailscanner.service/start

Я здесь, чтобы попросить о помощи и руководстве для решения этой проблемы. Я также принимаю предложения других способов достижения моей цели.

Спасибо!

Ответ или решение

Для того чтобы правильно настроить системную службу Postfix с использованием Pacemaker и учесть зависимость от clamav-daemon.service и mailscanner.service, необходимо избежать циклов зависимостей и правильно определить порядок запуска служб. Давайте рассмотрим шаги для устранения ваших проблем.

1. Устранение циклов зависимостей

Судя по вашему описанию, у вас есть взаимные зависимости между postfix.service и mailscanner.service, что вызывает цикл, который не позволяет системе корректно запустить необходимые службы.

Во-первых, убедитесь, что mailscanner.service не имеет зависимости от postfix.service. Вам нужно изучить конфигурацию mailscanner.service и убедиться, что она не ссылается на postfix.service.

Если mailscanner.service не зависит от postfix.service, попробуйте изменить ваш файл postfix.service следующим образом:

2. Изменение конфигурации postfix.service

[Unit]
Description=Postfix Mail Transport Agent
Conflicts=sendmail.service exim4.service
ConditionPathExists=/etc/postfix/main.cf
BindsTo=mailscanner.service clamav-daemon.service
After=mailscanner.service clamav-daemon.service
Before=some-other-service.service  # Замените на реальное имя службы, если необходимо

[Service]
Type=simple
ExecStart=/usr/sbin/postfix start
ExecReload=/usr/sbin/postfix reload

[Install]
WantedBy=multi-user.target

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

3. Генерация зависимостей

После обновления конфигурационного файла postfix.service, перезапустите систему управления службами для применения изменений:

sudo systemctl daemon-reload

4. Проверка конфигурации

Проверьте статус и зависимости сервисов:

systemctl list-dependencies postfix.service
systemctl status postfix.service
systemctl status mailscanner.service
systemctl status clamav-daemon.service

Убедитесь, что зависимости выставлены корректно и нет циклов.

5. Настройка Pacemaker

Теперь перейдите к настройке ресурсов в Pacemaker. Убедитесь, что ресурсы правильно привязаны и зависимы друг от друга. Вы можете использовать следующее:

pcs resource create postfixmail systemd:postfix \
    op start timeout=60s \
    op stop timeout=60s

pcs resource clone postfixmail clone-max=1 clone-node-max=1
pcs constraint location postfixmail prefers mailt02=INFINITY

# Установка зависимостей
pcs constraint colocation add postfixmail with mailscanner
pcs constraint colocation add postfixmail with clamav-daemon

6. Тестирование

После всех изменений протестируйте вашу конфигурацию:

pcs status
pcs resource show

Убедитесь, что оба сервиса (Postfix и его зависимости) корректно работают и управляются Pacemaker.

Заключение

Следуя этим шагам, вы должны устранить проблему циклов зависимостей и обеспечить корректную работу Postfix с Pacemaker. Если ошибка все еще появилась, проверьте журналы journalctl -xe для более детальной информации о сбоях.

Надеюсь, это поможет вам настроить и использовать Postfix в вашем кластере!

Оцените материал
Добавить комментарий

Капча загружается...