프로그래밍, 엔지니어링

Docker swarm NGINX (113: Host is unreachable) 에러

양마에 2021. 10. 11. 12:45

 

Stockship online에 접속을 할때면 간헐적으로 접속이  3~4초간 지연될때가 있었다.

 

관련해서 nginx docker swarm, dealy, slow등 여러 검색으로 검색을 해보았지만 이렇다할 답을 찾지 못하였다.

 

처음엔 nginx의 keepalive옵션이 관련이있나 싶어서 찾아보았지만 이것도 답이 아니었다.

 

그러던중 nginx의 docker log를 살펴보니, 서버 응답이 느릴때면 Nginx에 113: Host is unreachable 에러가 발생하는 것이었다.

 

2021/10/11 11:56:34 [error]

 32#32: *7 connect() failed (113: Host is unreachable) while connecting to upstream, client: 10.0.0.2, server: , request: "GET / HTTP/1.1", upstream: "http://10.0.4.164:4000/", host: "stockship.kr:7443", referrer: "https://stockship.kr/"

 

이때, nginx가 10.0.4.164라는 IP로 upstream을 시키는데 이는 현재 docker에서 사용하지 않는 ip로 확인되었다.

 

그렇다면 왜 nginx는 사용하지도 않는 ip로 upstream을 한것일까....

 

한참을 고민하다 결국 답을 찾았다.

 

Docker stack으로 서비스를 구성하면 docker setvice와 docker network가 실행되는데, docker service만 재시작 해서, docker network는 재시작하지 않았던것이 문제.

 

 

이를해결 하기위해 docker service rm이 아니라 docker stack rm 을 해 준후 서비스를 재시작해 주었다.

 

이렇게 해줬더니 nginx에서 113에러가 발생하지 않았다.