Стандартизированнное развертывание CedrusData Engine (установка из архива)#
Настоящее руководство содержит инструкции по стандартизированному развертыванию кластера CedrusData. Для развертывания применяется shell-команды и файл переменных. Установка производится в минимальной рабочей конфигурации, без подключения каталогов, настроек памяти, настроек безопасности, и прочих дополнительных функций CedrusData.
Требования к установке#
Linux x64
JDK 21 версии
Минимум 4 GB RAM
Рекомендуется отдельный пользователь Linux (root-привилегии не требуются)
Свободное место на дисках:
Роль узла
Назначение
Объем
Комментарий
Все узлы
Дистрибутив/docker-образ
1 GB
Все узлы
Журналы работы
10+ GB
Worker
Локальный кэш (опционально)
1-10% от объёма данных
рекомендуется NVME/SSD
Coordinator
Кэш результатов запросов (опционально)
индивидуально
Планирование развертывания#
Общие рекомендации:
Для узлов с ролью CedrusData Worker выбирайте идентичные конфигурации.
Для узла с ролью CedrusData Coordinator, для небольших кластеров (до 10 узлов) обычно резервируется примерно 25-50% ресурсов Worker (отдельно по памяти и по CPU). При высокой интенсивности запросов и большем числе узлов, количество ядер CPU и объёма RAM потребуется больше.
Соотношение числа ядер к памяти узлов составляет примерно 16 GB на каждое физическое ядро CPU. В случае высокой доли compute-intensive задач - парсинг, regexp, преобразования, и пр., соотношение стоит увеличить в пользу числа ядер CPU.
При наличии дополнительных сервисов на узле (CedrusData Catalog, Postgres и пр.), зарезервируйте дополнительные ресурсы под них.
Для хранения журналов работы предусмотрите отдельный volume.
В случае использования кэша CedrusData рекомендуется выделить отдельный SSD/NVME диск
В таблице ниже приведены примеры типовых конфигураций Coordinator и соотвествующие им конфигурации Worker-узлов для небольшого кластера (до 10 узлов):
Coordinator CPU и RAM |
Worker CPU и RAM |
|---|---|
2 ph.cores, 16 GB RAM |
4 ph.cores, 32-64 GB RAM |
4 ph.cores, 32 GB RAM |
8 ph.cores, 64-128 GB RAM |
8 ph.cores, 64 GB RAM |
16 ph.cores, 256 GB RAM |
16 ph.cores, 128 GB RAM |
32 ph.cores, 512 GB RAM |
32 ph.cores, 256 GB RAM |
64 ph.cores, 1024 GB RAM |
Для дальнейшей установки потребуется подготовить следующие локации в файловой системе:
Переменная |
Каталог по умолчанию |
Назначение |
Роль узла |
|---|---|---|---|
|
|
Каталог дистрибутива |
Все |
|
|
Каталог конфигурации |
Все |
|
|
Журналы и runtime файлы |
Все |
|
|
Локальный кэш (опционально) |
Workers |
Для наилучшей переносимости конфигурации и совместимости с конфигурацией docker-образов, рекомендуется
оставить указанные ниже переменные без изменений, смонтировав лишь отдельные физические диски под журналы и кэш.
Для удобства для каталогов CDE_HOME и CDE_CONF вы можете создать symlinks.
В частности, это облегчит процесс обновлений, когда конфигурация старой версии может оставаться без изменений в
старом каталоге, а symlink «смотрит» на локацию с новой конфигурацией. Тем самым снимается необходимость внесения изменений в
переменные окружения и конфигурацию при переключении между версиями CedrusData Engine.
Установка JDK#
Можно установить любую JDK 21 версии. Например, Temurin JDK.
Подготовка узлов#
На всех узлах рекомендуется создать отдельного пользователя (далее
$CDE_USER, по умолчаниюtrino), которому в дальнейшем будут предоставлены права на работу с требуемыми каталогами.Отредактировать ulimits для пользователя в файле
/etc/security/limits.conf(увеличьте значения при необходимости):
trino soft nofile 131072
trino hard nofile 131072
trino soft nproc 128000
trino hard nproc 128000
Отключите swap в операционной системе, если в нём нет необходимости:
sudo cp /etc/fstab /etc/fstab.bak
sudo sed -i '/[[:space:]]swap[[:space:]]/ s/^[[:space:]]*/#/' /etc/fstab
sudo swapoff -a
# проверить результат
swapon --show
Установка CedrusData Engine#
Установка выполняется под пользователем $CDE_USER (по умолчанию trino).
На каждом узле кластера создать файл с переменными окружения. Указанные переменные будут использованы для выполнения последующих команд.
sudo mkdir /etc/trino/
sudo chown $CDE_USER:$CDE_USER /etc/trino/
echo "CDE_HOME=/usr/lib/trino/
CDE_CONF=/etc/trino
CDE_DATA=/data/trino
CDE_CACHE=/data/trino-cache" > /etc/trino/cedrus.env
chmod 600 /etc/trino/cedrus.env
set -a
. /etc/trino/cedrus.env
set +a
Подготовить рабочие директории (все узлы кластера).
sudo mkdir -p "$CDE_HOME" "$CDE_CONF"/catalog "$CDE_DATA" "$CDE_CACHE"
sudo chown $CDE_USER:$CDE_USER "$CDE_HOME" "$CDE_CONF" "$CDE_CONF"/catalog "$CDE_DATA" "$CDE_CACHE"
Установка дистрибутива (все узлы кластера).
cd /tmp
wget https://downloads.cedrusdata.ru/releases/cedrusdata-server-476-2.tar.gz
tar -xf cedrusdata-server-476-2.tar.gz
mv cedrusdata-server-476-2/* "$CDE_HOME"/
rm -Rf cedrusdata-server-476-2*
mv "$CDE_HOME"/etc/* "$CDE_CONF"/
Отредактировать
node.properties(все узлы кластера).
Пересоздать "$CDE_CONF"/node.properties:
echo "node.environment=cedrus
node.data-dir=\${ENV:CDE_DATA}" > "$CDE_CONF"/node.properties
Отредактировать
config.properties.
Отредактировать файл "$CDE_CONF"/config.properties (узел Coordinator).
echo "coordinator=true
http-server.http.port=8080
discovery.uri=http://\${ENV:CEDRUSDATA_COORDINATOR_ADDRESS}:8080" > "$CDE_CONF"/config.properties
Отредактировать файл "$CDE_CONF"/config.properties (узлы Workers).
echo "coordinator=false
http-server.http.port=8080
discovery.uri=http://\${ENV:CEDRUSDATA_COORDINATOR_ADDRESS}:8080" > "$CDE_CONF"/config.properties
Настройте максимальный размер файлов журналов (все узлы кластера).
В данном примере общий размер файлов журналов не превысит 10 GB.
echo "
log.max-size=100MB
log.max-total-size=8GB
log.compression=GZIP
# HTTP request log
http-server.log.max-size=100MB
http-server.log.max-history=20
http-server.log.compression.enabled=true" >> "$CDE_CONF"/config.properties
Переменные окружения и секреты#
Для хранения переменных окружения используется отдельный файл $CDE_CONF/cedrus.env, инициализирующий переменные перед стартом CedusData.
Подставьте корректный адрес для CedrusData Coordinator (и другие переменные при необходимости):
echo "CEDRUSDATA_COORDINATOR_ADDRESS=coordinator.example.com" >> "$CDE_CONF"/cedrus.env
В дальнейшем вы можете использовать указанные переменные в любых файлах конфигурации CedrusData Engine.
Пример фрагмента файла "$CDE_CONF"/config.properties:
discovery.uri=http://${ENV:CEDRUSDATA_COORDINATOR_ADDRESS}:8080
Запуск CedrusData Engine#
Запуск производится одинаково для всех узлов кластера. Перед запуском инициализируйте переменные окружения:
set -a
. /etc/trino/cedrus.env
set +a
Запуск может быть осуществлен одним из следующих способов.
Способ-1. Консольный запуск в background (журнал пишется только в файл):
"$CDE_HOME"/bin/launcher start --etc-dir "$CDE_CONF"
Способ-2. Консольный запуск в foreground (журнал дублируется в stdout/err):
"$CDE_HOME"/bin/launcher run --etc-dir "$CDE_CONF"
Способ-3 (рекомендуемый). Создать сервис systemd с автозапуском и авторестартом.
Создать файл
/etc/systemd/system/cde.serviceсо следующим содержимым (пример):
[Unit]
Description=CedrusData Engine
After=network-online.target
Wants=network-online.target
[Service]
User=trino
Group=trino
EnvironmentFile=/etc/trino/cedrus.env
Type=forking
ExecStart=/usr/lib/trino/bin/launcher start "--etc-dir=${CDE_CONF}"
ExecStop=/usr/lib/trino/bin/launcher stop
SuccessExitStatus=143
Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Установить автозапуск сервиса и запустить сервис:
sudo systemctl daemon-reload
sudo systemctl enable cde
sudo systemctl start cde
Журналы запуска CedrusData можно найти в файле на кажлдом узле:
tail -200 "$CDE_DATA"/var/log/server.log
Остановка CedrusData Engine#
Производится одинаково для всех узлов кластера.
"$CDE_HOME"/bin/launcher stop --etc-dir "$CDE_CONF"
# в случае использования сервиса
sudo systemctl stop cde