Skip to content

Установка

Pre-requests

  • Git
  • Ansible(Знать базовые сущности, работать с vault).
  • Linux
  • Artifactory(репозиторий, где будут храниться плагины) Опционально, расширяя функционал:
  • PostgreSQL к которому будет подключено trino query-analisys.
  • OTLP(Также для query-analisys)

Подготовка к запуску ansible-плейбуков вручную

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

pip3 install --no-cache-dir ansible==8.1.0 \
         ansible-compat==0.5.0    \
         ansible-core==2.15.1     \
         ansible-lint==5.1.3      \   
         hvac==0.11.2       \
         ipaddr==2.2.0     \
         netaddr==0.8.0     \
         yamllint==1.26.3

ansible-galaxy collection install modules/community-general-8.4.0.tar.gz

Для запуска в CI/CD

Необходимо создать репозиторий с содержимым похожим на inventory_example, в котором будет директория inventory, в которой также будут group_vars с необходимыми переменными. Inventory создается yml-типом:

all:

coordinator:
  hosts:
    coordinator.example.ru:
  vars:
    coordinator: True

workers:
  hosts:
    worker[1:3].example.ru:
  vars:
    coordinator: False

Как это работает

В текущем репозитории при commit'е создается pipeline, в котором будет присутствовать ansible_linter проверяющий корректность синтексиса плейбуков.

Далее для запуска CI/CD потребуется создать отдельный репозиторий для кластера. В gitlab-ci.yml должен быть выполнен include текущего репозитория dataquery, rules-generator, observability.

include:
  - project: 'datavirt/dataquery'
    ref: *query_version
    file:
      - 'cluster-ci/gitlab-ci-common.yml'
  - project: 'datavirt/trino-observability'
    ref: *obesrvabality_version
    file:
      - 'cluster-ci/gitlab-ci-common.yml'
  - project: 'datavirt/trino-rules-generator'
    ref: *rg_version
    file:
      - 'cluster-ci/gitlab-ci-common.yml'

Можно запустить по commit'у или вручную job'у deploy_trino , которая запустит playbooks/main.yml, включая нужные роли для deploy trino. Например, роль prepare включает в себя предустановку всего необходимого для работы ansible и trino. Внести некоторые изменения в эту роль вы можете здесь.

После отработки роли prepare запускается роль install_trino в которой на координаторы и воркеры устанавливаются необходимые файлы properties, указанные в переменных, обратите внимание, что для каждого окружения может оказаться свой список переопределенных в group_vars. А также файлы необходимые для координатора group_vars/coordinator/coordinator.yml.

В этой роли устанавливается trino, если переменная DOWNLOAD_TRINO задана как true. Следовательно в этой роли устанавливаются все остальные необходимые компоненты trino, например plugin'ы.

После успешной работы роли install_trino, вы можете запустить роль rules_generator если репозиторий rules-generator в include переменная описывающая параметры сервиса присутствуют и RulesGenerator.enabled установлена в true.

Если переменная vmagent задана в true - запускается роль по установки vmagent'а для сбора метрик и мониторинга.

После удачного выполнения job'ы systemd процесс trino не запускается автоматически. Мы рекомендуем зайти на сервер и проверить работу trino вручную, а после воспользоваться job'ой restart_trino, которая рестартанет service trino на всех хостах в вашем окружении.

Переменные использующиеся в playbooks

Пример часто переопределяемых переменных вы можете найти в inventory_example/group_vars. А все возможные переменные так или иначе вы можете найти в defaults роли.

Переменные генерирующиеся из vault в виде secrets.yml

ssl_cert - SSL сертификат в base64 для домена использующегося в {{ default_url }} ssl_private_key - SSL private key в base64 для домена использующегося в {{ default_url }} s3_secret_key - Secret key S3 для использования в Exchane-manager-resources keystore_password - Пароль для шифрования в java_keystore куда кладутся SSL сертификаты db_pass - Пароль от базы данных, к которой подключается trino для queryanalisys и resource-group clickhouse_pass - clickhouse пароль для rules-generator

Как запустить вручную:

Если доступа до регистри нет, то нужно вручную скопировать jar query-analysis-listener-<актуальная_версия>.jar и trino-group-provider-<актуальная_версия>.jar с нашего регистри и поместить в /data/trino/plugin А также oracle-mts-patch-<актуальная_версия>.zip. Наши репозитории откуда скачать нужные плагины: https://artifactory.mts.ru/ui/native/dvgeneric-dopdv-generic-local/ https://artifactory.mts.ru/artifactory/dopdv-gradle-dopdv-gradle-local/

ansible-playbook  playbooks/main.yml -i example.ini --timeout=60 -e trino_ver=441 -e download_trino=false -e env=example  --ask-vault-pass
Далее проверить работу trino
sudo su - trino
./bin/launcher run
Если все окей, запускаем:
sudo service trino start