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

Обзор развертывания 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.

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

Развертывание выполняется в несколько этапов:

  1. Подготовка системы: Обновление системных пакетов через apt, установка Docker и Docker Compose.

  2. Настройка окружения:

  3. Клонирование репозитория с конфигурациями Temporal из GitHub в /root/docker-compose.

  4. Создание псевдонима (alias) для удобного управления через терминал: tctl направляет команды напрямую в контейнер temporal-admin-tools.

  5. Установка драйвера логирования Loki для Docker.

  6. Развертывание инфраструктуры:

  7. Запуск контейнеров приложения с использованием Docker Compose.

  8. Настройка прокси-сервера 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 трафика

Инструкция по обновлению приложения

Для обновления основного приложения необходимо выполнить следующие действия:

cd /root/docker-compose && docker compose pull && docker compose up -d

Расположение конфигурационных файлов и данных

  • Данные 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.

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