Найти тему
Тюнинг Админа

ELMA365 Standard на Ubuntu 24.04LTS

Оглавление

Это вторая по счету статья по ELMA365, была попытка с моей стороны предложить руководству запустить параллельно Odoo и выполнить постепенный переход на это более дружелюбное и открытое решение, но пока что есть то есть и приходится поддерживать текущее решение в режиме non-stop, без участия коммерческой техподдержки. Это пока черновой вариант статьи переписываемый по ходу выполнения перехода со старых рельсов (Версия 2023.10.44 - Microk8s) на новые (Версия 2024.4.15 - KinD - Kubernetes in Docker).

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

Содержание статьи

  • Системные требования
  • Рекомендации от автора по подготовке сервера
  • Установка Ubuntu server 24.04
  • Обновление системы и установка ПО
  • Регистрация доменного имени и записи типа A в DNS и проброс портов на маршрутизаторе.
  • Добавляем и настраиваем репозиторий Docker
  • Устанавливаем Docker
  • Установка Elma365 Standard
  • Обновление продукта
  • Получение сертификата L'ets Encrypt
  • Перенос на другой сервер
  • Администрирование сервера
  • Рекомендации по снятию дампа, бэкапу и восстановлению данных
  • Проверка запуска сервисов.
  • Как сделать дамп баз и сбор диагностической информации для отправки в техподдержку
  • Геолокация, оставляем доступ только из России и Белоруссии.
  • Вывод
  • Бонус: Советы и Рекомендации

Системные требования.

Минимальные, реальные требования к железу при установке без гипервизора как прослойки таковы:

  • Процессор 4 ядра intel от 2Ггц.
  • оперативная память от 16Гб.
  • 2 жестких диска sata в raid1 -- рекомендовано для установки Элмы не менее 50гб жесткий диск не считая системы.

Вам этой конфигурации хватит вполне до 50 пользователей.

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

- Процессор 6 ядер intel от 2Ггц.

- оперативная память от 24Гб.

- дисковый массив ssd в raid1

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

- Процессор 8 ядер intel Xeon от 2Ггц.

- оперативная память от 32Гб.

- дисковый массив m2 ssd или pci-express в raid1

Опять же всё упирается в размер базы данных и файлового хранилища.

Рекомендации от автора по подготовке сервера

Само по себе решение достаточно не простое и тяжёлое так как включает в себя достаточно большое количество микро сервисных процессов в контейнерах для работы с соцсетями и мессенджерами, а так же для снятия дампа происходит остановка всех процессов elma, рекомендую ставить прослойку в виде гипервизора, что реально облегчит вам жизнь, чем именно спросите вы, перечислю:

1) Снятие бэкапа целиком виртуальной машины без остановки её работы.

2) Разворачивание целиком виртуальной машины вдвое быстрее загрузки и распаковки дампа средствами Элмы.

3) Можно делать Snapshotы и быстро откатывать систему.

4) Для бэкапов можно использовать абсолютно любой nas/шара или облако при этом не нужно дополнительное ПО на самой Элме.

В качестве гипервизора автор использует Proxmox.

ВНИМАНИЕ: Если вы используете гипервизор Proxmox ниже 8 версии, то он не поддерживает AVX инструкции процессора необходимые для MongoDB 5.0+

В разделе Оборудование --> Процессоры --> необходимо выбрать режим хоста

-2
-3

Установка Ubuntu server 24.04

Кратко в скриншотах пробежимся по этапу установки системы

  • выбор языка
-4
  • Раскладка клавиатуры автоматически определяется
-5

Соглашаемся с выбранной по умолчанию национальной раскладкой

-6
  • Выбираем стандартный установочный образ
-7
  • Настраиваем сеть
-8
-9
-10
  • Прокси не нужен, пропускаем настройку
-11
  • Зеркало оставляем по умолчанию
-12
  • Настройка диска, я предпочитаю расширенную настройку
-13
  • У меня виртуальная машинка, поэтому RAID я настраивать не буду и выбираю free space, чтобы создать раздел и нажимаю Enter
-14

Если у вас два диска и вы устанавливаете Ubuntu на голое железо, то рекомендую создать софтовый raid, выбрав пункт "Create software RAID (md)"

  • Выбираем добавить GPT партицию
-15
  • Не пишем объем а нажимаем Создать, система по умолчанию использует все пространство.
-16
  • У вас должно получиться следующее, нажимаем Готово
-17
  • Предупреждение перед форматированием, выбираем продолжить
-18
  • Создание учетной записи в системе и задание имени сервера
-19
  • Сейчас установщик предлагает вам использовать Ubuntu Pro с платной расширенной подпиской, ничего не меняя нажимаем продолжить
-20
  • Выбираем галочкой установить OpenSSH сервер, он нам потребуется для удаленного администрирования сервера
