两个群集之间的docker swarm模式nginx

时间:2017-03-19 20:44:54

标签: nginx proxy high-availability docker-machine docker-swarm-mode

我试图在群集群集前创建代理。

此代理位于另一个群集群内,以提供HA。

这是目前的结构:

  1. 代理群集(ip范围192.168.98.100~192.168.98.102)
    • 代理manager1;
    • 代理worker1;
    • 代理worker2;
  2. App群集(ip范围192.168.99.100~192.168.99.107)
    • APP-manager1;
    • APP-manager2;
    • APP-manager3;
    • APP-worker1;
    • APP-worker2;
    • APP-worker3;
    • APP-worker4;
    • APP-worker5;
  3. 当我使用app-manager的IP地址配置nginx时,代理重定向效果很好。

    但是当我使用app-manager的主机名或DNS配置nginx时,代理服务找不到要重定向的服务器。

    这是工作配置文件:

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    events {
        worker_connections  1024;
    }
    http {
        upstream app {
            server 192.168.99.100:8080;
            server 192.168.99.101:8080;
            server 192.168.99.102:8080;
        }
        server {
            listen 80;
            location / {
                proxy_pass http://app;
            }
        }
    }
    

    这是一个好习惯吗? 或者也许我做错了?

1 个答案:

答案 0 :(得分:0)

您必须确保nginx可以将主机名解析为IP地址。请查看此信息以获取更多信息:https://www.nginx.com/blog/dns-service-discovery-nginx-plus/

检查nginx如何解析主机名或检查nginx服务器上的hosts文件。

另外,我有时会为本地dns https://cr.yp.to/djbdns.html运行此命令,然后确保所有nginx服务器都使用在服务器上运行的dns服务。配置djbdns比更新所有主机文件更容易。