我有一组应用程序,我们目前正在过渡到一个更“云本机”的架构。我们首先将它们移动到容器中(Windows上的Docker),作为其中的一部分,我们希望使用负载平衡代理来处理到容器的流量。
在研究了几个选项之后,我们希望在这个架构的迭代中使用traefik作为负载平衡代理。可能需要注意,也可能不需要注意,此设置中通过traefik的所有通信量都是内部的;它不会为任何外部通信量提供服务。我也在一个自托管的环境中工作;由于合同问题,aws和azure等云提供商目前对我不可用。
现在,我的问题是如何最好地部署traefik。我至少可以看到两种选择:
首先,traefik可以部署在单独的“负载平衡器”主机上。我可以对这些主机使用循环dns,并通过它们传递流量。
其次,traefik可以部署在我的每个应用程序主机上。在这个设置中,traefik更像是一个“侧车”,每个主机上的应用程序都将使用本地traefik实例作为其他主机服务的代理。
我看到的一个问题是,在这两种设置中都没有实现真正的高可用性。在这两种情况下,traefik实例崩溃将导致至少某些服务不可用。在第一种情况下,循环dns和短ttl可以缓解这种情况?
缺乏高可用性是可以避免的吗?有没有其他方法来设计这个解决方案?traefik本身是否提供了如何构建该解决方案的指导?