Перейти к содержанию

Мультидиспетчер

Описание

Мультидиспетчер - кластер серверов Space Disp, обеспечивающий работоспособность, несмотря на сбои в одном из узлов кластера. Минимальный состав кластера: один узел с ролью db, один узел с ролью leader и два узла с ролью manager.

Один сервер Space Disp поддерживает до 2000 одновременных подключений, с возможностью масштабирования благодаря мультидиспетчеру. В одном кластере может быть от одного до семи серверов.

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

Роли мультидиспетчера

  • DB - база данных (БД), служащая для записи данных (контроллеры, пулы рабочих столов, пользователи и т.д.).
  1. Для базы данных используется отдельный узел, без docker, с установленным PostgreSQL.
  2. База данных не является отказоустойчивой. Пользователь самостоятельно обслуживает и настраивает отказоустойчивость.
  • Leader - узел управления кластером, на нем также запускается экземпляр Space Disp.

  • Manager - узел рабочей нагрузки, на нем также запускается экземпляр Space Disp.

  1. Кластер может состоять из более чем одного Manager.
  2. Общее число узлов (за исключением БД) должно быть нечетным, для полноценной работоспособности.
  3. При "отказе" Leader - один из Manager'ов становится Leader'ом автоматически. Если Leader восстанавливается - то он возвращается в кластер в качестве Manager'a.

Web-интерфейс доступен на адресе любого узла в кластере, если один из узлов недоступен, необходимо перейти на другой доступный.

Установка Мультидиспетчера

IP-адрес!

Для корректной работы необходимо настроить статический IP-адрес.

Установка выполняется скриптом install.sh. Для установки необходимы три хоста с ОС Astra Linux SE 1.7. В качестве хоста может быть использован физический сервер или виртуальная машина.

Наименование!

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

Устанавливаем роль DB

  1. Установить БД (PostgreSQL) на хост с ОС Astra Linux SE 1.7.
  2. Примонтировать iso-образ установочного диска, нажав кнопку Монтировать образ
    • откроется окно Монтирование iso-образа, в котором необходимо выбрать тип хранилища, его наименование и iso-образ установочного диска;
    • для сохранения изменений нажать кнопку Монтировать.
  3. Выполнить команду:
    sudo bash /media/cdrom/install.sh db
    

По умолчанию на БД установлены логин и пароль - vdi - vdi.

Устанавливаем роль Leader

  1. Установить на второй хост с ОС Astra Linux SE 1.7.
  2. Примонтировать iso-образ установочного диска, нажав кнопку Монтировать образ
    • откроется окно Монтирование iso-образа, в котором необходимо выбрать тип хранилища, его наименование и iso-образ установочного диска;
    • для сохранения изменений нажать кнопку Монтировать.
  3. Выполнить команду:
sudo bash /media/cdrom/install.sh multi leader {db_address} {db_port}
# Пример:
sudo bash /media/cdrom/install.sh multi leader 192.168.5.86 5432
  1. Указать адрес хоста БД, а так же порт.
  2. Ввести имя и пароль пользователя БД.

После успешной установки Leader на экран консоли будет выведен token для подключения новых Manager.

image

Устанавливаем роль Manager

  1. Установить на третий хост с ОС Astra Linux SE 1.7.
  2. Примонтировать iso-образ установочного диска, нажав кнопку Монтировать образ
    • откроется окно Монтирование iso-образа, в котором необходимо выбрать тип хранилища, его наименование и iso-образ установочного диска;
    • для сохранения изменений нажать кнопку Монтировать.
  3. Выполнить команду:
    sudo bash /media/cdrom/install.sh multi manager {leader_address} {join_token}
    # Пример:
    sudo bash /media/cdrom/install.sh multi manager 192.168.6.44 SWMTKN-1-3xhz573o9gfz7e78lhm5gyoelmf5jkotwf9d6mtt54tx79wii4-4o13crwblvwidg12nz8v8z5wf
    

Основные команды

Все команды выполняются на любом удобном узле кластера.

  1. Для просмотра списка узлов в кластере необходимо выполнить команду:
sudo docker node ls
# Пример:
# astravdi@astra:~$ sudo docker node ls
# ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
# bhsmn9ezcvkk0zx9ddi7ixxkx *   astra      Ready     Active         Leader           20.10.2+dfsg1
# kbag53ttw46jqurv4p3awhm9g     astra      Ready     Active         Reachable        20.10.2+dfsg1
# ktj7he3mjalu4drr4jhgxg4mw     astra      Ready     Active         Reachable        20.10.2+dfsg1

Leader (главный узел управления в кластере) отмечен символом *.

  1. Для просмотра списка сервисов мультидиспетчера выполняем команду:

    sudo docker stack services multivdi
    

  2. Для просмотра token для подключения новых Manager выполняем команду:

    sudo docker swarm join-token manager -q