Установка ADCM

Для развертывания ADCM требуется отдельный хост. Перед началом установки рекомендуем ознакомиться с документацией ADCM.

Этапы установки описаны ниже.

Шаг 1. Предварительные требования

Требования к software и hardware

ADCM поставляется в виде Docker-образа. Для его установки необходимы:

  • Одна из приведенных ниже операционных систем:

    Ubuntu
    • Ubuntu 22.04 LTS

    CentOS
    • CentOS 7.9

    RHEL
    • RHEL 7.9

    • RHEL 9

    ALT Linux
    • ALT Linux 8.4 SP

    • ALT Linux 10.2 SP

    Astra Linux SE
    • Astra Linux SE 1.7.6 Орел

    • Astra Linux SE 1.8.4 Орел

    • Astra Linux SE 1.8.6 Орел

    • Astra Linux SE 1.7.6 Воронеж

    • Astra Linux SE 1.8.4 Воронеж

    • Astra Linux SE 1.8.6 Воронеж

    РЕД ОС
    • РЕД ОС 7.3 Сертифицированная редакция

    • РЕД ОС 8.0 Сертифицированная редакция

  • Пользователь с правами sudo.

  • Доступ к официальным репозиториям CentOS Extras и CentOS Base. По умолчанию эти репозитории доступны в операционной системе. Однако, если они были отключены, потребуется их предварительное включение (например, путем редактирования конфигурационного файла в директории /etc/yum.repos.d/).

  • Менеджер программных пакетов YUM/APT.

  • Хост, отвечающий следующим требованиям:

    ВАЖНО

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

    • CPU: 4 ядра CPU;

    • RAM: 16 ГБ;

    • HDD: 50 ГБ.

ВАЖНО
Начиная с версии ADCM 2.7.0 для установки ADPG без подключения к Интернету и использования его в качестве базы данных ADCM требуется любой Container Registry Client с загруженными образами ADPG, ADCM и ADCM Installer. Установка выполняется с помощью ADCM Installer с указанием URL локального хранилища образов ADCM и ADPG.

Чтобы пользователь обладал необходимыми правами для установки ADCM, выполните действия, описанные ниже.

Предоставьте пользователю привилегии root:

  • CentOS 7.9/RHEL 7.9/РЕД ОС 7.3/ALT Linux 8.4 SP

  • Ubuntu 22.04 LTS/Astra Linux SE 1.7.6 Орел

$ sudo usermod -aG wheel <user>

где <user> — имя пользователя.

$ sudo usermod -aG sudo <user>

где <user> — имя пользователя.

Убедитесь, что в файле /etc/sudoers есть запись, указанная ниже в зависимости от используемой операционной системы, с помощью следующей команды:

$ sudo vi /etc/sudoers

Чтобы вернуться в терминал, нажмите Esc, введите :q! и нажмите Enter.

  • CentOS 7.9/RHEL 7.9/РЕД ОС 7.3

  • Ubuntu 22.04 LTS/Astra Linux SE 1.7.6 Орел

  • ALT Linux 8.4 SP

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
## Uncomment to allow members of group wheel to execute any command
WHEEL_USERS ALL=(ALL:ALL) ALL

Установка Docker

ВНИМАНИЕ

