# Развертывание в Docker Swarm

## Требования

- Docker Engine версии 20.10.0 или выше
- Docker Swarm инициализированный на целевых серверах
- Доступ к Docker registry

## Образы приложения

В системе используются следующие контейнеры:

- `76457942/monitoring.backend` - бэкенд мониторинга
- `76457942/monitoring.frontend` - фронтенд мониторинга
- `76457942/forwarder.backend` - бэкенд форвардера
- `76457942/forwarder.frontend` - фронтенд форвардера

## Подготовка к развертыванию

1. Убедитесь, что Docker Swarm инициализирован:

```bash
docker swarm init
```

2. Присоединение рабочих узлов (при необходимости):

```bash
docker swarm join --token <token> <manager-ip>:2377
```

## Развертывание приложения

1. Создайте docker-compose.yml файл:

```yaml
version: "3.8"

services:
  monitoring-backend:
    image: 76457942/monitoring.backend
    deploy:
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
    ports:
      - "5000:80"
    networks:
      - monitoring-network

  monitoring-frontend:
    image: 76457942/monitoring.frontend
    deploy:
      replicas: 2
    ports:
      - "80:80"
    networks:
      - monitoring-network

  forwarder-backend:
    image: 76457942/forwarder.backend
    deploy:
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
    ports:
      - "5001:80"
    networks:
      - monitoring-network

  forwarder-frontend:
    image: 76457942/forwarder.frontend
    deploy:
      replicas: 2
    ports:
      - "81:80"
    networks:
      - monitoring-network

networks:
  monitoring-network:
    driver: overlay
```

2. Разверните стек:

```bash
docker stack deploy -c docker-compose.yml monitoring-stack
```

## Управление развернутым приложением

### Просмотр статуса сервисов

```bash
docker service ls
```

### Масштабирование сервиса

```bash
docker service scale monitoring-stack_monitoring-backend=3
```

### Обновление сервиса

```bash
docker service update --image 76457942/monitoring.backend:new-version monitoring-stack_monitoring-backend
```

### Просмотр логов

```bash
docker service logs monitoring-stack_monitoring-backend
```

## Удаление развернутого приложения

```bash
docker stack rm monitoring-stack
```

## Мониторинг

После развертывания сервисы доступны по следующим адресам:

- Мониторинг Frontend: http://localhost:80
- Мониторинг Backend: http://localhost:5000
- Форвардер Frontend: http://localhost:81
- Форвардер Backend: http://localhost:5001

## Устранение неполадок

1. Проверка статуса узлов:

```bash
docker node ls
```

2. Проверка задач сервиса:

```bash
docker service ps monitoring-stack_monitoring-backend
```

3. Проверка сетей:

```bash
docker network ls
```
