Nginx, Pacemaker · 7 min read · Dec 06, 2025
Как настроить высокую доступность Nginx с Pacemaker и Corosync на CentOS 7
В этом руководстве мы шаг за шагом покажем вам, как создать кластер высокой доступности веб-сервера Nginx с Pacemaker, Corosync и Pcsd. Мы создадим активный-пассивный кластер или кластер переключения на веб-сервере Nginx с использованием Pacemaker на системе CentOS 7.
Pacemaker — это программное обеспечение для управления кластерами с открытым исходным кодом, которое обеспечивает максимальную высокую доступность ваших услуг. Это продвинутый и масштабируемый менеджер HA-кластера, распространяемый компанией ClusterLabs.
Corosync Cluster Engine — это проект с открытым исходным кодом, производный от проекта OpenAIS под новой лицензией BSD. Это система групповой связи с дополнительными функциями для реализации высокой доступности в приложениях.
Существуют некоторые приложения для интерфейсов Pacemaker. Pcsd — это один из интерфейсов командной строки и GUI для управления Pacemaker. Мы можем создать, настроить или добавить новый узел в кластер с помощью команды pcsd.
Предварительные требования
- 2 или более серверов CentOS 7 - web01 10.0.15.10
- web02 10.0.15.11
- web03 10.0.15.12
- Плавающий IP-адрес 10.0.15.15
- Привилегии root
Что мы будем делать:
- Настроить файл hosts
- Установить репозиторий Epel и Nginx
- Установить и настроить Pacemaker, Corosync и Pcsd
- Создать и настроить кластер
- Отключить STONITH и игнорировать политику кворума
- Добавить плавающий IP и ресурсы
- Добавить правила в кластер
- Настроить Firewalld
- Протестировать настройку
Шаг 1 - Настроить файл hosts
Примечание: Выполните шаги 1 - 3 на всех серверах web01, web02 и web03.
Первый шаг, который мы должны сделать, это отредактировать файл hosts на каждом сервере, чтобы сопоставить имена хостов всех серверов. У нас есть серверы ‘web01’, ‘web02’ и ‘web03’, войдите на каждый сервер с помощью учетной записи ssh.
ssh root@web[01,02,03]Отредактируйте файл ‘/etc/hosts’ с помощью vim.
vim /etc/hostsВставьте следующую конфигурацию.
10.0.15.10 web01
10.0.15.11 web02
10.0.15.12 web03Сохраните и выйдите.
Теперь протестируйте конфигурацию сопоставления хостов.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03Убедитесь, что ‘web01’, ‘web02’ и ‘web03’ сопоставлены с правильными IP-адресами.

Шаг 2 - Установить репозиторий Epel и Nginx
На этом шаге мы установим репозиторий epel, а затем установим веб-сервер Nginx. Репозиторий EPEL или Extra Packages for Enterprise Linux необходим для установки пакетов Nginx.
Установите репозиторий EPEL с помощью следующей команды yum.
yum -y install epel-releaseТеперь установите веб-сервер Nginx из репозитория EPEL.
yum -y install nginxПосле завершения установки измените страницу index.html по умолчанию на каждом сервере на новую страницу.
#Выполните команду на 'web01'
echo 'web01 - hakase-labs
' > /usr/share/nginx/html/index.html
#Выполните команду на 'web02'
echo 'web02 - hakase-labs
' > /usr/share/nginx/html/index.html
#Выполните команду на 'web03'
echo 'web03 - hakase-labs
' > /usr/share/nginx/html/index.html
Репозиторий EPEL и веб-сервер Nginx теперь установлены в системе.
Шаг 3 - Установить и настроить Pacemaker, Corosync и Pcsd
Pacemaker, Corosync и Pcsd доступны в стандартном системном репозитории. Поэтому их все можно установить из репозитория CentOS с помощью следующей команды yum.
yum -y install corosync pacemaker pcsПосле завершения установки включите все службы для автоматического запуска при загрузке системы с помощью следующих команд systemctl.
systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemakerТеперь запустите интерфейс командной строки Pacemaker pcsd на всех серверах.
systemctl start pcsdЗатем создайте новый пароль для пользователя ‘hacluster’ и используйте один и тот же пароль для всех серверов. Этот пользователь был создан автоматически во время установки программного обеспечения.
Вот как вы настраиваете пароль для пользователя ‘hacluster‘.
passwd hacluster
Введите новый пароль:Стек программного обеспечения высокой доступности Pacemaker, Corosync и Pcsd установлен в систему.

