начало внимание
В статье приведены инструкции для устаревшего варианта поставки 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