ELMA365 On-Premises > Дополнительно > Deprecated ELMA365 в MicroK8s / Кластер ELMA365 в MicroK8s

Кластер ELMA365 в MicroK8s

начало внимание

В статье приведены инструкции для устаревшего варианта поставки ELMA365 On-Premises in MicroK8s с базой данных PostgreSQL 10. Её поддержка осуществляется до версии системы 2024.4. Обновление поставки и базы данных недоступно. Выполните переход на актуальный вариант поставки ELMA365 On‑Premises.

конец внимание

Исходные данные

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

Прозрачное взаимодействие между серверами достигается применением готового решения https://microk8s.io.

начало внимание

Минимальное количество серверов для организации кластера 3.

конец внимание

В этом примере используется три узла со следующими hostname и IP-адресами:

  • elma365-1, 192.168.1.51
  • elma365-2, 192.168.1.52
  • elma365-3, 192.168.1.53

Шаг 1: Установка ELMA365

Для установки нужно использовать команду (обратите внимание на параметр -e enterprise):

curl -fsSL -o elma365-microk8s.sh https://dl.elma365.com/onPremise/latest/elma365-microk8s-latest && \
chmod +x elma365-microk8s.sh && \
./elma365-microk8s.sh -e enterprise

Адреса для загрузки других версий ELMA365 перечислены в статье «Ссылки для скачивания дистрибутивов ELMA365».

Во время установки будет задан ряд вопросов. На шаге с вопросом Use custom connection string вы можете подключить распределенные базы данных. Выберите внешние сервисы: PostgreSQL, MongoDB, S3, Redis, RabbitMQ и укажите строки подключения к ним: hostname, port, username, password.

Шаг 2: Масштабирование узлов

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

На основной рабочей ноде (сервере, где уже установлена система) выполнить команду:

sudo elma365ctl add-node

Она выведет в ответ список команд в следующем формате:

From the node you wish to join to this cluster, run the following:
microk8s join 192.168.1.230:25000/92b2db237428470dc4fcfc4ebbd9dc81/2c0cb3284b05

Эти команды надо выполнить на другом сервере, который вы собираетесь добавлять в кластер.

Для каждого нового сервера нужно повторять вызов add-node, так как он генерирует уникальный одноразовый ключ для присоединения сервера.

Добавление серверов в кластер нужно производить последовательно по одному серверу за раз.

Шаг 3: Автомасштабирование сервисов и Linkerd

Подробнее читайте в статье «Автомасштабирование и Linkerd».

Включить/отключить автомасштабирование можно в процессе установки, обновления или реконфигурации приложения ELMA365. После включения автомасштабирования потребуется указать минимальное и максимальное количество реплик приложения.

На шаге включения автомасштабирования, автоматически подключается сервис Linkerd.

Ручное масштабирование сервисов с помощью команды elma365ctl scale недоступно при включенном автомасштабирований.

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

Шаг 4: Ручное масштабирование сервисов

Для масштабирования всех сервисов одновременно между 3 узлами воспользуйтесь командой:

sudo elma365ctl scale all 3

Можно масштабировать отдельные сервисы следующей командой:

sudo elma365ctl scale service_name replica_count 

где:

  • service_name — название сервиса;
  • replica_count — количество реплик, в которые должен масштабироваться указанный сервис.

Например, команда elma365ctl scale main 2 запустит сервис main в две реплики (копии).

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

Шаг 5: Режим высокой доступности

Для данного режима требуется не менее трех узлов в кластере. После добавления всех узлов в кластер на любом узле необходимо выполнить реконфигурацию приложения. На шаге «Enable high availability mode?» включите режим высокой доступности:

elma365ctl reconfigure

Укажите необходимое количество реплик для масштабирования системных сервисов кластера (допускается не менее трех), а также время в секундах для выселения сервисов приложения с неисправных узлов на рабочие (допустимое значение от 10 до 300).

После необходимо обновить настройки на каждом узле кластера, включая тот, на котором производилась конфигурация приложения, следующей командой:

sudo elma365ctl update-hamode

Обновление настроек на узлах кластера нужно производить последовательно по одному серверу за раз, узлы будут перезапущены.

По завершении перезапустите все сервисы приложения, выполнив разово команду с любого узла в кластере:

sudo elma365ctl restart

Шаг 6: Конфигурация HAProxy (блок web)

Пример конфигурации для настройки балансировки нагрузки с помощью HAProxy:

listen elma365_web
    bind haproxy-server.your_domain:80
    mode http
    balance leastconn
    no option http-use-htx
    option forwardfor
    option httpclose
    option httpchk HEAD /
    server elma365-1 elma365-1.your_domain:80 check
    server elma365-2 elma365-2.your_domain:80 check
    server elma365-3 elma365-3.your_domain:80 check