Шаг 4 - Создать и настроить кластер
Примечание: Выполните шаги 4 - 7 только на ‘web01’.
На этом шаге мы создадим новый кластер из 3 серверов CentOS. Затем настроим плавающий IP-адрес и добавим новые ресурсы Nginx.
Чтобы создать кластер, нам нужно авторизовать все серверы с помощью команды pcs и пользователя hacluster.
Авторизуйте все серверы с помощью команды pcs и пользователя hacluster и пароля.
pcs cluster auth web01 web02 web03
Имя пользователя: hacluster
Пароль: aqwe123@
Теперь пришло время настроить кластер. Определите имя кластера и все серверы, которые будут частью кластера.
pcs cluster setup --name hakase_cluster web01 web02 web03Теперь запустите все службы кластера и также включите их.
pcs cluster start --all
pcs cluster enable --all
Затем проверьте статус кластера.
pcs status cluster
Шаг 5 - Отключить STONITH и игнорировать политику кворума
Поскольку мы не используем устройство ограждения, мы отключим STONITH. STONITH или Shoot The Other Node In The Head — это реализация ограждения в Pacemaker. Если вы находитесь в производственной среде, лучше включить STONITH.
Отключите STONITH с помощью следующей команды pcs.
pcs property set stonith-enabled=falseЗатем для политики кворума игнорируйте ее.
pcs property set no-quorum-policy=ignoreПроверьте список свойств и убедитесь, что stonith и политика кворума отключены.
pcs property list
STONITH и политика кворума отключены.
Шаг 6 - Добавить плавающий IP и ресурсы
Плавающий IP — это IP-адрес, который может автоматически перемещаться с одного сервера на другой сервер в одном и том же центре обработки данных. И мы уже определили плавающий IP-адрес для высокой доступности Pacemaker как ‘10.0.15.15’. Теперь мы хотим добавить два ресурса: ресурс плавающего IP-адреса с именем ‘virtual_ip’ и новый ресурс для веб-сервера Nginx с именем ‘webserver’.
Добавьте новый ресурс плавающего IP-адреса ‘virtual_ip’ с помощью команды pcs, как показано ниже.
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30sЗатем добавьте новый ресурс для Nginx ‘webserver’.
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"Убедитесь, что у вас нет ошибок, затем проверьте доступные ресурсы.
pcs status resourcesВы увидите два ресурса ‘virtual_ip’ и ‘webserver’. Новые ресурсы для плавающего IP и веб-сервера Nginx были добавлены.
Шаг 7 - Добавить правила ограничений в кластер
На этом шаге мы настроим правила высокой доступности и установим ограничение ресурсов с помощью интерфейса командной строки pcs.
Установите ограничение колокации для ресурсов webserver и virtual_ip со значением ‘INFINITY’. Также настройте ресурсы webserver и virtual_ip как одинаковые на всех узлах серверов.
pcs constraint colocation add webserver virtual_ip INFINITYУстановите, чтобы ресурсы ‘virtual_ip’ и ‘webserver’ всегда находились на одном и том же узле серверов.
pcs constraint order virtual_ip then the webserverЗатем остановите кластер, а затем снова запустите его.
pcs cluster stop --all
pcs cluster start --all
Теперь снова проверьте ресурсы, и вы увидите их статус как ‘Запущен’ на том же сервере ‘web01’.
pcs status resourcesРесурсы virtual_ip и webserver были запущены на одном и том же сервере/узле ‘web01’.
Шаг 8 - Настроить Firewalld
HA-кластер будет работать под конфигурацией брандмауэра firewalld - установите его, если у вас нет этого пакета.
yum -y install firewalldЗапустите firewalld и включите его для автоматического запуска каждый раз при загрузке системы с помощью следующих команд systemctl.
systemctl start firewalld
systemctl enable firewalldЗатем добавьте новые службы в firewalld с помощью команд firewall-cmd - добавьте службу высокой доступности, службы HTTP и HTTPS для Nginx.
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=httpsПерезагрузите конфигурацию брандмауэра и проверьте все службы.
firewall-cmd --reload
firewall-cmd --list-allУбедитесь, что служба ha с HTTP и HTTPS присутствует в списке.

Шаг 9 - Тестирование
На этом шаге мы проведем несколько тестов для кластера. Проверьте статус узлов (‘В сети’ или ‘Офлайн’), проверьте участников corosync и статус, а затем проверьте высокую доступность веб-сервера Nginx, получив доступ к плавающему IP-адресу.
Проверьте статус узлов с помощью следующей команды.
pcs status nodes
Все узлы работают ‘В сети’.
Проверьте участников corosync.
corosync-cmapctl | grep membersВы получите IP-адреса участников Corosync.

Проверьте участников Corosync, и вы увидите результат, как показано ниже.
pcs status corosync
И, наконец, проверьте высокую доступность веб-сервера. Откройте веб-браузер и введите плавающий IP-адрес ‘10.0.15.15’.
Вы увидите веб-страницу с сервера ‘web01’.
Затем остановите кластер на сервере ‘web01’ с помощью команды ниже.
pcs cluster stop web01И снова проверьте страницу, и вы получите страницу с сервера ‘web02’, как показано ниже.
Дополнительно:
Проверьте статус кластера с помощью команды ниже.
pcs statusИ вы получите результат, как показано ниже.

Настройка высокой доступности веб-сервера Nginx с Pacemaker, Corosync и Pcsd на сервере CentOS 7 была успешно завершена.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.