docker swarm模式nginx在2个swarm集群之间

docker swarm模式nginx在2个swarm集群之间,nginx,proxy,high-availability,docker-machine,docker-swarm-mode,Nginx,Proxy,High Availability,Docker Machine,Docker Swarm Mode,我正试图在swarm集群前面创建一个代理 该代理位于另一个swarm集群内,以提供HA 这是目前的结构: 代理群集(ip范围192.168.98.100~192.168.98.102) 代理管理器1 代理工作者1 代理工作者2 应用程序群集(ip范围192.168.99.100~192.168.99.107) app-manager1 app-manager2 app-manager3 app-worker1 app-worker2 app-worker3 app-worker4 app-

我正试图在swarm集群前面创建一个代理

该代理位于另一个swarm集群内,以提供HA

这是目前的结构:

  • 代理群集(ip范围192.168.98.100~192.168.98.102)
    • 代理管理器1
    • 代理工作者1
    • 代理工作者2
  • 应用程序群集(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
  • 当我使用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;
            }
        }
    }
    
    这是个好习惯吗?
    或者我做错了?

    您必须确保nginx可以将主机名解析为ip地址。有关更多信息,请查看此链接:

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

    另一方面,我有时会对本地dns运行此服务,然后确保所有nginx服务器都使用在服务器上运行的dns服务。配置DJBDN比更新所有主机文件更容易