Linux high availability cluster

Как настроить и поддерживать высокую доступность/кластеризацию в Linux

Высокая доступность (HA) просто относится к качеству системы, позволяющей непрерывно работать без сбоев в течение длительного периода времени. Решения высокой доступности могут быть реализованы с использованием аппаратного и/или программного обеспечения, и одним из распространенных решений для реализации высокой доступности является кластеризация.

В вычислениях кластер состоит из двух или более компьютеров (обычно называемых узлами или участниками), которые работают вместе для выполнения задачи. В такой конфигурации только один узел предоставляет услугу, а вторичный узел (узлы) берут на себя функции в случае сбоя.

Кластеры делятся на четыре основных типа:

  • Хранилище: обеспечивает согласованный образ файловой системы на всех серверах в кластере, позволяя серверам одновременно читать и записывать в единую общую файловую систему.
  • Высокая доступность: устранение единых точек отказа и переключение служб с одного узла кластера на другой в случае выхода узла из строя.
  • Балансировка нагрузки: отправляйте запросы сетевых служб на несколько узлов кластера, чтобы сбалансировать нагрузку запросов между узлами кластера.
  • Высокая производительность: выполнение параллельной или параллельной обработки, что помогает повысить производительность приложений.

Еще одним широко используемым решением для обеспечения HA является репликация (особенно репликация данных). Репликация — это процесс, с помощью которого одна или несколько (вторичных) баз данных могут синхронизироваться с одной первичной (или главной) базой данных.

Для настройки кластера нам нужно как минимум два сервера. Для целей этого руководства мы будем использовать два сервера Linux:

В этой статье мы покажем основы развертывания, настройки и поддержания высокой доступности/кластеризации в Ubuntu 16.04/18.04 и CentOS 7. Мы покажем, как добавить HTTP-сервис Nginx в кластер.

Настройка локальных параметров DNS на каждом сервере

Чтобы два сервера могли общаться друг с другом, нам необходимо настроить соответствующие локальные параметры DNS в файле /etc/hosts на обоих серверах.

Откройте и отредактируйте файл с помощью вашего любимого редактора командной строки.

Читайте также:  Linux print all routes

Добавьте следующие записи с фактическими IP-адресами ваших серверов.

192.168.10.10 node1.example.com 192.168.10.11 node2.example.com

Сохраните изменения и закройте файл.

Установка веб-сервера Nginx

Теперь установите веб-сервер Nginx, используя следующие команды.

$ sudo apt install nginx [On Ubuntu] $ sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

После завершения установки запустите службу Nginx и включите ее автоматический запуск во время загрузки, а затем проверьте, работает ли она, с помощью команды systemctl.

$ sudo systemctl enable nginx $ sudo systemctl start nginx $ sudo systemctl status nginx

После запуска службы Nginx нам необходимо создать пользовательские веб-страницы для идентификации и тестирования операций на обоих серверах. Мы изменим содержимое индексной страницы Nginx по умолчанию, как показано.

$ echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS1 $ echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS2

Установка и настройка Corosync и Pacemaker

Затем мы должны установить Pacemaker, Corosync и Pcs на каждом узле следующим образом.

$ sudo apt install corosync pacemaker pcs #Ubuntu $ sudo yum install corosync pacemaker pcs #CentOS

После завершения установки убедитесь, что демон pcs запущен на обоих серверах.

$ sudo systemctl enable pcsd $ sudo systemctl start pcsd $ sudo systemctl status pcsd

Создание кластера

Во время установки создается системный пользователь с именем \hacluster. Поэтому нам нужно настроить аутентификацию, необходимую для компьютеров. Начнем с создания нового пароля для \hacluster, нам нужно использовать один и тот же пароль на всех серверах:

Затем на одном из серверов (Node1) выполните следующую команду, чтобы настроить аутентификацию, необходимую для ПК.

$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force

Теперь создайте кластер и заполните его несколькими узлами (имя кластера не может превышать 15 символов, в этом примере мы использовали examplecluster) на сервере Node1.

$ sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com

Теперь включите кластер при загрузке и запустите службу.

$ sudo pcs cluster enable --all $ sudo pcs cluster start --all

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

$ sudo pcs status OR $ sudo crm_mon -1

Из вывода приведенной выше команды видно, что есть предупреждение об отсутствии устройств STONITH, хотя STONITH по-прежнему включен в кластере. Кроме того, никакие ресурсы/службы кластера не настроены.

Читайте также:  Root home directory in linux

Настройка параметров кластера

Первый вариант — отключить STONITH (или Стрелять в другой узел в голове), реализацию ограждения на Pacemaker.

