Docker swarm can';无法到达工作节点
因此,我建立了一个docker swarm,并在其上连接了一名工人,并部署了一个包含4个服务的堆栈: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
- 生成器,它将位于工作节点
- 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/;