Установка Docker с официального сайта не рекомендуется. Вместо этого используйте официальные репозитории дистрибутива Linux. Репозитории, предоставляемые разработчиками операционных систем, как правило, более стабильны и безопасны.

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

  • CentOS 7.9/RHEL 7.9

  • Ubuntu 22.04 LTS

  • ALT Linux 8.4 SP

  • Astra Linux SE 1.7.6 Орел

  • РЕД ОС 7.3

  1. Обновите все программные пакеты, установленные в системе:

    $ sudo yum update -y
  2. Установите пакеты, необходимые для Docker:

    $ sudo yum install -y yum-utils docker device-mapper-persistent-data lvm2

    где:

    • yum-utils — пакет, который предоставляет утилиту yum-config-manager;

    • device-mapper-persistent-data и lvm2 — пакеты, необходимые драйверу хранилища devicemapper.

  3. Запустите Docker:

    $ sudo systemctl start docker
  4. Включите Docker в качестве системного сервиса:

    $ sudo systemctl enable docker
  1. Обновите индекс пакетов:

    $ sudo apt-get update
  2. Установите пакеты, необходимые для Docker:

    $ sudo apt-get install ca-certificates curl

    где:

    • ca-certificates — пакет корневых сертификатов;

    • curl — пакет для работы с веб-ресурсами.

    При выполнении команды подтвердите увеличение объема занятого дискового пространства.

  3. Добавьте GPG-ключ для Docker-репозитория:

    $ sudo install -m 0755 -d /etc/apt/keyrings
    $ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    $ sudo chmod a+r /etc/apt/keyrings/docker.asc
  4. Добавьте Docker-репозиторий:

    $ echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo "jammy") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. Обновите индекс пакетов:

    $ sudo apt-get update
  6. Установите Docker Engine:

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    При выполнении команды подтвердите увеличение объема занятого дискового пространства.

  7. Запустите Docker:

    $ sudo systemctl start docker
  8. Включите Docker в качестве системного сервиса:

    $ sudo systemctl enable docker
  1. Обновите индекс пакетов:

    $ sudo apt-get update
  2. Установите Docker Engine:

    $ sudo apt-get install docker-engine

    При выполнении команды подтвердите увеличение объема занятого дискового пространства.

  3. Запустите и включите Docker в качестве системного сервиса:

    $ sudo systemctl enable --now docker
  1. Обновите индекс пакетов:

    $ sudo apt-get update
  2. Установите Docker Engine из репозитория операционной системы:

    $ sudo apt-get install docker.io

    При выполнении команды подтвердите увеличение объема занятого дискового пространства.

  3. Запустите Docker:

    $ sudo systemctl start docker
  4. Включите Docker в качестве системного сервиса:

    $ sudo systemctl enable docker
  1. Установите Docker Engine:

    $ sudo dnf install docker-ce docker-ce-cli

    При выполнении команды подтвердите увеличение объема занятого дискового пространства.

  2. Запустите и включите Docker в качестве системного сервиса:

    $ sudo systemctl enable docker --now

Отключение SELinux

ПРИМЕЧАНИЕ
Отключение системы безопасности SELinux необходимо только в случае использования операционной системы CentOS 7.9 или RHEL 7.9.

Для долговременного отключения SELinux следует прописать SELINUX=disabled в конфигурационном файле /etc/selinux/config и перезагрузить систему.

Файл может быть изменен с помощью редактора vi (или vim):

$ sudo vi /etc/selinux/config

Содержимое обновленного файла:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

Кроме этого, доступно временное отключение SELinux с помощью следующей команды:

$ sudo setenforce 0

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

ВНИМАНИЕ

Не забудьте перезагрузить хост после отключения SELinux.

Остановка firewalld

Если на хосте используется сервис firewalld, требуется его остановка.

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

$ sudo systemctl status firewalld

Пример результата выполнения команды:

● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024-12-02 10:02:57 UTC; 3min 25s ago
     Docs: man:firewalld(1)
 Main PID: 3023 (firewalld)
    Tasks: 2
   Memory: 22.8M
   CGroup: /system.slice/firewalld.service
           └─3023 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Остановите firewalld с помощью команды:

$ sudo systemctl stop firewalld

Альтернативный вариант — отключить применение правил к сетевым пакетам при помощи команды disable:

$ sudo systemctl disable firewalld

Настройка доступа к Docker CLI без прав root

Для настройки доступа к Docker CLI без использования прав root необходимо создать группу пользователей docker (если она еще не существует) и добавить текущего пользователя в эту группу с определенными правами:

$ sudo groupadd docker
$ sudo usermod -a -G docker $USER

После запуска команд требуется перезайти в систему под текущим пользователем.

Шаг 2. Установка ADCM

