В этой статье мы покажем вам, как настроить кластер высокой доступности Nginx с помощью Pacemaker на CentOS 7. Чтобы иметь сервер Nginx, который может работать непрерывно без сбоев в течение длительного времени, нам нужно настроить сервер с активными пассивными экземплярами Nginx. Pacemaker – это программное обеспечение с открытым исходным кодом cluster manager, которое обеспечивает максимальную доступность ваших услуг. Это расширенный и масштабируемый диспетчер кластеров высокой доступности, распределенный с помощью ClusterLabs, он управляет всеми службами кластеров и использует возможности обмена сообщениями и членства базового механизма кластеров.
1. Предпосылки
Для выполнения этой статьи вам необходимо:
- 2 или более серверов
- Операционная система CentOS 7
- Корневой доступ к каждому из серверов
2. Вход и обновление CentOS
ssh root@IP_Address -p7022
yum update yum upgrade
Отредактируйте файл /etc/hosts на сервере, с любого терминала в текстовом редакторе, допустим nano
nano /etc/hosts
Добавьте следующие строки в /etc/hosts:
192.168.0.22 webserver-01 192.168.0.23 webserver-02
3. Установка репозитория Epel и Nginx
Дополнительные пакеты для Enterprise Linux в хранилище (Epel) необходимо для того, чтобы установить Nginx. Выполните следующие команды на обоих серверах.
yum install epel-release -y yum install nginx -y
systemctl enable nginx systemctl start nginx
4. Изменение индексной страницы Nginx по умолчанию
После завершения, необходимо внести изменения в индексной странице Nginx по умолчанию на сервере.
Выполните следующую команду на первом сервере
echo ‘<h1>webserver-01</h1>’ > /usr/share/nginx/html/index.html
Выполните следующую команду на втором сервере
echo ‘<h1>webserver-02</h1>’ > /usr/share/nginx/html/index.html
5. Установка и настройка Pacemaker
В этом разделе мы установим стек Pacemaker. Вы должны выполнить этот шаг на обоих серверах.
yum install corosync pacemaker pcs -y
После того, как установка завершена, включите все службы на автоматический запуск при загрузке системы с помощью команды systemctl.
systemctl enable pacemaker systemctl enable corosync systemctl enable pcsd
6. Синхронизация конфигурации
Установка создаст пользователя системы «hacluster». Мы также должны запустить PCSD для синхронизации конфигурации
systemctl start pcsd
7. Создание пароля
Затем создайте новый пароль для пользователя «hacluster», который был автоматически создан во время предыдущей установки, мы должны использовать один и тот же пароль для всех серверов
passwd hacluster
8. Создание кластеров
Затем запустите эту команду ниже
pcs cluster auth webserver-01 webserver-02
На данный момент мы готовы к созданию кластера.
pcs cluster setup –name rosecluster webserver-01 webserver-02
rosecluster это имя кластера, в то время как webserver-01 и webserver-02 являются серверы, которые будут частью rosecluster.
Включите его при загрузке и запустите его.
pcs cluster enable –all pcs cluster start –all
Мы можем проверить состояние кластера с помощью следующей команды:
pcs status
9. Отключение STONITH
STONITH или Shoot другой узел в голове является реализация ограждения на Pacemaker. Если вы находитесь в производстве, лучше включить STONITH. Поскольку мы не используем устройства ограждения, мы отключаем STONITH.
При выполнении команды pcs status вы увидите предупреждение в выходных данных о том, что никакие устройства STONITH не настроены, и STONITH не отключен:
Отключите STONITH с помощью следующей команды pcs.
pcs property set stonith-enabled=false
10. Игнорировать политику кворума
Здесь мы настроим Pacemaker игнорировать кворум:
pcs property set no-quorum-policy=ignore
Проверьте список свойств и убедитесь, что STONITH и политики quorum отключены.
pcs property list
11. Добавление ресурсов
Плавающий IP является IP-адрес, который может быть мгновенно перенесен с одного сервера на другой в одной и той же сети, он используется для поддержки восстановления после сбоя в кластере высокой доступности. В этой статье, плавающий IP-адрес для Pacemaker высокой доступности будет «192.168.0.100». Сейчас мы собираемся добавить два ресурса, плавающую адрес ресурса IP с именем «v_ip» и новый ресурс для Nginx веб-сервера с именем ‘webserver’.
Добавить новый плавающий IP-адрес «v_ip» с помощью следующей команды.
pcs resource create v_ip ocf:heartbeat:IPaddr2 ip=192.168.0.100 cidr_netmask=32 op monitor interval=20s
Далее, мы можем добавить второй ресурс в кластер. Ресурс агент службы ocf:heartbeat:nginx под названием ‘webserver’.
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout=”5s” interval=”5s”
Убедитесь, что нет ошибок, проверьте ресурсы.
pcs status resources
Если вы видите два ресурса; ‘v_ip’ и ‘webserver’, это означает, что плавающий IP и веб-сервер Nginx были добавлены.
12. Настройка ограничения
На этом шаге мы скажем серверу сделать так, чтобы оба ресурса, созданные ранее, работали на одном хосте. Мы установим ограничение коллокации для ресурсов со счетом бесконечности.
pcs constraint colocation add webserver v_ip INFINITY
Установка Nginx ресурсов (webserver), чтобы всегда работать на том же хосте, где v_ip активен.
pcs constraint order v_ip then webserver
Чтобы проверить работающие ресурсы на том же хосте, мы можем вызвать:
pcs status
13. Тест кластера.
Перейдите по адресу http://192.168.0.100 на вашем веб-браузере, вы увидите страницу Nginx по умолчанию на webserver-01.
Затем выполните следующую команду, чтобы остановить кластер webserver-01:
pcs cluster stop webserver-01
Теперь, если вы обновите страницу по адресу http://192.168.0.100, вы получите страницу Nginx по умолчанию от webserver-02.
Поздравляем, вы успешно создали кластер высокой доступности Nginx с помощью Pacemaker. Если у вас есть очень загруженный веб-сайт, вы можете рассмотреть возможность запуска вашего сайта на Nginx HA. Есть много хорошо известных сайтов, работающих на Nginx HA и они используют Nginx HA, чтобы поставлять их содержание быстро, надежно и безопасно.