我有一个nginxplus容器和一个演示服务,在Windows 10上以docker swarm模式运行。
我将端点模式用作演示服务的dnsrr,以便nginx可以将docker DNS服务器用作演示服务的解析器。
但是我在nginxplus日志中收到一条错误消息,提示“无法解析demosvcalias的服务http(3:找不到主机)”
Docker resolv.conf显示127.0.0.11作为看起来正确的名称服务器。
**docker exec -it b7665155d8e0 cat /etc/resolv.conf**
search xxx.com dev.xxx.com
nameserver 127.0.0.11
options ndots:0
docker-compose进行演示服务
version: "3.3"
services:
demosvc:
image: demo:latest
deploy:
endpoint_mode: dnsrr
replicas: 1
resources:
limits:
cpus: "0.1"
memory: 5000M
restart_policy:
condition: on-failure
#ports:
#- "8081:8080"
networks:
my-swarm-network :
aliases:
- demosvcalias
networks:
my-swarm-network:
external: true
docker-为nginx plus编写
version: "3"
services:
nginxp:
image: nginxp:latest
deploy:
replicas: 1
resources:
limits:
cpus: "0.1"
memory: 5000M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- my-swarm-network
networks:
my-swarm-network:
external: true
nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
resolver 127.0.0.11 valid=60s ipv6=off;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html;
}
location /demo {
proxy_pass http://demobackend;
}
}
upstream demobackend {
zone backend 32k;
server demosvcalias service=http resolve;
}
}
我也可以使用docker exec实用程序从nginx容器中卷曲http:// demosvscalias:8080 / demo.html。但是nginx解析器无法使用Docker嵌入式DNS服务器(127.0.0.11)解析demosvc。
我在这里想念什么吗?
更新:进行以下更新后,使用Docker嵌入式DNS服务器作为解析器,负载平衡工作正常。
在nginx.conf中
服务器demosvcalias服务= http解析==>服务器demosvcalias:8080解析;
更新了nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
resolver 127.0.0.11 valid=60s ipv6=off;
resolver_timeout 10s;
server {
access_log /var/log/nginx/access.log upstreamlog;
listen 80;
server_name localhost;
location / {
root html;
index index.html;
}
location /demo {
proxy_pass http://demobackend;
}
}
upstream demobackend {
zone backend 32k;
server demosvcalias:8080 resolve;
}
}
在进行以下更新之后,负载均衡在使用Docker嵌入式DNS服务器作为解析器的情况下可以正常工作。
在nginx.conf中
服务器demosvcalias服务= http解析==>服务器demosvcalias:8080解析;
更新了nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
resolver 127.0.0.11 valid=60s ipv6=off;
resolver_timeout 10s;
server {
access_log /var/log/nginx/access.log upstreamlog;
listen 80;
server_name localhost;
location / {
root html;
index index.html;
}
location /demo {
proxy_pass http://demobackend;
}
}
upstream demobackend {
zone backend 32k;
server demosvcalias:8080 resolve;
}
}
我将不得不研究为什么service = http引起问题的细节。不知道是否由于我使用的Nginxplus版本或其他原因。如果我发现任何东西就会更新
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句