Ресурс Apache не удалось запустить в Pacemaker

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

Я использую Pacemaker с Corosync для настройки базового кластера Apache HA с 3 узлами, работающими на CentOS7. По каким-то причинам я не могу запустить ресурс apache в pcs.

IP кластера: 192.168.200.40

# pcs resource show ClusterIP
     Ресурс: ClusterIP (class=ocf provider=heartbeat type=IPaddr2)
      Атрибуты: cidr_netmask=24 ip=192.168.200.40
      Операции: мониторинг интервал=20s (ClusterIP-monitor-interval-20s)
                  запуск интервал=0s таймаут=20s (ClusterIP-start-interval-0s)
                  остановка интервал=0s таймаут=20s (ClusterIP-stop-interval-0s)



# pcs resource show WebServer
 Ресурс: WebServer (class=ocf provider=heartbeat type=apache)
  Атрибуты: configfile=/etc/httpd/conf/httpd.conf statusurl=http://localhost/server-status
  Операции: мониторинг интервал=1min (WebServer-monitor-interval-1min)
              запуск интервал=0s таймаут=40s (WebServer-start-interval-0s)
              остановка интервал=0s таймаут=60s (WebServer-stop-interval-0s)



# pcs status
Имя кластера: 
WARNING: имена узлов corosync и pacemaker не совпадают (IPs, используемые в настройке?)
Стек: corosync
Текущий DC: server3.example.com (версия 1.1.18-11.el7_5.2-2b07d5c5a9) - раздел с кворумом
Последнее обновление: Чт Июн  7 21:59:09 2018
Последнее изменение: Чт Июн  7 21:45:23 2018 от root через cibadmin на server1.example.com

3 узла настроены
2 ресурса настроены

В сети: [ server1.example.com server2.example.com server3.example.com ]

Полный список ресурсов:

 ClusterIP  (ocf::heartbeat:IPaddr2):   Запущен server2.example.com
 WebServer  (ocf::heartbeat:apache):    Остановлен

Неудачные действия:
* WebServer_start_0 на server3.example.com 'неизвестная ошибка' (1): call=49, status=Время вышло, exitreason='',
    last-rc-change="Чт Июн  7 21:46:03 2018", queued=0ms, exec=40002ms
* WebServer_start_0 на server1.example.com 'неизвестная ошибка' (1): call=53, status=Время вышло, exitreason='',
    last-rc-change="Чт Июн  7 21:45:23 2018", queued=0ms, exec=40003ms
* WebServer_start_0 на server2.example.com 'неизвестная ошибка' (1): call=47, status=Время вышло, exitreason='',
    last-rc-change="Чт Июн  7 21:46:43 2018", queued=1ms, exec=40002ms


Статус демона:
  corosync: активен/включен
  pacemaker: активен/включен
  pcsd: активен/включен

Экземпляр httpd включен и работает на всех трех узлах. IP кластера и индивидуальные IP узлов могут получить доступ к веб-странице. Ресурс ClusterIP также хорошо работает для автоматического переключения. Что может быть не так с ресурсом apache в этом случае?

Большое спасибо!

Обновление:

Вот дополнительная информация из отладки. Похоже, что Apache не может связаться с портом, но в журнале apache нет ошибок, и systemctl status httpd показал все зеленое на всех узлах. Я могу открывать веб-страницы через IP кластера и каждый IP узла. Автоматическое переключение ресурса ClusterIP также работает отлично. Есть идеи, почему ресурс Apache не работает с pacemaker?

# pcs resource debug-start WebServer --full
Операция запуска для WebServer (ocf:heartbeat:apache) не удалась: 'Время вышло' (2)
 >  stderr: ERROR: (98)Адрес уже используется: AH00072: make_sock: не удалось привязать к адресу [::]:80 (98)Адрес уже используется: AH00072: make_sock: не удалось привязать к адресу 0.0.0.0:80 нет доступных сокетов для прослушивания, завершение AH00015: Невозможно открыть журналы
 >  stderr: INFO: apache не работает
 >  stderr: INFO: ожидаем, когда apache /etc/httpd/conf/httpd.conf запустится
 >  stderr: INFO: apache не работает
 >  stderr: INFO: ожидаем, когда apache /etc/httpd/conf/httpd.conf запустится
 >  stderr: INFO: apache не работает
 >  stderr: INFO: ожидаем, когда apache /etc/httpd/conf/httpd.conf запустится
 >  stderr: INFO: apache не работает

Я думаю, это связано с местоположением файла PID для httpd. У меня была та же проблема, и я решил ее, добавив “PidFile /var/run/httpd.pid” в httpd.conf и отключив ресурс webserver, а затем запустив httpd, и ресурс webserver заработал.

Я знаю, что добавление ответа после такой длительной паузы неуместно, но это может помочь кому-то.

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

Apache ресурс не смог запуститься в Pacemaker: решение проблемы

Использование Pacemaker с Corosync для создания кластера высокой доступности (HA) Apache на базе CentOS7 является распространённой практикой. Однако, из-за различных причин, ресурс Apache может не запускаться, как это произошло в вашем случае. В данной статье мы рассмотрим возможные причины и решения проблемы с запуском ресурса Apache в Pacemaker, основываясь на предоставленной информации.

Анализ проблемы

Из вашей информации следует, что:

  1. Общее состояние кластера: Кластер состоит из трёх узлов, и IP-адрес кластера (192.168.200.40) работает корректно.
  2. Ресурсы кластера: ClusterIP ресурс работает без проблем, однако ресурс WebServer для Apache не запущен, что подтверждается сообщением об ошибке:
    ERROR: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80

    Данное сообщение указывает на то, что Apache не может привязаться к порту 80, так как он уже занят другим процессом.

Возможные причины

  1. Порт уже занят: Если на узлах кластера уже имеется работающий экземпляр Apache, он будет блокировать порт 80, и Pacemaker не сможет запустить новый экземпляр. Это часто происходит, если Apache был запущен вручную или автоматически через systemd до активации ресурса в Pacemaker.
  2. Ошибка в конфигурации PID файла: Вероятной причиной проблемы также может быть неправильное определение местоположения PID файла для Apache. Если Pacemaker не может найти или не имеет доступа к PID файлу, это может стать причиной сбоя в попытке запуска Apache.

Решения

  1. Проверьте, занят ли порт 80:
    Выполните команду:

    lsof -i :80

    Это покажет, какие процессы являются владельцами порта 80. Если Apache уже запущен, вам необходимо либо остановить его, либо настроить Pacemaker так, чтобы он управлял экземплярами Apache.

  2. Настройка PID файла:
    Как отмечено в ваших обновлениях, добавление строки

    PidFile /var/run/httpd.pid

    в конфигурацию Apache (/etc/httpd/conf/httpd.conf) может быть решением. После этого необходимо:

    • Отключить ресурс WebServer:
      pcs resource disable WebServer
    • Перезапустить Apache вручную:
      systemctl start httpd
    • Затем вновь активировать ресурс WebServer:
      pcs resource enable WebServer
  3. Логи и диагностика:
    Проверьте логи Apache и Pacemaker:

    • Логи Apache обычно находятся в:
      /var/log/httpd/error_log
    • Логи Pacemaker можно найти в:
      /var/log/pacemaker.log

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

Заключение

Выявление и устранение проблемы с запуском ресурса Apache в Pacemaker требует систематического подхода к диагностике. Проверка используемых портов, конфигурации PID файлов, и анализ логов — это ключевые шаги для устранения таких проблем. Следуя предложенным шагам, вы сможете успешно запустить ресурс Apache в вашем HA-кластере.

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

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

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