在HA负载平衡器后面集群Docker容器

大多数Docker的文献都认为,你可以在同一个物理服务器上运行数百甚至数千个容器。 我想知道从负载平衡/集群的angular度来看这是什么样子。

假设我有一个REST风格的Web服务fizz-service.war 。 通常,对于“正常”的虚拟机,我可能会将这个服务部署到50个虚拟机(例如, fizzsvc01.example.comfizzsvc50.example.com ),然后在服务URL后面集群/负载平衡这些虚拟机,例如http://fizz-service.example.com 。 当请求进入时,负载均衡器select一个节点来转发请求,比如fizzsvc34:8080/fizz-service

我想知道如何与Docker容器一起工作。 如果我有相同的50个容器运行,比如5个节点:

  • 这些节点可以是VM还是物理服务器?
  • 对于运行在相同节点上的容器,它们是否都在自己的端口上运行? 否则,你怎么能在同一个端口上运行50个服务实例?
  • 而对于“正常的虚拟机”,负载平衡器configuration了所有构成池的虚拟机,然后我只是将我的服务部署到池中的每个虚拟机上,Docker容器如何改变? 我的负载平衡器(可能是单独的基础设施,如F5或Nginx)如何“ 知道 ”可用于分配负载的所有容器?

或者当我进入Docker-land时,我的整个HA /负载平衡方法是否需要改变?

每个容器都将运行在一个专用的端口上(通常由Docker分配),并且需要一些机制来跟踪每个容器,以便为您的负载均衡器生成configuration。

所以没有什么变化,除了容器的数量可能更大,需要自动化才能实用。 与虚拟机相比,容器更为即时。