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

Запуск системы

Первый запуск

cd /opt/llm-firewall

# Запуск всех сервисов
docker compose up -d

# Просмотр статуса
docker compose ps

Порядок инициализации (dependency chain)

Сервисы запускаются в определённом порядке благодаря depends_on:

1. PostgreSQL, Redis, MinIO         (инфраструктура)
2. MinIO Init                       (создание bucket policies)
3. Profiles Registry Migrate        (миграции БД)
4. Admin API Migrate                (миграции БД)
5. Profiles Registry                (управление профилями)
6. OPA                              (policy engine)
7. Admin API                        (административный API)
8. PDP                              (Policy Decision Point)
9. Request Normalizer               (нормализация запросов)
10. PII Detector                    (детекция PII)
11. Translation Service             (перевод RU→EN, загрузка модели ~30с)
12. Threat Detector                 (детекция угроз, загрузка модели ~60-120с)
13. Content Safety                  (контентная безопасность, загрузка модели ~60-120с)
14. Content Policy Service          (кастомные политики)
15. API Gateway                     (оркестратор — запускается после всех детекторов)
16. Admin API Consumer              (обработка событий из Redis)
17. Admin API Retention Worker      (периодическая очистка данных)
18. Event Exporter                  (экспорт событий в SIEM)
19. Admin UI                        (веб-интерфейс)

Важно

ML-сервисы (threat-detector, content-safety) требуют значительного времени для загрузки моделей. start_period: 120s в health check учитывает это.

Проверка GPU в контейнерах

# Translation Service
docker exec llm-firewall-translation-service python -c "
import torch
print(f'CUDA available: {torch.cuda.is_available()}')
print(f'CUDA device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"N/A\"}')
"

# Threat Detector
docker exec llm-firewall-threat-detector python -c "
import torch
print(f'CUDA available: {torch.cuda.is_available()}')
print(f'CUDA device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"N/A\"}')
"

# Content Safety
docker exec llm-firewall-content-safety python -c "
import torch
print(f'CUDA available: {torch.cuda.is_available()}')
print(f'CUDA device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"N/A\"}')
"

Проверка загрузки ML-моделей

# Проверка логов на наличие "cuda" или "GPU"
docker compose logs translation-service | grep -i "cuda\|gpu\|device"
docker compose logs threat-detector | grep -i "cuda\|gpu\|device\|model"
docker compose logs content-safety | grep -i "cuda\|gpu\|device\|model"

Ожидаемые сообщения:

  • Model loaded on cuda.
  • Using device: cuda.
  • CUDA available: True.

Просмотр логов запуска

# Все логи
docker compose logs -f

# Логи конкретного сервиса
docker compose logs -f api-gateway
docker compose logs -f threat-detector

# Последние 100 строк
docker compose logs --tail=100 threat-detector