-21
  • На этом шаге ничего выбирать не нужно
-22
  • Ждем окончание установки
-23
  • Все установка завершена, можно перезагружать машинку.
-24
-25

Обновление системы и установка ПО

Для начала повышаем права пользователя: sudo -s

Обновление зависимостей пакетной базы и репозитория:

apt update

Обновление системы:

apt upgrade -y

Для работы нам потребуется nano, net-tools, mc:

apt install net-tools mc -y

где net-tools - пакет сетевых утилит, а mc - Midnight Commander текстовый двухпанельный файловый менеджер

Регистрация доменного имени и записи типа A в DNS и проброс портов на маршрутизаторе.

Прежде чем продолжить рекомендую зарегистрировать доменное имя если у вас его нет, https://domains.nethouse.ru/ хороший хостинг с очень быстрым обновлением корневых записей, тот же reg.ru можно часами ждать когда обновятся корневые записи, а про ошибки связанные с обновлением статистики адресного пространства и геолокации вообще молчу, на 2ip.ru ваш ip адрес может по геолокации определяться как Россия с точностью координат, а на reg.ru как Казахстан, а в связи с санкциями и ограничительными мерами, ваш сайт не будет работать у клиентов.

После регистрации имени добавьте запись А "имя_сервера.ваш_домен.ru" - внешний статический ip адрес:

-26

Для доступа к Элме из глобальной сети необходимо пробросить порты 80, 443 на нашем маршрутизаторе. Для этого добавляется правило Firewall: источник WAN - внешний интерфейс, порты 80,443, DNAT ip адрес локального сервера с Элмой.

Установка Elma365 Standard

Прежде чем начать установку, нужно иметь представление, где и что хранится в ELMA365 и в каком составе:

  • PostgreSQL — в базе данных хранятся основные данные системы: пользователи, элементы приложений, настройки приложений, разделов, процессы, страницы, виджеты, задачи, события и другие настройки конфигурации;
  • MongoDB — в базе данных хранятся неструктурированные системные настройки, данные чатов и ленты;
  • S3 Object Storage — в объектном хранилище находятся загружаемые и создаваемые в ELMA365 файлы любого типа и объема, такие как документы, фотографии, аудио и видео файлы.

Вот мы и подошли к главному вопросу установки, предварительно для повышения привилегий выполните команду:

sudo -s

Если требуется переименовать сервер выполняем командой:

hostnamectl set-hostname elma

Добавляем и настраиваем репозиторий Docker

Добавляем официальные GPG key:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc


Добавляем репозиторий:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновляем информацию о пакетах в репозиториях:

apt update

Устанавливаем Docker

Приступаем:

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Проверяем статус службы:

systemctl status docker

-27

Отлично двигаемся дальше

Установка Elma365 Standard

Скачиваем установочный скрипт:

curl -fsSL -o elma365-installer-docker.sh https://dl.elma365.com/onPremise/master/latest/installer-docker

Делаем скрипт исполняемым:
chmod +x elma365-installer-docker.sh

Рядом с установочным скриптом лежит config-elma365.txt - это файл-ответов для первичной настройки Elma365, который достаточно хорошо задокументирован. Если у вас новая инсталляция, то для начала заполним этот файл:

nano config-elma365.txt

###############################################################
# ОСНОВНЫЕ ПАРАМЕТРЫ УСТАНОВКИ #
###############################################################
# Базовый URL — локальное доменное имя (FQDN) или IP адрес сервера

ELMA365_HOST=elma.company.ru

# -------------------------------------------------------------------------------------------
# Реквизиты входа суперпользователя
# -------------------------------------------------------------------------------------------
# Укажите логин и пароль для входа главного администратора.

ELMA365_EMAIL=admin@company.ru
ELMA365_PASSWORD=P@ssw0rd


# -------------------------------------------------------------------------------------------
# Выберите язык интерфейса системы
# -------------------------------------------------------------------------------------------
# Укажите один из вариантов: "ru-RU", "en-US".

ELMA365_LANGUAGE=ru-RU

# -------------------------------------------------------------------------------------------
# Выберите редакцию
# -------------------------------------------------------------------------------------------
# Укажите один из вариантов: "standard", "enterprise".

ELMA365_EDITION=standard

# -------------------------------------------------------------------------------------------
# Настройте соединение с smtp сервером
# -------------------------------------------------------------------------------------------
# Укажите параметры для подключения к SMTP серверу согласно настройкам вашего почтового сервера.
# Используется для отправки приглашений новым пользователям, восстановления паролей, отправки уведомлений.

ELMA365_SMTP_HOST=smtp.company.ru
ELMA365_SMTP_PORT=465
ELMA365_SMTP_FROM=elma@company.ru
ELMA365_SMTP_USER=elma@company.ru
ELMA365_SMTP_PASSWORD="P@ssw0rd"
ELMA365_SMTP_TLS=true

