Service Fabric 中的反向代理可以与多个 windows 容器一起使用吗?
Can reverse proxy in Service Fabric be used with multiple windows containers?
我正在评估使用 SF 或 docker swarm 进行容器编排,我可以看到服务结构具有优势,因为它能够使用在集群中所有节点上运行的反向代理实现。问题是我可以看到基于集群清单只有一个端口可以用作反向代理端口,因此我不完全理解如果每个容器有多个 windows 个容器 运行 如何使用它那些 运行 在他们自己的端口上。我只需要使用 port:port 映射(没有 HTTP 重写),所以最终想要一对一反向端口映射到每个单独的 windows 容器 运行。
是否可以通过使用服务结构来完成?
需要说明的是,我将 www.app1.com 和 www.app2.com 托管在两个不同的容器中,它们不需要相互通信。我将它们部署到 Service Fabric,如何使用具有单个已发布外部端口的反向代理从外部访问这些容器?
是的,您可以对多个容器使用反向代理。想法很简单
- 配置端口到主机映射,以便您的主机知道您的端口
应用程序正在侦听
- 配置容器到容器,这样你的
容器向服务结构注册一个端点。你可以选择
此端点的端口。这将在 Naming 中注册
服务并可用于反向代理
- 可以使用您指定的服务名称和端口使用反向代理来完成容器之间的通信。如果您没有指定端口号,那么 service fabric 将为您分配一个,您可以使用环境变量获取它。
Service Fabric 团队在这里有关于此的优秀文档
https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-deploy-container-linux
此时(Service Fabric 5.6 版),反向代理将使用 Service Fabric 命名服务进行服务解析,并提供访问您的服务的 URI。反向代理将在其上找到您的服务的 URL 特定于 Service Fabric - 例如http://clusterFQDN/appName/serviceName:port.
您可以使用 DNS 服务为您获取容器 IP(集群中主机节点的 IP,运行连接您的容器)。但是,您只能通过执行 DNS SRV 记录查找来找到端口。
当前在 Service Fabric 集群中公开容器的最佳选择是:
- 如果你的容器有一个固定的主机端口,Azure 负载均衡器将能够监控容器所在的位置,并将请求仅转发到那些节点。您可以向您的负载均衡器添加额外的 public 个 IP,并为每个容器使用一个。不能与集群中的动态主机端口一起使用。
- Azure API 管理可以通过与 Service Fabric 命名服务集成来解析 Service Fabric 服务。
- 创建您自己的 HTTP 网关作为可靠服务:https://github.com/weidazhao/Hosting or https://github.com/c3-ls/ServiceFabric-Http
- 运行 Nginx 作为集群中的服务:基于这个原型,您可以 运行 并在 Service Fabric 中配置 Nginx:https://github.com/knom/ServiceFabric-Nginx
我正在评估使用 SF 或 docker swarm 进行容器编排,我可以看到服务结构具有优势,因为它能够使用在集群中所有节点上运行的反向代理实现。问题是我可以看到基于集群清单只有一个端口可以用作反向代理端口,因此我不完全理解如果每个容器有多个 windows 个容器 运行 如何使用它那些 运行 在他们自己的端口上。我只需要使用 port:port 映射(没有 HTTP 重写),所以最终想要一对一反向端口映射到每个单独的 windows 容器 运行。 是否可以通过使用服务结构来完成?
需要说明的是,我将 www.app1.com 和 www.app2.com 托管在两个不同的容器中,它们不需要相互通信。我将它们部署到 Service Fabric,如何使用具有单个已发布外部端口的反向代理从外部访问这些容器?
是的,您可以对多个容器使用反向代理。想法很简单
- 配置端口到主机映射,以便您的主机知道您的端口 应用程序正在侦听
- 配置容器到容器,这样你的 容器向服务结构注册一个端点。你可以选择 此端点的端口。这将在 Naming 中注册 服务并可用于反向代理
- 可以使用您指定的服务名称和端口使用反向代理来完成容器之间的通信。如果您没有指定端口号,那么 service fabric 将为您分配一个,您可以使用环境变量获取它。
Service Fabric 团队在这里有关于此的优秀文档 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-deploy-container-linux
此时(Service Fabric 5.6 版),反向代理将使用 Service Fabric 命名服务进行服务解析,并提供访问您的服务的 URI。反向代理将在其上找到您的服务的 URL 特定于 Service Fabric - 例如http://clusterFQDN/appName/serviceName:port.
您可以使用 DNS 服务为您获取容器 IP(集群中主机节点的 IP,运行连接您的容器)。但是,您只能通过执行 DNS SRV 记录查找来找到端口。
当前在 Service Fabric 集群中公开容器的最佳选择是:
- 如果你的容器有一个固定的主机端口,Azure 负载均衡器将能够监控容器所在的位置,并将请求仅转发到那些节点。您可以向您的负载均衡器添加额外的 public 个 IP,并为每个容器使用一个。不能与集群中的动态主机端口一起使用。
- Azure API 管理可以通过与 Service Fabric 命名服务集成来解析 Service Fabric 服务。
- 创建您自己的 HTTP 网关作为可靠服务:https://github.com/weidazhao/Hosting or https://github.com/c3-ls/ServiceFabric-Http
- 运行 Nginx 作为集群中的服务:基于这个原型,您可以 运行 并在 Service Fabric 中配置 Nginx:https://github.com/knom/ServiceFabric-Nginx