1

借助 1.12 中令人兴奋的新 Docker Swarm,似乎很有可能在服务器集群中部署多个应用程序。

我正在寻找一种在同一个端口和同一个集群上部署两个单独的应用程序或应用程序入口点的方法。考虑以下:

    web.myservice.com:80 -> Swarm ->     Service[web] -> web.1
                                                      -> web.2
                                                      -> web.3

backend.myservice.com:80 -> Swarm -> Service[backend] -> backend.1
                                                      -> backend.2
                                                      -> backend.3

在这种情况下,群仅在一个由多个主机组成的集群中,暴露端口 80。我想您可以暴露不同的端口并将负载均衡器设置为 proxy_pass 到另一个端口,但我会说有可能会很棒只在集群中公开主机名:端口,因此如果请求来自主机名和端口,它将被转发。如果您需要多个主机或端口,您可以公开多个。

这可能是可用的,这就是我问这个问题的原因。也许可以使用 HAProxy 或 Nginx 的一些高级配置来复制它。我已经进行了很多实验,发现很难使其可扩展。如果您有任何意见或建议,请就该主题提出建议!

- 马库斯

4

1 回答 1

1

发布端口时,它会绑定到节点的网络接口。您可以通过使用放置约束来确保这两个服务的任务永远不会在同一个节点上来实现这一点,但我认为最好有一个 nginx 服务来为您代理流量。

Swarm 为您的服务创建 DNS 条目,因此您可以通过名称轻松访问它们,一个简单的 nginx 示例如下:

http {
...
  server {
    server_name web.myservice.com;

    location / {
      proxy_pass http://web:8080;
      proxy_redirect default;
    }
  }

  server {
    server_name backend.myservice.com;

    location / {
      proxy_pass http://backend:8080;
      proxy_redirect default;
    }
  }
}
于 2016-07-07T10:34:12.523 回答