Высокая доступность (HA) просто относится к качеству системы, позволяющей непрерывно работать без сбоев в течение длительного периода времени. Решения высокой доступности могут быть реализованы с использованием оборудования и / или программного обеспечения, и одним из распространенных решений для реализации высокой доступности является кластеризация.
В вычислениях кластер состоит из двух или более компьютеров (обычно называемых узлы или члены), которые работают вместе для выполнения задачи. В такой настройке только один узел предоставляет услугу, а вторичный узел (-ы) берет на себя его работу в случае сбоя.
Кластеры делятся на четыре основных типа:
Еще одно широко используемое решение для предоставления HA это репликация (в частности репликация данных). Репликация - это процесс, с помощью которого можно поддерживать синхронизацию одной или нескольких (вторичных) баз данных с одной первичной (или главной) базой данных.
Для настройки кластера нам понадобится как минимум два сервера. В этом руководстве мы будем использовать два сервера Linux:
В этой статье мы продемонстрируем основы развертывания, настройки и поддержания высокой доступности / кластеризации в Ubuntu 16.04 / 18.04 и CentOS 7. Мы продемонстрируем, как добавить в кластер HTTP-сервис Nginx.
Чтобы два сервера могли взаимодействовать друг с другом, нам необходимо настроить соответствующие локальные настройки DNS в /etc/hosts файл на обоих серверах.
Откройте и отредактируйте файл, используя свой любимый редактор командной строки.
$ sudo vim / etc / hosts
Добавьте следующие записи с фактическими IP-адресами ваших серверов.
192.168.10.10 node1.example.com. 192.168.10.11 node2.example.com.
Сохраните изменения и закройте файл.
Теперь установите веб-сервер Nginx, используя следующие команды.
$ sudo apt install nginx [В Ubuntu] $ sudo yum install epel-release && sudo yum install nginx [в CentOS 7]
После завершения установки запустите службу Nginx на данный момент и включите ее автоматический запуск во время загрузки, а затем проверьте, запущена ли она и работает, с помощью команды systemctl.
В Ubuntu служба должна запускаться автоматически сразу после завершения предварительной настройки пакета, вы можете просто включить ее.
$ sudo systemctl включить nginx. $ sudo systemctl start nginx. $ sudo systemctl status nginx.
После запуска службы Nginx нам необходимо создать пользовательские веб-страницы для идентификации и тестирования операций на обоих серверах. Мы изменим содержимое страницы индекса Nginx по умолчанию, как показано.
$ echo "Это страница по умолчанию для node1.example.com" | sudo tee /usr/share/nginx/html/index.html # VPS1. $ echo "Это страница по умолчанию для node2.example.com" | sudo tee /usr/share/nginx/html/index.html # VPS2.
Далее нам нужно установить Кардиостимулятор, Corosync, и Шт. на каждом узле следующим образом.
$ sudo apt install corosync pacemaker pc #Ubuntu $ sudo yum install corosync pacemaker pc #CentOS
После завершения установки убедитесь, что шт. демон запущен на обоих серверах.
$ sudo systemctl enable pcsd. $ sudo systemctl start pcsd. $ sudo systemctl status pcsd.
Во время установки пользователь системы позвонил «Хакластер» создано. Итак, нам нужно настроить аутентификацию, необходимую для шт.. Начнем с создания нового пароля для «Хакластер» user, нам нужно использовать один и тот же пароль на всех серверах:
$ sudo passwd hacluster.
Затем на одном из серверов (Node1) выполните следующую команду, чтобы настроить аутентификацию, необходимую для шт..
$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force.
Теперь создайте кластер и заполните его некоторыми узлами (имя кластера не может превышать 15 символов, в этом примере мы использовали examplecluster) на сервере Node1.
Настройка кластера $ sudo pcs --name examplecluster node1.example.com node2.example.com
Теперь включите кластер при загрузке и запустите службу.
$ sudo pcs cluster enable --all. $ sudo pcs начало кластера - все.
Теперь проверьте, запущена ли служба кластеров, используя следующую команду.
Статус $ sudo pcs. ИЛИ. $ sudo crm_mon -1.
Из вывода приведенной выше команды видно, что есть предупреждение о том, что нет STONITH устройства еще STONITH все еще включен в кластере. Кроме того, не были настроены ресурсы / службы кластера.
Первый вариант - отключить STONITH (или Выстрелить в другой узел в голове), реализация ограждения на Кардиостимулятор.
Этот компонент помогает защитить ваши данные от повреждения при одновременном доступе. Для целей этого руководства мы отключим его, так как мы не настроили никаких устройств.
Выключить STONITH, выполните следующую команду:
Установлено свойство $ sudo pcs stonith-enabled = false.
Затем также игнорируйте Кворум policy, выполнив следующую команду:
$ sudo pcs свойство set no-quorum-policy = ignore.
После установки указанных выше параметров выполните следующую команду, чтобы просмотреть список свойств и убедиться, что указанные выше параметры, Stonith и политика кворума отключены.
Список свойств $ sudo pcs.
В этом разделе мы рассмотрим, как добавить ресурс кластера. Мы настроим плавающий IP-адрес, который представляет собой IP-адрес, который можно мгновенно перенести с одного сервера на другой в той же сети или центре обработки данных. Короче говоря, плавающий IP-адрес - это общий технический термин, используемый для IP-адресов, которые не привязаны строго к одному единственному интерфейсу.
В этом случае он будет использоваться для поддержки аварийного переключения в кластере высокой доступности. Имейте в виду, что плавающие IP-адреса предназначены не только для аварийного переключения, у них есть несколько других вариантов использования. Нам необходимо настроить кластер таким образом, чтобы только активный член кластера «владел» плавающим IP-адресом или отвечал на него в любой момент времени.
Мы добавим два ресурса кластера: ресурс с плавающим IP-адресом под названием «float_ip»И ресурс для веб-сервера Nginx под названием«http_server”.
Сначала начните с добавления FLOIL_IP, как показано ниже. В этом примере наш плавающий IP-адрес 192.168.10.20.
Ресурс $ sudo pcs create Floating_ip ocf: heartbeat: IPaddr2 ip = 192.168.10.20 cidr_netmask = 24 op интервал монитора = 60 с.
куда:
Затем добавьте второй ресурс с именем http_server. Здесь агент ресурса службы ocf: сердцебиение: nginx.
Ресурс $ sudo pcs create http_server ocf: heartbeat: nginx configfile = "/ etc / nginx / nginx.conf" op monitor timeout = "20s" interval = "60s"
После добавления служб кластера выполните следующую команду, чтобы проверить состояние ресурсов.
Ресурсы состояния $ sudo pcs.
Глядя на вывод команды, два добавленных ресурса: «Плавающий_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 не удалось и переместить его на другой узел.
Чтобы службы кластера работали эффективно, вам может потребоваться установить некоторые ограничения. Вы можете увидеть шт. страница руководства (man pcs) для получения списка всех используемых команд.
Для получения дополнительной информации о Corosync и Pacemaker посетите: https://clusterlabs.org/
В этом руководстве мы показали основы развертывания, настройки и поддержания высокой доступности / кластеризации / репликации в Ubuntu 16.04 / 18.04 и CentOS 7. Мы продемонстрировали, как добавить HTTP-сервис Nginx в кластер. Если у вас есть какие-либо мысли или вопросы, используйте форму обратной связи ниже.