借助 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/