Поиск по сайту:

Как настроить высокую доступность Nginx с помощью Pacemaker и Corosync в CentOS 7


На этой странице

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

В этом руководстве мы шаг за шагом расскажем, как создать кластер высокой доступности Nginx Web Server с Pacemaker, Corosync и Pcsd. Мы создадим веб-сервер Active-Passive Cluster или Failover-cluster Nginx, используя Pacemaker в системе CentOS 7.

Pacemaker — это программное обеспечение для управления кластером с открытым исходным кодом, которое обеспечивает максимально высокую доступность ваших сервисов. Это расширенный и масштабируемый менеджер кластера HA, распространяемый ClusterLabs.

Corosync Cluster Engine — это проект с открытым исходным кодом, производный от проекта OpenAIS под новой лицензией BSD. Это система групповой связи с дополнительными функциями для реализации High Availability в приложениях.

Есть несколько приложений для интерфейсов Pacemaker. Pcsd — это один из интерфейсов командной строки Pacemaker и графический интерфейс для управления Pacemaker. Мы можем создать, настроить или добавить новый узел в кластер с помощью команды pcsd pcs.

Предпосылки

  • 2 или более серверов CentOS 7
    • web01       10.0.15.10
    • web02       10.0.15.11
    • web03       10.0.15.12

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

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

    Шаг 1. Сопоставьте хост-файл

    Примечание. Выполните шаги 1–3 на всех серверах web01, web02 и web03.

    Первый шаг, который мы должны сделать, – отредактировать файл хоста на каждом сервере, чтобы сопоставить имя хоста всех серверов. У нас есть серверы web01, web02 и web03, войдите на каждый сервер с учетной записью ssh.

    ssh [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 по умолчанию на каждом сервере новой страницей.

    #Run Command on 'web01'
    echo '<h1>web01 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

    #Run Command on 'web02'
    echo '<h1>web02 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

    #Run Command on 'web03'
    echo '<h1>web03 - hakase-labs</h1>' > /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

    Теперь запустите интерфейс командной строки pcsd Pacemaker на всех серверах.

    systemctl start pcsd

    Затем создайте новый пароль для пользователя hacluster и используйте тот же пароль для всех серверов. Этот пользователь был создан автоматически во время установки программного обеспечения.

    Вот как вы настраиваете пароль для пользователя hacluster.

    passwd hacluster
    Enter new password:

    Программный стек высокой доступности Pacemaker, Corosync и Pcsd установлены в системе.

    Шаг 4 — Создайте и настройте кластер

    Примечание. Выполняйте шаги 4–7 только на web01.

    На этом шаге мы создадим новый кластер с 3 серверами Centos. Затем настройте плавающий IP-адрес и добавьте новые ресурсы Nginx.

    Чтобы создать кластер, нам нужно авторизовать все серверы с помощью команды pcs и пользователя hacluster.

    Авторизуйте все серверы с помощью команды pcs, а также пользователя и пароля hacluster.

    pcs cluster auth web01 web02 web03
    Username: hacluster
    Password:

    Теперь пришло время настроить кластер. Определите имя кластера и все серверы, которые будут частью кластера.

    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 High-Availability: 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.

    pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

    Убедитесь, что у вас нет ошибок, затем проверьте доступные ресурсы.

    pcs status resources

    Вы увидите два ресурса virtual_ip и веб-сервер. Добавлены новые ресурсы для плавающего IP и веб-сервера Nginx.

    Шаг 7. Добавьте правила ограничений в кластер

    На этом этапе мы настроим правила высокой доступности и настроим ограничение ресурсов с помощью интерфейса командной строки pcs.

    Установите ограничение сопоставления для ресурсов веб-сервера и виртуального_ip с оценкой INFINITY. Кроме того, настройте ресурсы веб-сервера и virtual_ip на всех узлах сервера.

    pcs constraint colocation add webserver virtual_ip INFINITY

    Всегда устанавливайте ресурсы virtual_ip и веб-сервера на одних и тех же узлах.

    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-Cluster будет работать под конфигурацией брандмауэра 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

    Убедитесь, что служба с 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 успешно завершена.

    Ссылка

    • http://www.alexlinux.com/pacemaker-corosync-nginx-cluster/