Offline-установка ADCM включает следующие шаги:

  1. Запросите у команды поддержки Arenadata архив с расширением sh.xz, который содержит специальный установочный shell-скрипт.

  2. Создайте директорию на хосте, где должен быть развернут ADCM, и разместите в ней полученный архив.

  3. Распакуйте архив в созданной директории любым из доступных способов.

    ПРИМЕЧАНИЕ
    Выполнение команды может занять некоторое время. Пожалуйста, дождитесь ее завершения.
  4. Загрузите Docker-образ в локальное хранилище с помощью полученного скрипта:

    $ sudo bash <script_name> unpack_adcm

    где <script_name> — полное имя скрипта с расширением (например, adcm_2.5.0.sh).

    Пример результата успешной обработки команды:

    Loaded image: hub.arenadata.io/adcm/adcm:2.5.0
  5. Создайте и запустите новый Docker-контейнер на базе загруженного Docker-образа. Для хранения данных вы можете использовать именованный том (named volume) или bind mount (например, если планируете настроить логирование, ротацию логов или HTTPS):

    ВАЖНО
    Выбранный способ хранения данных должен оставаться неизменным при последующих обновлениях ADCM. Смена способа хранения без предварительного резервного копирования и восстановления приведет к потере данных.
    • Именованный том:

      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v adcm-data:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    • Bind mount:

      ПРИМЕЧАНИЕ

      При использовании bind mount (например, каталога на хосте /opt/adcm) перед запуском контейнера убедитесь, что каталог создан и на него назначены права владельца 10001:10001:

      $ sudo mkdir -p /opt/adcm && sudo chown -R 10001:10001 /opt/adcm
      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v /opt/adcm:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>

Шаг 3. Запуск ADCM

Поскольку ADCM представляет собой контейнер под управлением Docker, за его запуск и остановку отвечают стандартные Docker-команды:

  • Остановка ADCM.

    $ sudo docker stop adcm
  • Запуск ADCM.

    $ sudo docker start adcm
  • Автозапуск ADCM. Чтобы настроить автоматический запуск Docker-контейнера в случае непредвиденных ошибок, используйте следующую команду.

    $ sudo docker update --restart=on-failure adcm
ПРИМЕЧАНИЕ
  • Дополнительная информация по политикам перезапуска Docker-контейнеров (restart policies) может быть получена из документации Docker.

  • Если для текущего пользователя настроен доступ к Docker CLI без использования прав root, слово sudo в предыдущих командах необязательно.

Процесс запуска контейнера

После запуска контейнера ADCM выполняются следующие действия:

  1. Проверяется наличие обязательных переменных окружения.

  2. Выполняется инициализация секретов при их отсутствии.

  3. Проводится проверка совместимости установленных бандлов с версиями контракта текущей версии ADCM.

  4. К базе данных применяются необходимые миграции.

  5. Запускаются компоненты, входящие в состав основного контейнера ADCM:

    • бэкенд-сервер (Backend Server);

    • статус-сервер (Status Server);

    • Nginx.

Шаг 4. Проверка установки

Проверка статуса Docker-контейнера

Чтобы убедиться в успешной установке Docker-контейнера adcm, выполните следующую команду:

$ sudo docker container ls

Пример результата выполнения команды приведен ниже. Убедитесь, что в столбце STATUS выводится значение Up:

CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS              PORTS                    NAMES
74b5628146e5        hub.arenadata.io/adcm/adcm:2.0   "/etc/startup.sh"   4 days ago          Up 21 minutes       0.0.0.0:8000->8000/tcp   adcm

Проверка доступности порта 8000

После установки и запуска ADCM его веб-интерфейс должен стать доступным на 8000 порте развернутого контейнера.

Для операционной системы Ubuntu 22.04 LTS предварительно установите пакет для запуска команды netstat:

