Вопрос или проблема
Я использую 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, основываясь на предоставленной информации.
Анализ проблемы
Из вашей информации следует, что:
- Общее состояние кластера: Кластер состоит из трёх узлов, и IP-адрес кластера (192.168.200.40) работает корректно.
- Ресурсы кластера: ClusterIP ресурс работает без проблем, однако ресурс WebServer для Apache не запущен, что подтверждается сообщением об ошибке:
ERROR: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Данное сообщение указывает на то, что Apache не может привязаться к порту 80, так как он уже занят другим процессом.
Возможные причины
- Порт уже занят: Если на узлах кластера уже имеется работающий экземпляр Apache, он будет блокировать порт 80, и Pacemaker не сможет запустить новый экземпляр. Это часто происходит, если Apache был запущен вручную или автоматически через systemd до активации ресурса в Pacemaker.
- Ошибка в конфигурации PID файла: Вероятной причиной проблемы также может быть неправильное определение местоположения PID файла для Apache. Если Pacemaker не может найти или не имеет доступа к PID файлу, это может стать причиной сбоя в попытке запуска Apache.
Решения
-
Проверьте, занят ли порт 80:
Выполните команду:lsof -i :80
Это покажет, какие процессы являются владельцами порта 80. Если Apache уже запущен, вам необходимо либо остановить его, либо настроить Pacemaker так, чтобы он управлял экземплярами Apache.
-
Настройка 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
- Отключить ресурс WebServer:
-
Логи и диагностика:
Проверьте логи Apache и Pacemaker:- Логи Apache обычно находятся в:
/var/log/httpd/error_log
- Логи Pacemaker можно найти в:
/var/log/pacemaker.log
Используйте эти логи для выявления ошибок и получения дополнительной информации о причинах сбоев запуска.
- Логи Apache обычно находятся в:
Заключение
Выявление и устранение проблемы с запуском ресурса Apache в Pacemaker требует систематического подхода к диагностике. Проверка используемых портов, конфигурации PID файлов, и анализ логов — это ключевые шаги для устранения таких проблем. Следуя предложенным шагам, вы сможете успешно запустить ресурс Apache в вашем HA-кластере.
Если после выполнения предложенных рекомендаций проблема останется нерешённой, рассмотрите возможность обращения на специализированные форумы или к техническим экспертам, имеющим опыт работы с Pacemaker и Apache.