Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker swarm can';无法到达工作节点_Docker_Nginx_Docker Compose_Docker Swarm - Fatal编程技术网

Docker swarm can';无法到达工作节点

Docker swarm can';无法到达工作节点,docker,nginx,docker-compose,docker-swarm,Docker,Nginx,Docker Compose,Docker Swarm,因此,我建立了一个docker swarm,并在其上连接了一名工人,并部署了一个包含4个服务的堆栈: 生成器,它将位于工作节点 API和调度程序都将位于manager节点上 代理,它将位于manager节点上,接受请求并通过其他3个节点重定向请求 这是我的堆栈文件: 版本:“3.7” 服务: 发电机: 图片:musicorum/发电机:最新 重新启动:始终 环境: -“XXXX=XXXX” 部署: 资源: 保留: 内存:860M 安置: 限制条件: -“node.labels.generat

因此,我建立了一个docker swarm,并在其上连接了一名工人,并部署了一个包含4个服务的堆栈:

  • 生成器,它将位于工作节点
  • API和调度程序都将位于manager节点上
  • 代理,它将位于manager节点上,接受请求并通过其他3个节点重定向请求
这是我的堆栈文件:

版本:“3.7”
服务:
发电机:
图片:musicorum/发电机:最新
重新启动:始终
环境:
-“XXXX=XXXX”
部署:
资源:
保留:
内存:860M
安置:
限制条件:
-“node.labels.generator==是”
端口:
- 5000:5000
网络:
-代理服务器
-网络
卷数:
-类型:绑定
来源:/home/musicorum/cache
目标:/usr/src/app/cache
应用程序编程接口:
图片:musicorum/api:最新
重新启动:始终
环境:
-“XXXX=XXXX”
网络:
-代理服务器
端口:
- 4500:4500
部署:
安置:
限制条件:
-“节点.标签.生成器!=是”
调度程序:
图片:musicorum/调度程序:最新
重新启动:始终
环境:
-“XXXX=XXXX”
端口:
- 6500:6500
网络:
-代理服务器
部署:
安置:
限制条件:
-“节点.标签.生成器!=是”
代理:
图片:nginx:latest
重新启动:始终
网络:
-代理服务器
-网络
端口:
- 80:80
- 443:443
配置:
-资料来源:nginx_4
目标:/etc/nginx/conf.d/default.conf
-资料来源:sslcrt
目标:/etc/ssl/musicorumapp/ssl.crt
-资料来源:斯尔基
目标:/etc/ssl/musicorumapp/ssl.key
取决于:
-调度程序
-原料药
-发电机
部署:
安置:
限制条件:
-“节点.标签.生成器!=是”
配置:
nginx_4:
外部:正确
sslcrt:
外部:正确
斯尔基:
外部:正确
网络:
代理_ext:
外部:正确
网络:
驱动程序:覆盖
可附加:正确
如您所见,它们连接在同一个网络上,我甚至创建了
proxy\u ext
netg
来仔细检查连接,但Nginx在启动时会给出以下消息:

/docker-entrypoint.sh: Configuration complete; ready for start up


2020/07/07 13:32:17 [emerg] 1#1: host not found in upstream "musicorum_generator" in /etc/nginx/conf.d/default.conf:30


nginx: [emerg] host not found in upstream "musicorum_generator" in /etc/nginx/conf.d/default.conf:30
我不知道为什么管理器节点上的Nginx无法接触到worker节点上的生成器容器。如果有帮助,下面是我的
default.conf

server {
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/ssl/musicorumapp/ssl.crt;
    ssl_certificate_key /etc/ssl/musicorumapp/ssl.key;
    server_name api.musicorumapp.com;
    location / {
        proxy_pass http://musicorum_api:4500/;
    }
}

server {
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/ssl/musicorumapp/ssl.crt;
    ssl_certificate_key /etc/ssl/musicorumapp/ssl.key;
    server_name scheduler.musicorumapp.com;
    location / {
        proxy_pass http://musicorum_scheduler:6500/;
    }
}

server {
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/ssl/musicorumapp/ssl.crt;
    ssl_certificate_key /etc/ssl/musicorumapp/ssl.key;
    server_name generator.musicorumapp.com;
    location / {
        proxy_pass http://musicorum_generator:5000/;
    }
}

default.conf
中,需要通过服务名称引用服务。这是内部DNS将解析的名称

server {
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/ssl/musicorumapp/ssl.crt;
    ssl_certificate_key /etc/ssl/musicorumapp/ssl.key;
    server_name api.musicorumapp.com;
    location / {
        proxy_pass http://api:4500/;     <------ 'api' is the service name
    }
}
服务器{
听80;
听443ssl;
ssl_certificate/etc/ssl/musicorumapp/ssl.crt;
ssl证书密钥/etc/ssl/musicorumapp/ssl.key;
服务器名称api.musicorumapp.com;
地点/{
代理通行证http://api:4500/;