$ sudo apt-get install net-tools

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

  • netstat — для вывода информации о состоянии порта.

    $ sudo netstat -ntpl | grep 8000

    Пример результата выполнения команды:

    tcp6       0      0 :::8000                 :::*                    LISTEN                                             1514/docker-proxy-c
  • curl — для проверки URL-соединения.

    $ curl http://localhost:8000

    Пример результата выполнения команды:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Arenadata Cluster Manager</title>
      <base href="/">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="assets/favicon.ico">
    <link rel="stylesheet" href="styles.10db6328264e0907c52f.css"></head>
    <body>
      <app-root></app-root>
    <script src="runtime-es2015.7eb406ed18bf0258cd35.js" type="module"></script><script src="runtime-es5.7eb406ed18bf0258cd35.js" nomodule defer></script><script src="polyfills-es5.2e224d70daec4412d3c2.js" nomodule defer></script><script src="polyfills-es2015.37e0553ac06970d6a5b5.js" type="module"></script><script src="main-es2015.39851da0ebf9ed6fec45.js" type="module"></script><script src="main-es5.39851da0ebf9ed6fec45.js" nomodule defer></script></body>
    </html>

Проверка веб-интерфейса ADCM

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

  • User: admin

  • Password: admin

Вход в ADCM
Вход в ADCM

Для изменения пароля требуется выполнить следующие действия:

  1. Откройте профиль текущего пользователя в левом навигационном меню.

  2. Введите текущий пароль в поле Current password.

  3. Укажите новый пароль в поле New password.

  4. Подтвердите новый пароль в поле Confirm password.

  5. Нажмите Save.

    Изменение пароля пользователя admin
    Изменение пароля пользователя admin

Установка URL ADCM

Для успешного обмена данными между ADCM и развернутыми с его помощью кластерами важно корректное определение внешнего адреса ADCM. В дальнейшем этот адрес будет использоваться для отправки в ADCM статусов кластерных компонентов. Для указания URL ADCM используется переменная окружения DEFAULT_ADCM_URL при создании контейнера ADCM. Если переменная не была указана, необходимо установить URL вручную в веб-интерфейсе ADCM. Для этого выполните шаги:

  1. Выберите пункт Settings в левом навигационном меню.

  2. Раскройте узел Global Options в дереве конфигурационных настроек.

    Страница Settings
    Страница Settings
  3. Введите необходимое значение непосредственно в текстовое поле ADCM’s URL.

  4. Нажмите Save для сохранения внесенных изменений.

    Сохранение URL ADCM
    Сохранение URL ADCM

Шаг 5. Обновление ADCM

ВНИМАНИЕ

Общие рекомендации и ограничения

  • Перед выполнением обновления рекомендуется сделать резервную копию данных ADCM. Дополнительную информацию см. в статье Резервное копирование и восстановление.

  • Понижение версии ADCM не поддерживается.

  • Не рекомендуется обновлять ADCM более чем на 5 минорных версий (см. <minor> в описании формата версионирования ниже).

  • Перед обновлением ADCM до версии 2.7.0 выполните миграцию данных из SQLite в PostgreSQL. Миграцию можно выполнить в ADCM любой версии до 2.6.0 включительно.

Ограничения версий при обновлении

  • Версия 2.10.0 является обязательной для установки и не может быть пропущена. Прямое обновление с версий ниже 2.10.0 до 2.11.0 и выше не поддерживается.

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

  • Если среди установленных кластеров присутствуют продукты с неподдерживаемой версией контракта, запуск Docker-контейнера прекращается. Такие продукты необходимо обновить до поддерживаемой версии.

ВАЖНО

Версия ADCM 3.0.0 является обязательной для установки и не может быть пропущена при обновлении.

Начиная с версии ADCM 3.0.0 все процессы внутри Docker-контейнера запускаются от имени непривилегированного пользователя adcm (UID/GID 10001) вместо пользователя root.

При обновлении без использования ADCM Installer с версии ADCM ниже 3.0.0 перед первым запуском контейнера с новой версией необходимо изменить владельца каталога /adcm/data. В противном случае Docker-контейнер не сможет получить доступ к существующим данным и завершит работу.

