Сценарий

Соединение висит и обрывается по таймауту

Служба слушает на всех адресах и с самой машины отвечает мгновенно. Запрос по адресу машины висит до таймаута вместо отказа.

Тот же orders-api, что и в сценарии «Сервис работает, но недоступен», только жалоба другая. Мониторинг снова показывает его красным, но в этот раз без слов «отказано в соединении»: запрос ждёт и не дожидается. Дежурный проверил привязку сокета, вспомнив прошлый раз, и она в порядке. Дальше идей нет.

Симптом

С самой машины всё отвечает. Сокет слушает на всех адресах. И всё равно запрос по адресу машины висит до таймаута.

$ sudo service orders-api status
orders-api is running

$ curl -s http://localhost:8080/
orders-api ok

$ sudo ss -ltnp 'sport = :8080'
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      5            0.0.0.0:8080      0.0.0.0:*    users:(("orders-api",pid=64,fd=3))

$ curl -sS --max-time 3 http://$(hostname -I | awk '{print $1}'):8080/
curl: (28) Connection timed out after 3002 milliseconds

Сравни последнюю строку с той, что была в прошлом сценарии. Там curl возвращал код 7 и слова Couldn't connect to server, и возвращал их сразу. Здесь код 28 и три секунды тишины. Это другой диагноз, и разбирать его надо иначе.

Что надо получить

Три условия. По внешнему адресу машины API отвечает строкой orders-api ok, отвечает не дольше пяти секунд, и в наборе правил файрвола не осталось правила с действием drop для порта 8080. Базовые правила файрвола на месте: снять защиту хоста целиком и нич

Бесплатно с аккаунтом

Дальше бесплатно, нужен только аккаунт

Урок открывается после входа. Создай бесплатный аккаунт, чтобы дочитать его и запустить лабораторию.

Создать бесплатный аккаунт

Уже есть аккаунт? Войти