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.
