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

Что мы будем делать:

  1. Настроить файл hosts
  2. Установить репозиторий Epel и Nginx
  3. Установить и настроить Pacemaker, Corosync и Pcsd
  4. Создать и настроить кластер
  5. Отключить STONITH и игнорировать политику кворума
  6. Добавить плавающий IP и ресурсы
  7. Добавить правила в кластер
  8. Настроить Firewalld
  9. Протестировать настройку

Шаг 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-адресами.

Проверка взаимосвязи серверов с помощью ping

Шаг 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

Репозиторий 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 установлен в систему.

Установка и настройка 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 и игнорировать политику кворума

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.

IP-адреса участников Corosync

Проверьте участников Corosync, и вы увидите результат, как показано ниже.

pcs status corosync

Статус Corosync

И, наконец, проверьте высокую доступность веб-сервера. Откройте веб-браузер и введите плавающий IP-адрес ‘10.0.15.15’.

Вы увидите веб-страницу с сервера ‘web01’.

Затем остановите кластер на сервере ‘web01’ с помощью команды ниже.

pcs cluster stop web01

И снова проверьте страницу, и вы получите страницу с сервера ‘web02’, как показано ниже.

Дополнительно:

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

pcs status

И вы получите результат, как показано ниже.

Проверка статуса pcs

Настройка высокой доступности веб-сервера Nginx с Pacemaker, Corosync и Pcsd на сервере CentOS 7 была успешно завершена.

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.