Docker Swarm лог: Service ‘api_gateway’ replicas 2/3. Node ‘worker-2’ unreachable.

## Разбор лога Docker Swarm

Лог вида `Service ‘api_gateway’ replicas 2/3. Node ‘worker-2’ unreachable` сообщает о двух взаимосвязанных проблемах в кластере Docker Swarm:

1. **Replicas 2/3** — сервис `api_gateway` запущен только в 2 из 3 запрошенных экземпляров (реплик). Один контейнер не может быть размещён или упал.
2. **Node ‘worker-2’ unreachable** — узел `worker-2` недоступен для менеджера кластера. Это означает, что менеджер не получает heartbeat от данного воркера, и все задачи, которые были на нём запущены, переходят в статус `failed` или `shutdown`.

### Типичные причины

— Узел `worker-2` был выключен, перезагружается или потерял сетевое соединение.
— Проблемы с сетью между менеджером и воркером (firewall, MTU, потеря пакетов).
— Исчерпание ресурсов на узле (OOM killer завершил Docker daemon).
— Сбой самого Docker daemon на `worker-2`.

### Что делает Swarm автоматически

Docker Swarm пытается перепланировать задачи с недоступного узла на другие доступные воркеры. Если свободных ресурсов достаточно — реплика будет восстановлена автоматически.

### Диагностика

bash
# Статус узлов кластера
docker node ls

# Подробности по проблемному узлу
docker node inspect worker-2 —pretty

# Задачи сервиса и их статусы
docker service ps api_gateway —no-trunc

# Логи сервиса
docker service logs api_gateway

### Строка для CSV

Для включения данного события в CSV-отчёт используйте следующий формат:

timestamp,cluster,service,desired_replicas,running_replicas,unreachable_node,severity,message
2024-01-15T10:32:00Z,prod-swarm,api_gateway,3,2,worker-2,WARNING,»Service ‘api_gateway’ replicas 2/3. Node ‘worker-2’ unreachable.»

### Рекомендации по устранению

— Проверьте доступность `worker-2` через `ping` и `ssh`.
— Перезапустите Docker daemon: `systemctl restart docker`.
— Если узел не восстанавливается — выведите его из кластера: `docker node rm worker-2`.
— Добавьте новый узел для поддержания кворума реплик.
— Настройте алертинг на события `node unreachable` через Prometheus + Alertmanager или Datadog.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.