Обсудить
бизнес-задачи

Установка компонентов Arenadata на группу узлов под управлением Ubuntu 22.04

блог о bi, №1 в рунете

Наш первый опыт использования

Первый опыт работы с Arenadata оказался весьма положительным. Установка компонентов прошла без существенных сложностей благодаря хорошо задокументированным процессам и удобному интерфейсу ADCM. Несмотря на первоначальные опасения по поводу настройки хостпровайдеров, SSH-подключения заработали с первого раза после корректной настройки ключей. Особенно впечатлило удобство управления кластерами ADB и ADQM, а также гибкость конфигурации сервисов.

Проблемы возникли лишь при настройке доступа к NiFi, но их удалось быстро решить с помощью Nginx. В результате, мы получили стабильную и масштабируемую платформу для работы с большими данными, что значительно ускорило наши внутренние процессы.

Настройка ADCM

1. Установка Docker на машину управления ADCM, все команды будем выполнять от пользователя root:
# apt-get update
# apt-get install -y ca-certificates curl gnupg lsb-release
# install -m 0755 -d /etc/apt/keyrings
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | tee /etc/apt/keyrings/docker.asc > /dev/null
# 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 \
  $(lsb_release -cs) stable" | \
  tee /etc/apt/sources.list.d/docker.list
# apt-get update
# apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. Установка ADCM — оффлайн метод через скрипт инсталляции. Загрузим на сервер установочный скрипт .sh и выполним его:
# ./adcm_x.x.x.sh master_adcm
3. После выполнения скрипта будет создан контейнер с веб-интерфейсом, доступным по адресу:
http://ваш_ip:8000/login

Данные для входа по умолчанию:
  • Логин: admin
  • Пароль:admin
4. Изменение пароля администратора.
После первого входа перейдите в раздел /profile и смените пароль администратора для повышения безопасности.
5. Настройка панели ADCM.
В настройках необходимо указать URL панели ADCM, чтобы обеспечить корректную работу всех компонентов.
При текущей установке значение ключа ADCM’s URL должно быть http://ваш_ip:8000
Далее, нажать кнопку «Save».

Настройка хостпровайдеров

Для управления нодами кластера будем использовать SSH.
1. Загрузка SSH bundle.
Перейдите в раздел /bundles в интерфейсе ADCM и загрузите соответствующий SSH bundle.
2. Создание хостпровайдера.
После загрузки bundle:

  • Перейдите в раздел /hostproviders
  • Нажмите «Create hostprovider».
3. Конфигурация хостпровайдера.
Зайдите в созданный провайдер, перейдите в его конфигурацию и заполните поле SSH private key. Этот ключ будет использоваться для подключения к узлам кластера.
Например, ключ можно взять из контейнера adcm, который ранее был запущен в docker. Чтобы посмотреть его, можно выполнить команду на главном узле adcm:
# docker exec adcm cat /root/.ssh/id_rsa*
или использовать любой другой ранее сгенерированный ключ. И нажать на «Save» для сохранения конфигурации.

Подготовка и добавление рабочих узлов

1. Настройка имен хостов.
Убедитесь, что имена узлов разрешаются в IP-адреса, используя DNS или файл /etc/hosts, для некоторых компонентов это имеет критическое значение.

Пример настройки для резольвинга через файл:
# /etc/hostname
worker-1

# /etc/hosts
127.0.1.1 localhost
127.0.0.1 localhost
aaa.bbb.ccc.ddd worker-1.adcm.my.domain.name
2. Настройка SSH-доступа.
Добавьте публичный ключ вашего хостпровайдера в файл /root/.ssh/authorized_keys на каждом узле:
# echo "ваш_публичный_ключ" > /root/.ssh/authorized_keys
3. Добавление узлов в ADCM.
Перейдите в раздел /hosts и нажмите «Create host» для добавления каждого рабочего узла.
4. Проверка доступности узлов.
После добавления узлов выполните проверку их доступности через меню Actions в интерфейсе ADCM

Создание ADB кластера

Будем развертывать ADB кластер в минимальной конфигурации (1 мастер и 2 воркера).
1. Загрузка ADB bundle
Перейдите в раздел /bundles и загрузите ADB bundle.
2. Создание кластера.
На основе загруженного bundle создайте новый кластер:

  • Перейдите в /clusters.
  • Нажмите «Create cluster».
3. Добавление служб в кластер.
Перейдите в раздел Services и добавьте необходимые службы в кластер (минимальная конфигурация включает мастер и два воркера).
4. Маппинг служб на узлы.
В разделе Mapping распределите службы по узлам.
5. Установка служб.
Переходим в раздел Services и в меню Actions выбираем Install. Статус установки отобразится здесь же в интерфейсе.
6. Управление кластером.
Кластером можно управлять через меню Actions в ADCM или через пользователя gpadmin на мастер-ноде ADB.
7. Настройка подключения по паролю:

  • Заходим на мастер ноду под пользователем gpadmin и подключаемся к базе:
# su – gpadmin
$ psql
  • Создаём пользователя для подключения:
sql> CREATE ROLE my_username WITH LOGIN PASSWORD 'my_password';
  • Разрешите подключение из любого места, добавив в pg_hba.conf :
$ echo "host    all     all     0.0.0.0/0     md5" >> /data1/master/gpseg-1/pg_hba.conf
  • Перезапуск:
$ gpstop -u

Установка ADQM

Установка ADQM аналогична ADB:

  • Загрузите ADQM bundle.
  • Создайте кластер.
  • Добавьте службу.
  • Настройте маппинг узлов.
  • Установите службы.

Настройка доступа к ADQM

По умолчанию ADQM доступен только с localhost. Чтобы разрешить подключение из любого места:

  • Отредактируйте файл /etc/clickhouse-server/users.xml, добавив:
<networks>
    <ip>::/0</ip>
</networks>
  • В файле /etc/clickhouse-server/users.d/credentials.xml укажите хеш пароля пользователя default в секции password_sha256_hex
  • Перезапустите сервер:
# systemctl restart clickhouse-server

Установка ADS

Установка ADS также аналогична ADB и ADQM:

  • Загрузите ADS bundle.
  • Создайте кластер.
  • Добавьте службы.
  • Настройте маппинг узлов.
  • Установите службы.

Примечания по установке NiFi

По умолчанию NiFi в ADCM предполагает авторизацию через AD/LDAP. При отсутствии этих компонентов доступ к NiFi останется открытым. Один из способов закрыть доступ — использовать HTTP-авторизацию через Nginx.
1. Ограничение доступа к NiFi локальным интерфейсам.
Убедитесь, что имя ноды соответствует локальному интерфейсу в /etc/hosts :
127.0.1.1 localhost worker-2.adcm.my.domain.name
127.0.0.1 localhost
Перезапустите NiFi через ADCM для применения настроек.
2. Установка и настройка Nginx:
# apt update
# apt install -y nginx
3. Создайте конфигурационный файл для Nginx:
tee /etc/nginx/conf.d/nifi.conf > /dev/null <<EOL
server {
    listen 8081;
    client_max_body_size 512M;
    location / {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
        proxy_pass http://127.0.1.1:9090;
        proxy_set_header Host \$host;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }
}
EOL
4. Создайте файл .htpasswd для защиты доступа:
# htpasswd -c /etc/nginx/conf.d/.htpasswd <username>
Перезапустите Nginx:
# systemctl restart nginx
Теперь доступ к NiFi будет защищён логином и паролем по адресу:
http://ваш_ip:8081