在尝试将我在Docker Swarm上运行的应用程序移植到Azure容器服务时,我对Azure的负载均衡器部分感到震惊。 在本地,我有一个在Swarm Master上运行的HAproxy容器实例,并运行多个Web容器。 Web容器刚刚暴露了端口,并且它们未映射到运行它们的计算机。 HAproxy容器已将端口映射到主服务器,并在内部与我的Web容器通信以进行负载平衡。 这使我能够利用Docker Swarm中运行数量有限的任意数量的容器。 在azure容器服务中,我看到Azure负载均衡器只会与已映射的端口通信,这意味着每个代理只能运行1个容器,或者我的容器中保留了内部负载均衡器,这意味着用户将经历2在点击我的申请之前加载平衡器。
当我的应用程序使用粘性会话时,这不是理想的情况。 显然,微软的声明“Azure容器中的所有内容都相同”是折腾吗? 有什么解决方案或我在这里做错了什么?
此致 Harneet
答案 0 :(得分:0)
ACS的解决方案几乎完全相同。使用HAProxy并与Azure LB进行对话。唯一的区别是你不会在主服务器上运行代理服务器,你将让Swarm将它部署到代理服务器上。
您不应该在主人身上运行工作负载。例如,如果你有DDoS攻击并且无法接触到你的主人,你会怎么做?让Swarm为您部署代理意味着您也可以使用swarm监视代理的运行状况。
如果您真的想,可以像现在一样在主服务器上运行代理。解决方案是相同的,让Azure LB像您目前一样提供与代理的公共连接。