docker - 我可以在 Docker Swarm 的 80 端口和不同的主机名上运行两个单独的应用程序吗?

标签 docker haproxy docker-swarm docker-ucp

借助 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 的一些高级配置来复制它。我已经进行了很多实验,发现很难使其可扩展。如果您有任何意见或建议,请就该主题提出建议!

- 马库斯

最佳答案

发布端口时,它会绑定(bind)到节点的网络接口(interface)。
您可以通过使用放置约束来确保这两个服务的任务永远不会在同一个节点上来实现这一点,但我认为最好有一个 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;
    }
  }
}

关于docker - 我可以在 Docker Swarm 的 80 端口和不同的主机名上运行两个单独的应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38242579/

相关文章:

docker - 将 docker 卷移动到不同的分区

java - Haproxy 错误网关 502

kubernetes - 如何将密码添加到谷歌云内存存储

linux - HAProxy 使用 Docker 进行简单转发

java - 如何故意让 kubernetes 中的工作失败?

docker - 在堆栈部署上,无法固定图像以进行摘要:未经授权:客户端没有 list 的权限

nginx - 如何设置一个简单的包含 docker 的反向代理(nginx)服务器?

maven - 构建多个 Maven 模块,然后在 Docker 镜像中复制 JAR

docker - 在本地主机上的 Windows 10 中使用 docker 镜像运行 GitLab

Symfony 4 应用程序与 Docker Compose 一起工作,但与 Docker Swarm 一起中断(无法登录,分析器中断)