Этот компонент помогает защитить ваши данные от повреждения при параллельном доступе. Для целей этого руководства мы отключим его, поскольку мы не настроили никаких устройств.

Чтобы отключить STONITH, выполните следующую команду:

$ sudo pcs property set stonith-enabled=false

Затем также игнорируйте политику Кворум, выполнив следующую команду:

$ sudo pcs property set no-quorum-policy=ignore

После установки вышеуказанных параметров выполните следующую команду, чтобы просмотреть список свойств и убедиться, что указанные выше параметры, stonith и политика кворума отключены.

Добавление службы ресурсов/кластера

В этом разделе мы рассмотрим, как добавить ресурс кластера. Мы настроим плавающий IP-адрес, то есть IP-адрес, который можно будет мгновенно перемещать с одного сервера на другой в той же сети или центре обработки данных. Короче говоря, плавающий IP-адрес — это общий технический термин, используемый для IP-адресов, которые не привязаны строго к одному интерфейсу.

В этом случае он будет использоваться для поддержки аварийного переключения в кластере высокой доступности. Имейте в виду, что плавающие IP-адреса предназначены не только для аварийного переключения, у них есть несколько других вариантов использования. Нам нужно настроить кластер таким образом, чтобы только активный член кластера «владел» плавающим IP-адресом или отвечал на него в любой момент времени.

Мы добавим два ресурса кластера: ресурс с плавающим IP-адресом с именем \floating_ip и ресурс для веб-сервера Nginx с именем \http_server.

Сначала начните с добавления float_ip следующим образом. В этом примере наш плавающий IP-адрес — 192.168.10.20.

$ sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s
  • floating_ip: имя службы.
  • \ocf:heartbeat:IPaddr2”: сообщает Pacemaker, какой сценарий использовать, в данном случае IPaddr2, в каком пространстве имен он находится (pacemaker) и какому стандарту соответствует ocf.
  • «op monitor interval=60s»: указывает Pacemaker проверять работоспособность этой службы каждую минуту, вызывая действие монитора агента.
Читайте также:  Размер жестких дисков linux

Затем добавьте второй ресурс с именем http_server. Здесь ресурсный агент службы — ocf:heartbeat:nginx.

$ sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

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

$ sudo pcs status resources

Глядя на вывод команды, были перечислены два добавленных ресурса: \floating_ip и \http_server. Служба float_ip отключена, так как работает первичный узел.

Если в вашей системе включен брандмауэр, вам необходимо разрешить весь трафик к Nginx и всем службам высокой доступности через брандмауэр для правильной связи между узлами:

-------------- CentOS 7 -------------- $ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=high-availability $ sudo firewall-cmd --reload -------------- Ubuntu -------------- $ sudo ufw allow http $ sudo ufw allow high-availability $ sudo ufw reload

Тестирование высокой доступности/кластеризации

Последним и важным шагом является проверка работоспособности нашей настройки высокой доступности. Откройте веб-браузер и перейдите по адресу 192.168.10.20. Вы должны увидеть страницу Nginx по умолчанию с node2.example.com, как показано на снимке экрана.

Чтобы имитировать сбой, выполните следующую команду, чтобы остановить кластер на node2.example.com.

$ sudo pcs cluster stop http_server

Затем перезагрузите страницу по адресу 192.168.10.20. Теперь вы должны получить доступ к веб-странице Nginx по умолчанию с node1.example.com.

В качестве альтернативы вы можете имитировать ошибку, сообщив службе об остановке напрямую, без остановки кластера на каком-либо узле, используя следующую команду на одном из узлов:

$ sudo crm_resource --resource http_server --force-stop

Затем вам нужно запустить crm_mon в интерактивном режиме (по умолчанию), в течение 2-минутного интервала мониторинга вы должны увидеть кластер, уведомляющий о сбое http_server, и переместить его на другой узел.

Чтобы службы кластера работали эффективно, вам может потребоваться установить некоторые ограничения. Вы можете увидеть справочную страницу pcs (man pcs) для списка всех команд использования.

Для получения дополнительной информации о Corosync и Pacemaker посетите сайт: https://clusterlabs.org/

Краткое содержание

В этом руководстве мы показали основы развертывания, настройки и поддержания высокой доступности/кластеризации/репликации в Ubuntu 16.04/18.04 и CentOS 7. Мы продемонстрировали, как добавить HTTP-сервис Nginx в кластер. Если у вас есть мысли или вопросы, которыми вы хотите поделиться, воспользуйтесь формой обратной связи ниже.

Источник

Оцените статью
Adblock
detector