首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >负载均衡器/反向代理: docker-swarm中的“连接到上游时暂时禁用上游服务器”?

负载均衡器/反向代理: docker-swarm中的“连接到上游时暂时禁用上游服务器”?
EN

Stack Overflow用户
提问于 2019-10-11 23:00:16
回答 1查看 2.9K关注 0票数 0

我在docker-swarm中运行1个manager和2个worker节点。

工作节点运行3个堆栈与php/nginx网站,所以这是site1,site2,在浏览器中加载"This is site*/(worker1 or worker2)“的site3。当我在其中一个节点上放置反向代理时,这可以很好地工作。

但我想在管理器节点上放置一个负载均衡器/反向代理,我还禁用了其他两个堆栈,因此在本例中,两个工作节点上都只有"site1“堆栈。他们的Ip是"10.0.14.16“和"10.0.14.17”。

这是LB/RP nignx配置文件。

代码语言:javascript
复制
   upstream site1_nginx  {
     server 10.0.14.16;
     server 10.0.14.17;
   }
   server {
       listen 80;
       server_name site1.local;

       location / {
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass http://site1_nginx;

       }
   }

这是nignx的docker组合文件:

代码语言:javascript
复制
version: '3'

services:
  nginx:
      image: nginx:latest
      deploy:
        placement:
          constraints:
            - node.role==manager
        mode: global
      ports:
          - "80:80"
      volumes:
          - "./conf.d/:/etc/nginx/conf.d"

      networks:
          - reprox
networks:
  reprox:
    external: true

但是当我创建服务时,我得到了这个错误:

代码语言:javascript
复制
loadbalancer_nginx.0.ua0z0l8gm18e@ubuntu-vm1    | 2019/10/11 14:36:00 [error] 6#6: *12 connect() failed (111: Connection refused) while connecting to upstream, client: 10.255.0.2, server: site1.local, request: "GET / HTTP/1.1", upstream: "http://10.0.14.17:80/", host: "site1.local"
loadbalancer_nginx.0.ua0z0l8gm18e@ubuntu-vm1    | 2019/10/11 14:36:00 [warn] 6#6: *12 upstream server temporarily disabled while connecting to upstream, client: 10.255.0.2, server: site1.local, request: "GET / HTTP/1.1", upstream: "http://10.0.14.17:80/", host: "site1.local"
loadbalancer_nginx.0.ua0z0l8gm18e@ubuntu-vm1    | 2019/10/11 14:36:00 [error] 6#6: *12 connect() failed (111: Connection refused) while connecting to upstream, client: 10.255.0.2, server: site1.local, request: "GET / HTTP/1.1", upstream: "http://10.0.14.16:80/", host: "site1.local"
loadbalancer_nginx.0.ua0z0l8gm18e@ubuntu-vm1    | 2019/10/11 14:36:00 [warn] 6#6: *12 upstream server temporarily disabled while connecting to upstream, client: 10.255.0.2, server: site1.local, request: "GET / HTTP/1.1", upstream: "http://10.0.14.16:80/", host: "site1.local"
loadbalancer_nginx.0.ua0z0l8gm18e@ubuntu-vm1    | 2019/10/11 14:36:01 [error] 6#6: *12 no live upstreams while connecting to upstream, client: 10.255.0.2, server: site1.local, request: "GET / HTTP/1.1", upstream: "http://site1_nginx/", host: "site1.local"

另外,如果需要,还可以使用site1 nginx站点配置:

代码语言:javascript
复制
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    index index.php index.html;
    server_name site1.local;
    resolver 127.0.0.11;

    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /code;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        set $upstream php:9000;        
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass $upstream;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

docker网络很好,我确实有一个覆盖网络和php和nignx之间的网络。

EN

回答 1

Stack Overflow用户

发布于 2019-10-12 01:07:21

Docker swarm拥有自己的负载均衡器、网络和DNS系统。如果您希望使用自己的平衡器,则没有理由定义节点的IP地址,因为docker还为您提供了抽象并管理服务发现。

由于routing mesh的存在,使用IP路由的解决方案不会像您想象的那样工作。所有请求都会在不考虑获取流量的节点的情况下实现负载均衡。您可以访问IP1,由于路由mesh IP2可以处理请求。

您想要的是将您的站点引用为您已定义为服务名称的DNS记录。

像这样

代码语言:javascript
复制
upstream site1_nginx  {
    server site1:80;
}

site1docker-compose.yml 中定义的服务名称(nginx 的 DNS 名称为 nginx)。您可以将该服务称为特定的副本,但随后您需要自己实现健康检查。

代码语言:javascript
复制
upstream site1_nginx  {
    server site1.1:80;
    server site1.2:80;
    server site1.3:80;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58343920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档