Mar*_*mes 6 high-availability reverse-proxy
我正在尝试在生产站点上设置 Traefik,但我正在努力解决一些高可用性问题。我认为我们在 Traefik 集群前面仍然需要一个反向代理。以下是我考虑过的潜在设置,以及为什么似乎需要反向代理:
设置 DNS A 记录以指向每个 Traefik 节点以进行负载平衡和故障转移。
根据包括this SO question和this SF question在内的多个站点,不鼓励这种做法。
由于 DNS 缓存和 TTL 问题,即使使用像 DNSMadeEasy 这样的服务似乎也不受欢迎。
将一条 DNS 记录指向运行 Traefik 的节点之一。
该节点成为 SPOF。我的节点在 CoreOS 上运行,每次更新后都会重新启动,因此我们可以保证每周有几分钟的停机时间。
我们可以在预计停机时将 DNS 记录移动到备用节点。这将是手动管理的痛苦。我可以设想一个与 locksmithd 配对的解决方案可以自动处理这个问题,但我真的不想构建它,它也不会处理意外停机时间。
使用 Docker Swarm(或 Kubernetes)的部分理由是使节点可互换。
在 Traefik 集群前面放置一个负载均衡器/反向代理。反向代理可以在所有 Traefik 节点之间提供故障转移,DNS 将指向反向代理。
我是错过了什么还是想多了?
有不同类型的解决方案。
1)在 Swarm/Kubernetes 集群前面构建您自己的 HA 负载均衡器,以分配流量并执行故障转移。
那里有很多不同的设备:
虽然这种方法是 HA,但通常并不便宜。
更便宜的替代方案可能是Nginx/Haproxy + Keepalived设置。
然而,您当然需要一个浮动 IP 并且必须处理 arp 缓存。
2)使用“云负载均衡器”。Digital Ocean、AWS、GKE、Openstack 都提供了这样的功能。它更容易设置(大多数时候),但如果它更便宜,你就必须计算。
在 DigitalOcean 上,LB 只需 20 美元,并且有一个带有托管 Kubernetes 集群的测试版。您可能想查看一下。所有组件都可以很好地连接在一起 https://www.digitalocean.com/products/kubernetes/
3) 如果您的应用程序不是 100% 关键,我可以建议我迄今为止使用的特殊解决方案:
Cloudflare + 低 TTL + https://github.com/Berndinox/cloudflare-ddns
它的工作原理很简单:https://github.com/Berndinox/compose-v3-collection/blob/master/wordpress/www.yml 如何:它启动 WordPress 及其所有要求,包括 DNS 容器。DNS 容器正在 Cloudflare 上更新域的 DNS 记录(取决于容器启动的主机,IP 不同)。很好,如果一台主机重新启动或容器运行状况检查失败,容器将被重新安排。当重新安排并且最初使用的主机离线时,容器将在另一台主机上启动,然后将新 IP 推送到 Cloudflare。这一切都会自动发生,无需做任何事情。:)
Cloudflare TTL 非常低,因此可能只有几秒钟的停机时间。
| 归档时间: |
|
| 查看次数: |
5369 次 |
| 最近记录: |