# -------------------------------------------------------------------------------------------
# Настройка TLS шифрования
# -------------------------------------------------------------------------------------------
# Укажите путь к SSL сертификату для домена и закрытому ключу для включения поддержки HTTPS c использованием
# SSL сертификата.
# Укажите путь к сертификату корневого CA при использовании самоподписанного сертификата.
# Внимание! В качестве базового URL укажите доменное имя, при указании IP, HTTPS работать не будет.
# Убедитесь что SSL сертификат fullchain.
# Сертификаты можно подсунуть позже
#ELMA365_TLS_CRT=/etc/ssl/example.crt
#ELMA365_TLS_KEY=/etc/ssl/example.key
#ELMA365_TLS_CA=/etc/ssl/certs/exampleRootCA.pem

###############################################################
# ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ УСТАНОВКИ #
###############################################################
# Настройки подключения к внешним базам данных
# Вы можете использовать внешние компоненты для более удобного администрирования и резервного копирования.

#ELMA365_DB_PSQL=postgresql://user:password@hostname:5432/databaseName
#ELMA365_DB_PSQL_RO=postgresql://user:password@hostname:5432/databaseName
#ELMA365_DB_MONGO=mongodb://user:password@hostname:27017/databaseName
#ELMA365_DB_REDIS=redis://user:password@redis.local:6379/databaseName
#ELMA365_DB_AMQP=amqp://user:password@hostname:5672/vhost

# -------------------------------------------------------------------------------------------
# Настройки подключения к S3 хранилищу файлов
# -------------------------------------------------------------------------------------------
# Укажите параметры для подключения к S3 и резервного копирования.
# Включите проксирование подключения к внешнему S3 (раскомментировать параметр ELMA365_DB_S3_GATEWAY), если
# сервер S3 изолирован в локальной сети. Для этого необходимо предварительно заполнить параметры
# ELMA365_DB_S3_* для подключения к s3.
# Укажите в параметре ELMA365_DB_S3_DUMP_URL адрес S3 для резервного копирования в формате, если S3 в Kubernetes-кластере
# http(s)://minio.<namespace>.svc.<cluster.local>, для внешнего S3 формат http(s)://example.ru:9000

#ELMA365_DB_S3_ADDRESS=example.ru:9000
#ELMA365_DB_S3_BUCKET=s3elma365
#ELMA365_DB_S3_USER=user
#ELMA365_DB_S3_PASSWORD=password
#ELMA365_DB_S3_REGION=us-east-1
#ELMA365_DB_S3_METHOD=PUT
#ELMA365_DB_S3_SSL=false
#ELMA365_DB_S3_VIRTUAL_HOSTED_STYLE=false
#ELMA365_DB_S3_DUMP_URL=https://example.ru:9000
#ELMA365_DB_S3_GATEWAY=true

# -------------------------------------------------------------------------------------------
# Настройка директорий для установки системы и создания резервных копий
# -------------------------------------------------------------------------------------------
# Укажите директорию для установки системы и создания резервных копий.
# В случае установки приложения Docker через Snap, директории необходимо сменить на /mnt или /media
# (например /mnt/elma365/docker и /mnt/elma365/backup).

ELMA365_INSTALL_DIR="/opt/elma365/docker"
ELMA365_BACKUP_DIR="/backup"


# -------------------------------------------------------------------------------------------
# Настройка hostalias
# -------------------------------------------------------------------------------------------
# При установке системы с указанием доменного имени в DNS сервере должна быть соответствующая ААА запись
# "myelma365.com" <-> "IP адрес машины с ELMA365". При этом проверяется возможность соединения по этому
# домену из среды kubernetes для корректной работы сервиса diskjockey. В случаях если это невозможно —
# необходимо включить hostalias для его корректной работы (раскомментировать параметр ELMA365_HOSTALIASES_IP).

ELMA365_HOSTALIASES_IP=172.29.0.13

# -------------------------------------------------------------------------------------------
# Настройка режима работы сервера ELMA365 за прокси HTTPS
# -------------------------------------------------------------------------------------------
#ELMA365_PROXY_WITH_SSL=true

# -------------------------------------------------------------------------------------------
# Настройка режима работы сервера ELMA365 через прокси-сервер
# -------------------------------------------------------------------------------------------
#HTTPS_PROXY=http://proxy_user:proxy_pass@host:port/
#HTTP_PROXY=http://proxy_user:proxy_pass@host:port/
#NO_PROXY=localhost,example.com,127.0.0.0/8,10.0.0.0/8,169.254.0.0/16,192.168.0.0/16,100.64.0.0/10,172.16.0.0/12,cluster.loca>
#https_proxy=http://proxy_user:proxy_pass@host:port/
#http_proxy=http://proxy_user:proxy_pass@host:port/
#no_proxy=localhost,example.com,127.0.0.0/8,10.0.0.0/8,169.254.0.0/16,192.168.0.0/16,100.64.0.0/10,172.16.0.0/12,cluster.loca>

