Azure service fabric 服务结构中的反向代理能否与多个windows容器一起使用?

Azure service fabric 服务结构中的反向代理能否与多个windows容器一起使用?,azure-service-fabric,Azure Service Fabric,我正在评估使用SF或docker swarm进行容器编排,我可以看到服务结构具有优势,因为它能够使用在集群中所有节点上运行的反向代理实现。问题是,我可以看到,基于集群清单,只有一个端口可以用作反向代理端口,因此,如果您有多个windows容器,并且每个容器都在各自的端口上运行,我不完全理解如何利用这些端口。我只需要使用端口:端口映射(不需要HTTP重写),所以最终需要一对一的反向端口映射到每个运行的windows容器。 是否可以通过使用服务结构来实现 为了清楚起见,我将www.app1.com和

我正在评估使用SF或docker swarm进行容器编排,我可以看到服务结构具有优势,因为它能够使用在集群中所有节点上运行的反向代理实现。问题是,我可以看到,基于集群清单,只有一个端口可以用作反向代理端口,因此,如果您有多个windows容器,并且每个容器都在各自的端口上运行,我不完全理解如何利用这些端口。我只需要使用端口:端口映射(不需要HTTP重写),所以最终需要一对一的反向端口映射到每个运行的windows容器。 是否可以通过使用服务结构来实现


为了清楚起见,我将www.app1.com和www.app2.com托管在两个不同的容器中,它们不需要相互交谈。我将这些部署到服务结构,如何使用具有单个已发布外部端口的反向代理从外部访问这些容器?

是的,您可以将反向代理用于多个容器。这个想法很简单

  • 配置端口到主机的映射,以便您的主机知道您的端口 应用程序正在侦听
  • 配置容器到容器,以便 容器向服务结构注册端点。你可以选择 此终结点的端口。这将通过命名注册 服务,可用于反向代理
  • 容器之间的通信可以通过使用服务名称和指定端口的反向代理来完成。如果您没有指定端口号,那么service fabric将为您分配一个端口号,您可以使用环境变量获取它
ServiceFabric团队在这里有关于这方面的优秀文档

此时(Service Fabric 5.6版),反向代理将使用Service Fabric命名服务执行服务解析,并提供URI以访问您的服务。反向代理将在其上找到您的服务的URL特定于服务结构-例如

您可以使用DNS服务获取容器IP(群集中运行容器的主机节点的IP)。但是,您只能通过DNS SRV记录查找来找到端口

在服务结构群集中公开容器的当前最佳选项有:

  • 如果您的容器有固定的主机端口,Azure负载平衡器将能够监视容器所在的位置,并仅将请求转发给这些节点。您可以向负载平衡器添加额外的公共IP,并为每个容器使用一个。无法与群集中的动态主机端口一起使用
  • Azure API管理可以通过与服务结构命名服务集成来解析服务结构服务
  • 创建自己的HTTP网关作为可靠服务:或
  • 在群集中将Nginx作为服务运行:基于此原型,您可以在服务结构中运行和配置Nginx:

  • 群集配置中只有一个条目可用于反向代理端口。我需要集群通过主机上不同的反向代理端口来处理多于单一类型的容器。可能吗?容器不需要相互通信如果第二步可以指定多个端点,那么每个端点都将有一个端口,这些端点将注册到命名服务。这样,您就可以拥有一台具有多个端点的主机,每个端点都有不同的端口。#很明显,我将www.app1.com和www.app2.com托管在两个不同的容器中,它们不需要相互通信。我将这些部署到app fabric,如何使用具有单个已发布外部端口的反向代理来访问这些容器?嗯,您可以使用命名服务拥有唯一的端点吗?如果你不能,那么你需要后共享这个容器,它不知道它以外的任何东西。它所做的只是监听端口80并做出响应。不确定唯一端口映射是什么。只需要能够转到群集的反向代理端口,获取www.app1.com,并从service fabric内部运行的一个容器中获取响应,与www.app2.comSad相同,但这使得service fabric在windows容器中不是竞争者,仅限于单个发布端口。Swarm负载均衡器(路由网格)(在Windows中没有此限制)。每个服务都将有自己发布的端口。群集中每个VM主机只有一个端口,而不是整个群集。各个容器可以使用相同的端口。这与swarm群集中没有什么不同。您可以将swarm mesh模式路由与nginx或您自己的HTTP网关在服务结构群集中的操作进行比较。swarm mesh wi我会为部署到集群的每个服务分配一个端口,而ServiceFabric会为所有服务分配一个端口。因此,如果我有两个完全隔离的容器,分别托管一个www.app1.com和另一个www.app2.com,那么我会在swarm的不同端口上发布两个服务,对swarm中任何节点上的其中一个端口的任何请求都将以路由结束正在为正确的容器分配端口。这不可能单独使用service fabric,对吗?“而ServiceFabric为所有容器分配单个端口”-您可以决定设置端口或使用动态分配的端口。由于外部负载平衡器将流量路由到各个节点,因此各个节点上承载的端口应为静态端口,因此动态端口是不可能的。外部LB将有两个VIP将www.app1.com的流量发送到所有节点上的一个端口,将www.app2.com的流量发送到网络上的另一个端口ll主机。路由网格将流量路由到底层容器。服务结构不能这样做,对吗?