Если для хранения данных используется Docker volume, выполните следующие шаги:

  1. Определите имя Docker volume, смонтированного в каталог /adcm/data:

    $ sudo docker inspect \
        --format='{{range .Mounts}}{{if eq .Type "volume"}}{{.Name}}{{"\n"}}{{end}}{{end}}' \
        adcm

    Команда выведет имя Docker volume. Используйте его вместо <volume_name> в следующей команде.

  2. Измените владельца каталога с данными:

    $ sudo docker run --rm \
        -v <volume_name>:/adcm/data \
        --user 0:0 \
        --entrypoint sh \
        hub.arenadata.io/adcm/adcm:<version> \
        -c 'chown -R 10001:10001 /adcm/data'

    где <version> — версия ADCM, до которой планируется обновление.

Процесс обновления ADCM зависит от способа установки ADCM.

Если хосты не имеют доступа к Интернету, доступно offline-обновление ADCM.

Чтобы выполнить offline-обновление ADCM, установленного без использования ADCM Installer, до нужной версии, сделайте следующее:

  1. Остановите и удалите Docker-контейнер adcm:

    $ sudo docker rm -f adcm
    ПРИМЕЧАНИЕ
    Клиенты, использующие Enterprise-версии продуктов, могут обратиться в команду поддержки Arenadata для получения архива с расширением sh.xz, который содержит специальный скрипт для ADCM. После остановки Docker-контейнера adcm дальнейшее обновление ADCM включает установку согласно инструкции.
  2. Загрузите Docker-образ из Arenadata Docker Registry на хост, который имеет доступ в Интернет:

    $ sudo docker pull hub.arenadata.io/adcm/adcm:<version>

    где <version> — это версия Docker-образа в одном из следующих форматов:

    • <major>.<minor>.<patch> — если необходим конкретный патч ADCM. Пример: 2.0.0.

    • <major>.<minor> — если необходим последний патч в рамках выбранной версии ADCM. Пример: 2.0.

    ВАЖНО
    • latest использовался для ранних версий ADCM и начиная с версии 2.0.0 больше не поддерживается.

    • До выпуска ADCM 2.0.0 для версионирования использовался следующий формат: YYYY.MM.DD.HH.

  3. Сохраните загруженный Docker-образ в файл с расширением .tar:

    $ sudo docker save -o <file_name> hub.arenadata.io/adcm/adcm:<version>

    где <file_name> — имя создаваемого файла с расширением (например, adcm_2.5.0_arenadata.tar).

    ПРИМЕЧАНИЕ
    Выполнение команды может занять некоторое время. Пожалуйста, дождитесь ее завершения.
  4. Скопируйте сохраненный файл с текущего хоста на хост без доступа к Интернету любым из доступных способов.

    ВАЖНО
    Убедитесь в наличии настроенного доступа к хостам и необходимых прав доступа к файлу.
  5. Загрузите Docker-образ из сохраненного файла:

    $ sudo docker load -i <file_path>

    где <file_path> — абсолютный путь к сохраненному файлу с Docker-образом.

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

    Loaded image: hub.arenadata.io/adcm/adcm:2.5.0
  6. Создайте и запустите новый Docker-контейнер на базе загруженного образа, выбрав вариант в зависимости от того, каким образом была установлена предыдущая версия ADCM:

    ВАЖНО
    При обновлении используйте тот же способ хранения данных (bind mount или именованный том), что и при установке. Смена способа хранения без предварительного резервного копирования и восстановления приведет к потере данных.
    • Если ранее использовался именованный том (named volume):

      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v adcm-data:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    • Если ранее использовался bind mount:

      ПРИМЕЧАНИЕ

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

      $ sudo chown -R 10001:10001 /opt/adcm
      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v /opt/adcm:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    ПРИМЕЧАНИЕ
    Подробная информация о переменных окружения DB_HOST, DB_PORT, DB_USER, DB_NAME, DB_PASS и DB_OPTIONS приведена в статье Установка.
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней