5 Кластер GUI

Кластеризация повышает уровень доступности системы за счет распространения изменений на разные серверы. В случае выхода из строя одного из серверов другие остаются доступными для работы.

Кластеризация dpiui2 реализуется за счет репликации базы данных и файловой системы.

Возможность кластеризации доступна, начиная с версии dpiui2-2.25.9

Репликация базы данных (БД)

Репликация БД реализована с помощью MariaDB Galera Cluster.

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

Дополнительную информацию о Galera можно найти на странице официальной документации.

Репликация файловой системы (ФС)

Репликация файловой системы реализована с помощью GlusterFS.

GlusterFS — это распределённая, параллельная, линейно масштабируемая файловая система с возможностью защиты от сбоев. GlusterFS объединяет хранилища данных, находящиеся на разных серверах, в одну параллельную сетевую файловую систему. GlusterFS работает в пользовательском пространстве при помощи технологии FUSE, поэтому не требует поддержки со стороны ядра операционной системы и работает поверх существующих файловых систем (ext3, ext4, XFS, reiserfs и т. п.).

Дополнительную информацию о GlusterFS можно найти на странице официальной документации

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

Настройки

Все настройки можно произвести в .env файле dpiui2 или в разделе Конфигурация GUI > Настройки кластера.

Параметры настройки:

GALERA_PEER_HOSTS – список хостов кластера Galera через запятую. Параметр определяет, какие узлы будут доступны кластеру Galera .

!Важно: Главный (мастер) узел кластера необходимо поместить вначале списка. Это важно для первоначального развертывания кластера.

CLUSTER_FS_PEER_HOSTS – список хостов кластера GlusterFS через запятую. Параметр определяет, какие узлы будут доступны кластеру GlusterFS.

!Важно: Главный (мастер) узел кластера необходимо поместить вначале списка. Это важно для первоначального развертывания кластера.

CLUSTER_PRIMARY_HOST – главный узел (мастер узел) для Galera и GlusterFS. Параметр определяет главный узел на текущий момент. Данный параметр можно менять в процессе эксплуатации, если главный узел по каким-то причинам выйдет из строя.

Установка и запуск Galera

Для установки и запуска кластера Galera, нужно под пользователем root последовательно на всех узлах кластера, начиная с мастер-узла, выполнить скрипт:

sh "/var/www/html/dpiui2/backend/app_bash/galera_setup.sh" -a init_cluster

!!! Важно: перед запуском скрипта на мастер-узле, необходимо выполнить резервное копирование БД.
! Важно: Перед запуском скрипта необходимо внести настройки
! Важно: между узлами кластера должна быть связанность по IP.
! Важно: Запуск скрипта необходимо выполнять под пользователем root
! Важно: Запуск скрипта необходимо выполнить в первую очередь на мастер узле
! Важно: Необходимо дождаться окончания выполнения скрипта на одном узле, прежде чем запускать его на следующем

Установка и запуск GlusterFS

Для установки и запуска кластера GlusterFS, нужно под пользователем root последовательно выполнить действия:

1

На всех узлах последовательно выполнить скрипт:

sh "/var/www/html/dpiui2/backend/app_bash/glusterfs_setup.sh" -a init_gluster

Скрипт выполнит первоначальную установку GlusterFS. Требуется запуск на всех узлах кластера.

2

На главном (мастер) узле выполнить скрипт:

sh "/var/www/html/dpiui2/backend/app_bash/glusterfs_setup.sh" -a init_peers

Скрипт выполнит настройку всех узлов кластера. Требуется запуск только на мастер узле. На остальных узлах запуск не требуется.

3

На главном (мастер) узле выполнить скрипт:

sh "/var/www/html/dpiui2/backend/app_bash/glusterfs_setup.sh" -a init_volume

Скрипт выполнит настройку распределенного хранилища и файловой системы. Требуется запуск только на мастер узле. На остальных узлах запуск не требуется.

4

На всех узлах последовательно выполнить скрипт:

sh "/var/www/html/dpiui2/backend/app_bash/glusterfs_setup.sh" -a mount

Скрипт выполнит монтирование реплицируемых каталогов к распределенной файловой системе. Требуется запуск на всех узлах кластера.

!!! Важно: перед запуском скрипта на мастер-узле, необходимо выполнить резервное копирование каталога /var/www/html/dpiui2/backend/storage/.
! Важно: Перед запуском скрипта необходимо внести настройки
! Важно: между узлами кластера должна быть связанность по IP.
! Важно: Запуск скрипта необходимо выполнять под пользователем root
! Важно: Необходимо дождаться окончания выполнения скрипта на одном узле, прежде чем запускать его на следующем

Мастер сервер

Важную роль в кластере играет Главный (мастер) сервер.

Мастер сервер устанавливается настройкой CLUSTER_PRIMARY_HOST.

Мастер сервер выполняет всю фоновою работу dpiui2: взаимодействие с оборудованием, синхронизация абонентов, услуг, тарифов и т.д.

Остальные (slave) узлы не выполняют никаких фоновых действий и находятся в режиме ожидания. При этом к эти узлы доступны для работы: пользователи могут работать с этими узлами также как и с мастер сервером и не увидят разницы. Эту опцию можно использовать для балансировки нагрузки, а также для обеспечения более защищённого доступа.

При выходе из строя мастер сервера, необходимо изменить настройку CLUSTER_PRIMARY_HOST и назначить мастером другой сервер.

Перезапуск узлов

Для нормальной работы кластера необходимо 3 узла (3 сервера или виртуальные машины).

При запуске кластера только на 2-х узлах возникнут проблемы с перезапуском узлов.

!!! Важно: не пытайтесь реализовать GlusterFS на только на 2-х узлах. Для кластера необходим 3-й сервер – арбитр. При перезапуске любого из 2-х узлов, вы потеряете данные.

Перезапуск узлов

В штатном режиме вы можете без последствий остановить / перезапустить 1 или 2 сервера одновременно.

Если необходимо остановить все 3 сервера, нужно сделать это последовательно. Желательно мастер узел останавливать последним. Необходимо первым запускать тот сервер, который был остановлен последним.

Если были остановлены все 3 сервера, потребуется инициализировать кластер Galera вручную:

1

Остановите на всех узлах сервер БД. Для этого последовательно выполните команду

systemctl stop mariadb

2

Определите, какой сервер был остановлен последним (доп. информация)

cat /var/lib/mysql/grastate.dat

Найдите узел, у которого safe_to_bootstrap = 1 или наибольший seqno. Для этого узла выполните:

galera_new_cluster

Для остальных узлов выполните:

systemctl start mariadb