Обзор развертывания Temporal на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие условия:
-
Операционная система: Debian или Ubuntu.
-
Права доступа: Права суперпользователя (root) для установки системных пакетов и управления Docker.
-
Доменное имя: Наличие настроенного домена в зоне
hostkey.in. -
Порты:
-
Внешний доступ:
443(HTTPS). -
Внутренние сервисы:
8080,8085,9090,7233,7234,7235,7236,7237.
FDQN итоговой панели на домене hostkey.in¶
Доступ к приложению осуществляется через следующий шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | temporal |
| Домен | hostkey.in |
| Полный шаблон | temporal{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Основные данные и конфигурации размещаются в следующих директориях:
-
/root/docker-compose— файлы конфигурации Docker Compose для основного приложения. -
/root/nginx— конфигурация прокси-сервера Nginx и SSL-сертификатов. -
/data/grafana— пользовательские настройки Grafana (grafana.ini). -
/data/nginx/user_conf.d— файлы конфигурации виртуальных хостов Nginx.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Обновление системных пакетов через
apt, установка Docker и Docker Compose. -
Настройка окружения:
-
Клонирование репозитория с конфигурациями Temporal из GitHub в
/root/docker-compose. -
Создание псевдонима (alias) для удобного управления через терминал:
tctlнаправляет команды напрямую в контейнерtemporal-admin-tools. -
Установка драйвера логирования Loki для Docker.
-
Развертывание инфраструктуры:
-
Запуск контейнеров приложения с использованием Docker Compose.
-
Настройка прокси-сервера Nginx для обеспечения SSL-соединения через Certbot.
Права доступа и безопасность¶
-
Конфигурационные файлы в директориях
/root/nginx,/data/grafanaи/root/docker-composeимеют права доступа0644. -
Использование Docker-драйвера Loki обеспечивает безопасную передачу логов из контейнеров.
-
Доступ к приложению защищен SSL-сертификатами, полученными через Certbot.
Базы данных¶
Приложение использует несколько систем хранения данных:
| Тип БД | Контейнер | Назначение |
|---|---|---|
| PostgreSQL | temporal-postgresql | Основное хранилище данных приложения |
| Elasticsearch | temporal-elasticsearch | Хранение данных для обеспечения видимости (visibility) |
Контейнеры Docker и их запуск¶
Приложение разворачивается в составе нескольких контейнеров, объединенных в сеть temporal-network.
Основные сервисы Temporal¶
| Имя образа | Контейнер | Порты (внутри/снаружи) | Описание |
|---|---|---|---|
temporalio/auto-setup | temporal-history | 8000, 7234 | Сервис истории событий |
temporalio/server | temporal-matching | 8001, 7235 | Сервис сопоставления (matching) |
temporalio/server | temporal-frontend | 8002, 7237 | Основной интерфейс взаимодействия |
temporalio/server | temporal-worker | 8003, 7232 | Исполнитель задач (worker) |
temporalio/ui | temporal-ui | 8080 | Веб-интерфейс управления Temporal |
temporalio/admin-tools | temporal-admin-tools | — | Инструменты администратора (tctl) |
Сервисы мониторинга и логирования¶
| Имя образа | Контейнер | Порты | Описание |
|---|---|---|---|
grafana/loki:latest | loki | 3100 | Сборщик логов |
prom/prometheus:v2.37.0 | prometheus | 9090 | Система сбора метрик |
grafana/grafana:7.5.16 | grafana | 8085 | Визуализация данных (дашборды) |
jaegertracing/all-in-one:1.37 | jaeger-all-in-one | 16686, 14268, 14250 | Распределенная трассировка |
otel/opentelemetry-collector:0.47.0 | otel-collector | 1888, 13133, 4317, 55670 | Сбор телеметрии OpenTelemetry |
Прокси и сетевые компоненты¶
| Имя образа | Контейнер | Описание |
|---|---|---|
jonasal/nginx-certbot:latest | nginx | Реверс-прокси с автоматическим получением SSL |
nginx:1.22.1 | temporal-nginx | Внутренний прокси для маршрутизации gRPC и HTTP трафика |
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
Расположение конфигурационных файлов и данных¶
-
Данные PostgreSQL: хранятся в Docker Volume.
-
Конфигурация Prometheus:
./deployment/prometheus/config.yml(внутри папки проекта). -
Конфигурация OpenTelemetry:
/etc/otel-collector-config.yaml. -
Конфигурация Loki:
./deployment/loki/local-config.yaml.
Доступные порты для подключения¶
-
443— Основной HTTPS доступ к приложению. -
8085— Графический интерфейс Grafana (через прокси). -
9090— Интерфейс Prometheus (через прокси). -
7233— gRPC порт для взаимодействия с Temporal.
Запуск, остановка приложения¶
Управление основным стеком сервисов осуществляется через Docker Compose:
-
Запуск:
docker compose up -d(в директории/root/docker-compose). -
Остановка:
docker compose down.