Перейти к содержанию

Обзор развертывания Temporal на сервере

Предпосылки и предварительные требования

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Debian или Ubuntu. Требуется доступ к серверу с правами суперпользователя (root) или возможность выполнения команд через sudo.

Система должна иметь доступ к интернету для загрузки образов контейнеров и репозиториев. Необходимо наличие настроенного доменного имени для работы с SSL-сертификатами через Certbot.

Следующие порты должны быть доступны для входящих соединений: - 80 и 443 для веб-трафика и SSL. - 3100 для Loki. - 9200 для Elasticsearch. - 7233, 7234, 7235, 7236, 7237 для компонентов Temporal. - 8080 для Temporal UI. - 8085 для Grafana. - 9090 для Prometheus. - 16686, 14268, 14250 для Jaeger. - 1888, 13133, 4317, 55670 для OpenTelemetry Collector.

Структура файлов и каталогов

Все файлы конфигурации и данные приложения размещаются в следующих директориях:

  • /root/docker-compose — каталог с файлами конфигурации Docker Compose для Temporal и зависимостей.
  • /root/nginx — каталог для конфигурации Nginx и Certbot.
  • /data/nginx/user_conf.d — директория для пользовательских конфигурационных файлов Nginx.
  • /data/grafana — каталог для конфигурации и данных Grafana.
  • /var/lib/postgresql/data — место хранения данных базы данных PostgreSQL.
  • /etc/letsencrypt — директория для SSL-сертификатов (монтируется в контейнер Nginx).

Основные файлы конфигурации: - /root/docker-compose/docker-compose-multirole_edited.yaml — основной файл оркестрации контейнеров Temporal. - /root/nginx/compose.yml — файл конфигурации для Nginx и Certbot. - /data/grafana/grafana.ini — файл настроек Grafana. - /data/nginx/user_conf.d/<домен>.conf — конфигурация виртуального хоста Nginx.

Процесс установки приложения

Установка выполняется путем развертывания контейнеров Docker. Процесс включает следующие этапы:

  1. Обновление пакетов системы и установка Docker Engine.
  2. Установка утилиты docker-compose.
  3. Клонирование репозитория https://github.com/temporalio/docker-compose.git в директорию /root/docker-compose.
  4. Установка и активация плагина Docker для Loki (grafana/loki-docker-driver:latest).
  5. Создание необходимых директорий для конфигураций Nginx и Grafana.
  6. Генерация файлов конфигурации на основе шаблонов.
  7. Запуск контейнеров Temporal с помощью docker compose в директории /root/docker-compose.
  8. Запуск контейнеров Nginx и Certbot с помощью docker compose в директории /root/nginx.

Базы данных

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

  • PostgreSQL: Используется для хранения истории событий и видимости.
  • Образ: postgres:${POSTGRESQL_VERSION}.
  • Данные хранятся в томе /var/lib/postgresql/data.
  • Подключение осуществляется по имени хоста postgresql внутри сети temporal-network.
  • Порт экспонируется как ${POSTGRES_DEFAULT_PORT}.
  • Параметры аутентификации задаются через переменные окружения POSTGRES_USER и POSTGRES_PASSWORD.

  • Elasticsearch: Используется для индексации видимости событий.

  • Образ: elasticsearch:${ELASTICSEARCH_VERSION}.
  • Режим работы: single-node.
  • Безопасность отключена (xpack.security.enabled=false).
  • Порт: 9200.

Контейнеры Docker и их запуск

Приложение состоит из множества контейнеров, управляемых через файл docker-compose-multirole_edited.yaml. Все контейнеры работают в сети temporal-network и используют драйвер логирования loki для отправки логов на сервер http://host.docker.internal:3100/loki/api/v1/push.

Список основных контейнеров: - loki: Сбор и хранение логов. - temporal-elasticsearch: База данных Elasticsearch. - temporal-postgresql: База данных PostgreSQL. - temporal-history: Сервис истории Temporal. - temporal-matching: Сервис сопоставления Temporal. - temporal-frontend и temporal-frontend2: Фронтенд-сервисы Temporal. - temporal-worker: Рабочий процесс Temporal. - temporal-admin-tools: Утилиты администрирования. - temporal-ui: Веб-интерфейс Temporal. - temporal-nginx: Внутренний балансировщик нагрузки для фронтенд-сервисов. - prometheus: Сбор метрик. - grafana: Визуализация метрик. - jaeger-all-in-one: Система трассировки. - otel-collector: Сборщик телеметрии OpenTelemetry.

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

docker compose -f docker-compose-multirole_edited.yaml up -d
в директории /root/docker-compose.

Для управления утилитой tctl создается алиас в файле /root/.bashrc:

alias tctl="docker exec temporal-admin-tools tctl"

Прокси серверы

Внешний доступ к приложению осуществляется через Nginx, который работает в режиме host и управляет SSL-сертификатами через Certbot.

Контейнер Nginx использует образ jonasal/nginx-certbot:latest. Он монтирует томы для хранения секретов Let's Encrypt и пользовательских конфигураций.

Конфигурация виртуального хоста размещается в файле /data/nginx/user_conf.d/<домен>.conf. Она включает: - Настройки SSL с использованием сертификатов из /etc/letsencrypt/live/<домен>/. - Прокси-правила для перенаправления трафика на внутренние сервисы (Grafana, Prometheus, Temporal). - Поддержку WebSocket для обновлений в реальном времени.

Для запуска Nginx и Certbot используется команда:

docker compose up -d
в директории /root/nginx.

Настройки прав

Права доступа к файлам и директориям устанавливаются следующим образом: - Директория /root/nginx и файлы внутри нее имеют владельца root:root и права 0644. - Директория /data/grafana и файлы внутри нее имеют владельца root:root и права 0644. - Файл конфигурации Grafana /data/grafana/grafana.ini имеет владельца root:root и права 0644. - Файлы конфигурации Nginx в /data/nginx/user_conf.d имеют владельца root:root и права 0644.

Запуск, остановка и обновление

Управление сервисами осуществляется через команды Docker Compose.

Запуск всех контейнеров Temporal:

cd /root/docker-compose
docker compose -f docker-compose-multirole_edited.yaml up -d

Запуск контейнеров Nginx и Certbot:

cd /root/nginx
docker compose up -d

Остановка контейнеров Temporal:

cd /root/docker-compose
docker compose -f docker-compose-multirole_edited.yaml down

Остановка контейнеров Nginx и Certbot:

cd /root/nginx
docker compose down

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

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×