我的docker swarm具有使用Nginx代理访问Report服务的API服务。 Nginx代理仅执行proxy_pass并在2个副本中运行。我在通过服务名称或服务IP访问Nginx代理时遇到问题。有时它可以工作,但主要是我得到以下响应:
# curl 'http://nginx-proxy:8000/v1/report?id=662867'
curl: (7) Couldn't connect to server
# curl 'http://10.0.17.13:8000/v1/report?id=662867'
curl: (7) Couldn't connect to server
另一方面,如果我通过IP或从外部docker网络访问单个副本,则效果很好:
# curl 'http://10.0.17.14:8000/v1/report?id=662867'
0 662867 0 10 6 6 0.0 194 3 5 437
# curl 'http://10.0.17.18:8000/v1/report?id=662867'
0 662867 0 10 6 6 0.0 194 3 5 437
诸如内部Docker平衡器之类的感觉被大量请求所淹没,并停止接受新连接。 nginx日志中没有错误-每个请求的状态为200。但是API日志显示了这一点:
INFO Cannot get online report: Get http://nginx-proxy:8000/v1/report?id=732743: dial tcp 10.0.17.13:8000: connect: cannot assign requested address caller=/go/src/api/src/reader.go:300 (*ReaderCursor).readOnline
INFO Cannot get online report: Get http://nginx-proxy:8000/v1/report?id=732703: dial tcp 10.0.17.13:8000: connect: cannot assign requested address caller=/go/src/api/src/reader.go:300 (*ReaderCursor).readOnline
我使用的是官方Nginx图像,仅将worker_processes auto;
从1修改为自动。
任何想法哪里可能是错误的或在哪里寻找?