# -------------------------------------------------------------------------------------------
# Настройки для приватного репозитория Docker-образов
# -------------------------------------------------------------------------------------------
# Укажите адрес приватного репозитория, используется при запуске установочного скрипта с ключом --offline.
# При необходимости включите создание локального приватного репозитория, для которого можно изменить директорию
# и порт (по умолчанию - 5000). В случае установки приложения Docker через Snap, директорию необходимо сменить
# на /mnt или /media (например /mnt/elma365/registry). При включении локального приватного репозитория,
# укажите IP адрес машины с ELMA365 и порт в параметре ELMA365_PRIVATE_REGISTRY_URL

#ELMA365_PRIVATE_REGISTRY_URL=example-registry.com:5000
#ELMA365_PRIVATE_REGISTRY_CREDS=user:password
#ELMA365_LOCAL_PRIVATE_REGISTRY_ENABLE=true
#ELMA365_LOCAL_PRIVATE_REGISTRY_PORT=5000
#ELMA365_LOCAL_PRIVATE_REGISTRY_DIR=/opt/elma365/registry

# -------------------------------------------------------------------------------------------
# Проброс портов к БД внутри docker
# -------------------------------------------------------------------------------------------
# Проброс локальных портов на порт в подах к БД PostgreSQL, MongoDB, RabbitMQ UI, Redis, S3
# Открытые порты для доступа к СУБД должны иметь более высокую защиту от несанкционированного доступа,
# настроенными правилами брандмауэра, ограничивающие доступ только с определенных адресов.

#ELMA365_PORT_FORWARD_PSQL=5432
#ELMA365_PORT_FORWARD_MONGO=27017
#ELMA365_PORT_FORWARD_AMQP=15672
#ELMA365_PORT_FORWARD_REDIS=6379
#ELMA365_PORT_FORWARD_S3=9000

# -------------------------------------------------------------------------------------------
# Режим отладки платформы
# -------------------------------------------------------------------------------------------

#ELMA365_DEBUG=true

# -------------------------------------------------------------------------------------------
# Включение дополнительных параметров (указывать в формате "exampleArgs1:'111' exampleArgs2:'true' exampleArgs3:22m")
# -------------------------------------------------------------------------------------------

#ELMA365_EXTRA_ARGS="ELMA365_MAX_GRPC_MESSAGE_SIZE:'8388608' ELMA365_SCRIPT_COMPILE_TTL:4m"

# -------------------------------------------------------------------------------------------
# Включение дополнительных feature flags (указывать в формате "exampleFlags1","exampleFlags2")
# -------------------------------------------------------------------------------------------

#ELMA365_ENABLED_FEATUREFLAGS="allowPortal","enableModuleServices"

# -------------------------------------------------------------------------------------------
# Включение модуля Аудит безопасности
# -------------------------------------------------------------------------------------------
# Если параметр ELMA365_AUDIT_PSQL_URL не задан, используется встроенная база данных PostgreSQL. В случае, если
# в параметре ELMA365_DB_PSQL задана строка подключения к PostgreSQL, необходимо также в параметре ELMA365_AUDIT_PSQL_URL
# указать строку подключения к PostgreSQL. Модуль использует PostgreSQL для которого требуется установка расширений
# uuid-ossp и pg_trgm, подробнее о необходимой конфигурации PostgreSQL читайте в разделе «Базы данных».
# URL сервиса внутри кластера: http://audit.audit.svc:3000.

#ELMA365_AUDIT=true
#ELMA365_AUDIT_PSQL_URL=postgresql://user:password@hostname:5432/databaseName

Сохраняем файл и выходим из редактирования:

CTRL+O, CTRL+X

Запускаем скрипт:
./elma365-installer-docker.sh

-28

Проверяем доступность Вэб интерфейса:

-29

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

-30

Обновление продукта

Для обновления до последней версии выполняется с помощью скрипта скаченного из директории latest вэб сервера Elma.

Скачиваем скрипт:

curl -fsSL -o elma365-installer-docker.sh https://dl.elma365.com/onPremise/master/2024.3.24/installer-docker

Делаем скрипт исполняемым:
chmod +x elma365-installer-docker.sh

Запускаем скрипт установки с ключом --upgrade:

./elma365-installer-docker.sh --upgrade

После запуска скрипт определит версию установленной ELMA365 Standard (KinD - Kubernetes in Docker) и предложит перейти на новую версию.

В случае обновления актуальная (latest) версия ELMA365 Standard (KinD) должна быть выше обновляемой (текущей).

