Сценарий
Сервис работает, но недоступен
Процесс жив, в своём логе пишет, что слушает порт, и с самой машины отвечает. Снаружи до него не достучаться.
Мониторинг третий час пишет, что orders-api недоступен. Дежурный зашёл на машину, проверил и не понял: процесс запущен, порт слушается, запрос проходит. Тикет закрыли как ложную тревогу. Мониторинг продолжает ругаться.
Симптом
С самой машины всё в порядке. С любой другой - соединение не устанавливается.
$ sudo service orders-api status
orders-api is running
$ curl -s http://localhost:8080/
orders-api ok
$ curl -sS --max-time 3 http://$(hostname -I | awk '{print $1}'):8080/
curl: (7) Failed to connect to 172.18.0.5 port 8080 after 0 ms: Couldn't connect to serverОбрати внимание на последнюю команду. hostname -I печатает адрес машины в сети (у тебя он будет другим). Именно по нему к сервису ходят все, кроме тебя.
Что надо получить
Три условия. Сервис слушает на всех адресах машины, а не только на петлевом (127.0.0.1). По внешнему адресу машины API отвечает строкой orders-api ok. И файл программы /usr/local/bin/orders-api остался неизменным: этот сценарий про настройку, код в нём переписывать не нужно.
Как разбирать «сервис работает, но недоступен»
Первое: «процесс запущен» и «сервис доступен» - это два разных утверждения, и проверяются они разными командами. Урок открывается после входа. Создай бесплатный аккаунт, чтобы дочитать его и запустить лабораторию. Уже есть аккаунт? Войтиps отвечает на первое. На второе отвечает ss -ltnp: -l - слушающие сокеты, -t - TCP, -n - порты числами, -pДальше бесплатно, нужен только аккаунт