Это вторая по счету статья по 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+
В разделе Оборудование --> Процессоры --> необходимо выбрать режим хоста
Установка Ubuntu server 24.04
Кратко в скриншотах пробежимся по этапу установки системы
- выбор языка
- Раскладка клавиатуры автоматически определяется
Соглашаемся с выбранной по умолчанию национальной раскладкой
- Выбираем стандартный установочный образ
- Настраиваем сеть
- Прокси не нужен, пропускаем настройку
- Зеркало оставляем по умолчанию
- Настройка диска, я предпочитаю расширенную настройку
- У меня виртуальная машинка, поэтому RAID я настраивать не буду и выбираю free space, чтобы создать раздел и нажимаю Enter
Если у вас два диска и вы устанавливаете Ubuntu на голое железо, то рекомендую создать софтовый raid, выбрав пункт "Create software RAID (md)"
- Выбираем добавить GPT партицию
- Не пишем объем а нажимаем Создать, система по умолчанию использует все пространство.
- У вас должно получиться следующее, нажимаем Готово
- Предупреждение перед форматированием, выбираем продолжить
- Создание учетной записи в системе и задание имени сервера
- Сейчас установщик предлагает вам использовать Ubuntu Pro с платной расширенной подпиской, ничего не меняя нажимаем продолжить
- Выбираем галочкой установить OpenSSH сервер, он нам потребуется для удаленного администрирования сервера
- На этом шаге ничего выбирать не нужно
- Ждем окончание установки
- Все установка завершена, можно перезагружать машинку.
Обновление системы и установка ПО
Для начала повышаем права пользователя: 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 адрес:
Для доступа к Элме из глобальной сети необходимо пробросить порты 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
Отлично двигаемся дальше
Установка 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
Проверяем доступность Вэб интерфейса:
У менеджера можно попросить ключ на 10 пользователей для тестирования решения или как в моем случае в качестве ведения доработок и обкатывания решения.
Обновление продукта
Для обновления до последней версии выполняется с помощью скрипта скаченного из директории 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]. Указание любого другого символа прервёт обновление приложения.
Вы увидите оповещение о необходимости создания резервной копии перед обновлением ELMA365 Standard (KinD).
Для продолжения обновления приложения введите один из вариантов:
- [B] — создание резервной копии (Backup);
- [С] — пропустить создание резервной копии (Continue);
- [E] — прервать обновление приложения (Exit).
- Создайте резервную копию и продолжите обновление ELMA365 Standard (KinD), указав символ [B] или нажав клавишу ENTER.
Скрипт установки выполнит резервное копирование и приступит к обновлению приложения.
Обновление 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 режима, нам режим отладки не нужен.
Итого у нас получается следующая картина
После реконфигурации системы, сервисы автоматически перезапустятся.
При обновлении сертификатов вручную, выполняем реконфигурацию
Здесь можно посмотреть актуальность вашего сертификата:
https://www.ssllabs.com/ssltest/index.html
Действия при обновлении сертификатов
Останавливаем Elma:
elma365ctl stop
Проверяем статус портов, 80-й должен быть не активен:
netstat -tulpn | grep LISTEN
Выполняем запрос на обновление сертификатов:
certbot renew
Проверка валидности сертификатов в системе, после обновления вручную:
certbot certificates
Копируем себе пути к сертификатам
Резервное копирование и восстановление
Резервное копирование и восстановление данных 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
Подключение 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
Проверяем запущенные процессы:
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