Согласитесь с переходом на новую версию, прописав символ [Y]. Указание любого другого символа прервёт обновление приложения.

-31

Вы увидите оповещение о необходимости создания резервной копии перед обновлением ELMA365 Standard (KinD).

Для продолжения обновления приложения введите один из вариантов:

  • [B] — создание резервной копии (Backup);
  • [С] — пропустить создание резервной копии (Continue);
  • [E] — прервать обновление приложения (Exit).
  1. Создайте резервную копию и продолжите обновление ELMA365 Standard (KinD), указав символ [B] или нажав клавишу ENTER.

Скрипт установки выполнит резервное копирование и приступит к обновлению приложения.

-32

Обновление ELMA365 Standard (KinD) завершено.

!!!!! Начинается редактируемый Материал !!!!!

Получение сертификата L'ets Encrypt

Let's Encrypt предоставляет бесплатные SSL-сертификаты для ваших веб-сайтов. Получить сертификаты можно при помощи утилиты Certbot, для этого потребуется публичный (белый) IP проброшенный 80,443 порт через маршрутизатор.

Certbot — это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет легко создавать SSL-сертификаты Let’s Encrypt на сервере Linux.

Если Elma365 уже установлена на сервере, необходимо остановить сервисы Elma365:

elma365ctl stop

Необходимо проверить свободен ли порт 80:

netstat -an | grep ':80'

Есть несколько способов установки Certbot на Ubuntu, но сегодня мы остановимся на установке с использованием PPA.

Для начала нам следует установить необходимое для работы с PPA ПО:

apt install software-properties-common

Следующим шагом добавим необходимый PPA:

add-apt-repository ppa:certbot/certbot

Обновим список пакетов:

apt update

Установим Certbot:

apt install certbot

Для прохождения регистрации необходимо выполнить следующую команду.

certbot register -m admin@company.ru

После прохождения регистрации переходим к основному действию - к получению сертификата.

certbot certonly --standalone --register-unsafely-without-email --agree-tos -d www.company.ru

В случае успешного выполнения команды вы получите сообщение с путями сертификата и ключа: копируем пути до этих сертификатов

Запускаем реконфигурацию Elma:

elma365ctl reconfigure

Скрипт пробежится по пунктам конфигурации:

? Select language for Elma365 Russian -- нажимаем Enter

? SMTP server (type '<empty>' to leave blank) [? for help] -- нажимаем Enter, так как мы не будем менять этот параметр.

? SMTP port [? for help] (25)-- нажимаем Enter, так как мы не будем менять этот параметр.

? TLS enable [Use arrows to move, type to filter, ? for more help]

> Yes -- используем TLS

? SMTP username for sending messages (type '<empty>' to leave blank)-- нажимаем Enter, так как мы не будем менять этот параметр.

? SMTP password (type '<empty>' to leave blank) -- вносим новый пароль от ящика

? From email for sending messages (type '<empty>' to leave blank) [? for help] (ELMA365 <elma.ru>-- нажимаем Enter, так как мы не будем менять этот параметр.

? Check connection to SMTP server? N - нет проверять не будем

? Enter ELMA365 domain name or IP address elma.ru -- нажимаем Enter, так как мы не будем менять этот параметр.

? Enable HTTPS for elma.ru Yes -- естественно включаем https

? Specify a path to the private key -- Вставляем путь сертификата /etc/letsencrypt/live/elma.ru/privkey.pem -- нажимаем Enter, чтобы продолжить

? Specify a path to the certificate -- Вставляем путь сертификата /etc/letsencrypt/live/elma.ru/fullchain.pem -- нажимаем Enter, чтобы продолжить

? Enable root CA certificate for HTTPS? NO -- нам не нужны корневые центры сертификации.

? Turn on hostaliases? (usually needed in private networks) Yes -- Выбирайте Да иначе у вас отвалится хранилище S3.

? Enable platform debug mode? N -- Включение Debug режима, нам режим отладки не нужен.

Итого у нас получается следующая картина

-33

После реконфигурации системы, сервисы автоматически перезапустятся.

При обновлении сертификатов вручную, выполняем реконфигурацию

Здесь можно посмотреть актуальность вашего сертификата:

https://www.ssllabs.com/ssltest/index.html

Действия при обновлении сертификатов

Останавливаем Elma:

elma365ctl stop

Проверяем статус портов, 80-й должен быть не активен:

netstat -tulpn | grep LISTEN

Выполняем запрос на обновление сертификатов:

certbot renew

Проверка валидности сертификатов в системе, после обновления вручную:

certbot certificates

-34

Копируем себе пути к сертификатам

Резервное копирование и восстановление

Резервное копирование и восстановление данных ELMA365 Standard

Резервное копирование данных ELMA365 Standard (KinD) должно выполняться в составе:

PostgreSQL — в базе данных хранятся основные данные системы: пользователи, элементы приложений, настройки разделов и приложений, бизнес‑процессы, страницы, виджеты, задачи, события и другие настройки конфигурации;

MongoDB — в базе данных хранятся неструктурированные системные настройки, данные чатов и ленты;

S3 Object Storage — в объектном хранилище находятся загружаемые и создаваемые в ELMA365 файлы любого типа и объёма, такие как документы, фотографии, аудио- и видеофайлы. Резервное копирование данных ELMA365 Standard (KinD) Во время создания резервной копии сервисы ELMA365 Standard (KinD) останавливаются, приложение становится недоступным.Остановите приложение ELMA365 Standard, выполнив команду:

./elma365-installer-docker.sh --stop

Для создания резервной копии баз данных запустите скрипт установки elma365-installer-docker.sh с ключом --dump:

./elma365-installer-docker.sh --dump

Пример выполнения скрипта установки с ключом --dump:

По окончании резервного копирования вы увидите сообщение об успешном создании дампа. Дамп сохранится в отдельную папку с указанием в названии версии поставки и временного штампа, например, "/backup/ELMA365_2023.2.15_2023.04.10-13.52.26". По умолчанию дампы сохраняются по пути "/backup". Путь к директории, в которую будут сохраняться резервные копий системы ELMA365 Standard (KinD) задаётся в параметре ELMA365_BACKUP_DIR конфигурационного файла config-elma365.txt. О том, как изменить путь сохранения резервных копий, читайте в статье «Изменение параметров ELMA365 Standard».Запустите приложение ELMA365 Standard, выполнив команду:

./elma365-installer-docker.sh --start

Восстановление данных ELMA365 Standard (KinD) Восстановление данных из резервной копии поможет восстановить ELMA365 Standard (KinD) при сбое в работе виртуальной инфраструктуры или выходе из строя физической инфраструктуры. Если восстановление хостовой системы невозможно, установите ELMA365 на новый сервер. Для восстановления:

Остановите приложение ELMA365 Standard, выполнив команду:

./elma365-installer-docker.sh --stop

Восстановите данные из резервной копии. Перед восстановлением убедитесь, что папка с резервной копией расположена непосредственно в папке /backup или в другой папке, указанной в параметрах конфигурационного файла. Пример пути к резервной копии:

/backup/<backup-folder-name>

Не поддерживается восстановление данных из папок с более глубоким уровнем вложенности, например /backup/elma365/<backup-folder-name>.

Чтобы восстановить данные, запустите скрипт установки с ключами --restore и --path /backup/<backup-folder-name>:

./elma365-installer-docker.sh --restore --path /backup/<backup-folder-name>

Пример выполнения скрипта установки с ключами --restore и --path /backup/<backup-folder-name>:

По окончании восстановления данных из резервной копии вы увидите сообщение об успешном восстановлении. Запустите приложение ELMA365 Standard, выполнив команду:

./elma365-installer-docker.sh --start

-35

Подключение NFS хранилища

Устанавливаем nfs клиента:

apt install nfs-common

Монтируем сетевую папку к нашему каталогу:

mount ip_адрес_nfs:/backup/elma /backup

Добавляем монтирование NFS каталога в автозагрузку:

nano /etc/fstab

ip_адрес_nfs:/backup/elma /backup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Перенос на другой сервер

Для переноса ELMA365 на другой сервер необходимо:

  • Выполняем резервное копирование виртуальной машины для предотвращения возможной потери данных.
  • Выполняем снятие дампа с баз данных:
    elma365ctl dump
  • Перенесите дамп из папки /backup/ на новый сервер, удобнее это сделать через NFS хранилище, что мы собственно и сделали примонтировав к этому каталогу папку на NFS сервере или через WinSCP, после этого вырубаем сервер.
  • Устанавливаем ELMA365 на новый сервер.
  • Примонтируем папку на NFS хранилище к каталогу /backup или через WinSCP копируем дамп на сервер.
  • Восстанавливаем данные с помощью команд по очереди:

elma365ctl restore --path=/backup/Папка_с_дампом --parts=postgres

elma365ctl restore --path=/backup/Папка_с_дампом --parts=mongo,s3

Администрирование сервера

Администрирование ELMA365 Standard

Обновление сертификатов для кластера Kubernetes
В процессе обновления ELMA365 Standard выполняется автоматическое обновление сертификатов кластера Kubernetes. Также вы можете запустить обновление вручную, выполнив команду установки с ключом --renew-certs-k8s.

./elma365-installer-docker.sh --renew-certs-k8s

Переустановка ELMA365 Standard
Для повторной установки ELMA365 запустите скрипт установки с ключом --reset.Для установки через интернет:sudo ./elma365-installer-docker.sh --resetДля офлайн-установки без доступа в интернет:sudo ./elma365-installer-docker.sh --offline --resetПри запуске скрипта все данные, хранящиеся в ELMA365 Standard (KinD), будут удалены.Зачистить узел для последующей установки ELMA365 Standard
Для очистки хостового узла для последующей установки ELMA365 Standard (KinD) запустите скрипт установки с ключом --delete:

./elma365-installer-docker.sh --delete

Диагностика и решение проблем
Сбор диагностической информации.
Для корректного сбора диагностической информации о состоянии сети скрипту необходима утилита
net-tools. Для сбора диагностической информации о состоянии системы запустите скрипт установки elma365-installer-docker.sh с ключом --diag:

./elma365-installer-docker.sh --diag

После запуска скрипт установки определит версию установленной ELMA365 Standard (KinD) и предложит выбрать метод сохранения диагностики. Для продолжения сбора диагностики введите один из вариантов:

[S] — cобрать и загрузить диагностическую информацию на сервер ELMA365.
Скрипт установки вернёт ссылку для скачивания диагностической информации. Пример ссылки:
https://nc.elma365.tech/iuq1fg.txt.[F] — собрать и сохранить в файл на локальный диск.
Скрипт установки вернёт путь до файла с диагностической информацией, например,
/root/elma365-2023.2.15/elma365-diagnostic-20230410-142556. Далее скрипт установки соберёт диагностическую информацию. Формирование логов и проверка статуса сервисов. Для получения логов с сервисов приложения выполните команду:

docker exec elma365 kubectl logs -l tier=elma365 --all-containers > logs.txt

Чтобы просмотреть логи отдельного сервиса, укажите вместо [name] нужный сервис:

docker exec elma365 kubectl logs -l app=[name]

Пример:

docker exec elma365 kubectl logs -l app=main

Для просмотра логов в реальном времени добавьте опцию -f.

Пример:

docker exec elma365 kubectl logs -l app=main -f

Чтобы проверить состояния сервисов, выполните команду:

docker exec elma365 kubectl get pod

Результат выведется в виде таблицы со списком сервисов. Сервисы должны быть в статусе Running, а задачи — в статусе Completed.

жно Список доступных команд elma365-installer-docker.sh
Чтобы просмотреть список доступных команд, запустите скрипт установки с ключом --help:

./elma365-installer-docker.sh --help

Доступные команды:

--new-config

Создание нового файла конфигурации установки config-elma365.txt

--diag

Сбор диагностической информации

--install

Установка ELMA365

--offline

Офлайн-установка ELMA365

--upgrade

Обновление ELMA365

--stop

Остановка приложения ELMA365

--start

Запуск приложения ELMA365

--dump

Бэкап БД в папку /backup/ELMA365 с версией и временным штампом

--restore

Восстановление бэкапа БД из архива

--reset

Переустановка ELMA365 (все данные будут удалены)

--delete

Удаление ELMA365 (все данные будут удалены)

Для администрирования сервера необходимо использовать утилиту elma365ctl. С её помощью можно:

  • Реконфигурировать приложение
  • Создавать резервную копию данных
  • Восстановить базу данных из архива
  • Масштабировать сервисы и многое другое.

Чтобы запустить утилиту, зайдите в командную консоль на сервере. Затем выполните следующую команду:

elma365ctl

Вы увидите список доступных команд, с помощью которых можно:

  • reconfigure --- Запустить реконфигурацию и изменить параметры приложения
  • reload-cert --- Обновление сертификатов
  • HTTPSset-dns --- Установка новых DNS серверов в кластер
  • dump --- Сохранить данные в папку /backup с временным штампом
  • restore --- Восстановить БД из архива
  • restore --prepare --- Остановка приложения ELMA365 для подготовки к восстановлению или бекапу
  • update-hamode --- Обновление настроек узла режима высокой доступности с последующим перезапуском кластера (только для версии Enterprise)
  • start --- Запуск приложения
  • ELMA365stop --- Остановка приложение ELMA365(полная остановка и запуск занимает значительное время)
  • restart --- Перезапуск приложение ELMA365 и сервисов кластера
  • scale --- Масштабировать указанный сервис(только для версии Enterprise)
  • add-node --- Добавить новый сервер в вычислительный кластер (только для версии Enterprise)
  • leave-node --- Вывести узел из вычислительного кластера (только для версии Enterprise)
  • delete-node --- Удалить узел из вычислительного кластера (только для версии Enterprise)
  • repair --- Починить зависимости установленного экземпляра ELMA365 в вычислительном кластере
  • version --- Показать версию приложения
  • add-service --- Добавить сторонний сервис
  • expose-service --- Сделать сервис доступным по определенному порту
  • delete-service --- Удалить сторонний сервис
  • featureflag --- Включить

elma365ctl featureflag <flagName> enable elma365ctl featureflag <flagName> disable

Регистрация Elmы

Регистрация постоянной лицензии происходит через вашего менеджера, либо триальная при входе на ВЭБ страничку с Элмой на вашем сервере будет форма регистрации.

Обновление Elmы

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

Переходим в консоль и повышаем наши права в системе:

sudo -s

Обновление версий Mikrok8S и Upgrade до KinD

Порядок поэтапного обновления рассмотрю на примере перехода с версии Elma365 microk8s 2023.10.44 до 2024.04.15 и апгрейд до Elma365 KinD 2024.04.15

Обновление с версии 2023.10.44 до 2023.10.45:

curl -fsSL -o elma365-installer.sh https://dl.elma365.com/onPremise/master/2023.10-latest/download && chmod +x elma365-installer.sh && ./elma365-installer.sh

-36

Проверяем запущенные процессы:

microk8s kubectl get pod

У всех процессов статус должен быть Running

После каждого обновления выполняйте проверку

Обновление с версии 2023.10.45 до 2023.11.56:

curl -fsSL -o elma365-installer.sh https://dl.elma365.com/onPremise/master/2023.11-latest/download && chmod +x elma365-installer.sh && ./elma365-installer.sh

Материал редактируется

Рекомендации по снятию дампа, бэкапу и восстановлению данных

Резервное копирование ELMA365 должно выполняться в составе:

  • PostgreSQL — в базе данных хранятся основные данные системы: пользователи, элементы приложений, настройки приложений, разделов, процессы, страницы, виджеты, задачи, события и другие настройки конфигурации;
  • MongoDB — в базе данных хранятся неструктурированные системные настройки, данные чатов и ленты;
  • S3 Object Storage — в объектном хранилище находятся загружаемые и создаваемые в ELMA365 файлы любого типа и объема, такие как документы, фотографии, аудио и видео файлы.

Полный дамп снимается командой:

elma365ctl dump

Не забывайте про NFS очень упрощает жизнь

Создаем скрипт для снятия Дампа планировщиком заданий:

nano /scripts/Backup_Elma

#!/bin/bash

elma365ctl dump

Делаю скрипт исполняемым:

chmod +x /scripts/Backup_Elma

Автоматизируем бэкап за счет добавления задания планировщику:

nano /etc/crontab ---- Онлайн конфигуратор Crontab https://crontab.guru/

Добавляю в самом низу строчку:

0 22 * * 1-5 root /scripts/Backup_Elma

Бэкап выполняется с понедельника по пятницу в 22:00

Восстановление из бэкапа:

elma365ctl restore --path=/backup/Папка_с_дампом

Проверка запуска сервисов.

Проверка состояния сервисов выполняется с помощью команды:

microk8s kubectl get pod -- Все сервисы должны быть в статусе Running

Если вы перезагружали сервер 10-15 минут назад не спешите паниковать, запускайте эту команду через каждые 2-3 минуты и вы поймете, что сервисы постепенно стартуют.

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

Снимаем дамп только баз данных:

elma365ctl dump --parts=postgres,mongo

Собираем диагностическую информацию:

curl -fsSL -o elma365-diagnostic.sh https://dl.elma365.com/onPremise/elma365-diagnostic.sh && sudo bash ./elma365-diagnostic.sh

Чтобы сохранить информацию на сервер, введите S. Для доступа к данным будет сгенерирована ссылка.

Для сохранения в файл на локальный диск, введите F.

Дамп баз и диагностическую информацию с сервера можно забрать с помощью NFS Хранилища сбросив туда, либо через программу WinSCP.

Геолокация, оставляем доступ только из России и Белоруссии.

Вывод

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

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

Бонус: Советы и Рекомендации

Советы:

1) Увеличьте максимальное количество подключений в postgresql, по умолчанию равно 1000

  • Получаем пароль пользователя postgres:

echo postgres:$(sudo microk8s kubectl get secrets postgres -o jsonpath='{.data.postgresql-password}' | base64 -d)

Копируем в блокнот

  • Подключаемся к контейнеру Postgres и запускаем оболочку:

microk8s kubectl exec -it postgres-0 -- bash

  • Откроем командный интерпретатор postgresql:

psql -h localhost -p 5432 -U postgres -W -d elma365

Вводим пароль из блокнота

  • Увеличиваем максимальное количество подключений командой:

alter system set max_connections = 2000;

ALTER SYSTEM --- увидим в случае успеха

Отключаемся от командного интерпретатора postgresql:

\q

Отключаемся от контейнера postgresql:

Exit

  • Перезапускаем целиком microk8s либо только Postgres:

microk8s stop && microk8s start

microk8s kubectl rollout restart sts postgres