这是一个由两部分组成的问题。我在多伦多有一个 DigitalOcean Droplet,上面有一个灯组(当然还有一个网站)。我想创建该 Droplet 的快照,并在旧金山和阿姆斯特丹部署一个克隆。
如何根据位置以最小的延迟完成到服务器的路由?
如何实时克隆这些网站。例如,如果我编辑网站,更改会反映在所有服务器上吗?
谢谢
答案1
您可以使用AWS Route 53 基于延迟的路由。我非常有信心您可以将 R53 与非 AWS 源一起使用。
另外,CloudFlare 有一个流量管理器它可以进行“地理导航”。它可能仍处于测试阶段,我不知道它是免费版还是付费版。
更新 我刚刚注意到你的第二个问题。我假设你的目标主要是页面加载时间,其次是服务可用性。我进一步假设该网站是 Wordpress,因为使用现成的软件比使用定制软件更难实现我下面建议的操作。
如果您希望两个站点同时同步提供流量,则必须考虑某种多主数据库复制。这并不那么简单,但有一些技术可以做到这一点。Digital Ocean 有一个教程在这里。RSync 或 BitTorrent sync 将处理文件复制。
如果您的唯一目标是快速响应时间,那么您可能也应该使用带有 CDN 的单个服务器来确保您的静态资源在本地提供服务 - CloudFlare 非常适合此目的。您对页面的一次请求的延迟可能不是那么大,大约多 100 毫秒,其他资源将从最近的节点提供服务。
如果您的唯一目标是在发生故障时实现冗余,您可能仍会考虑将数据库设置为主/只读副本类型的方案。将所有流量路由到一台服务器,数据库和文件实时复制到第二站点。如果主站点发生故障,您将故障转移到第二站点。如果发生这种情况,您需要弄清楚当主站点恢复在线时该做什么,如何让一切恢复同步。在这种情况下,多主服务器可能仍然是最简单的,可以保持同步。
不幸的是,您要做的事情并不完全是微不足道的,并且根据您的使用情况,可能会变得中等到极其复杂。我们确实需要了解您的目标,以便提供更好的解决方案。
答案2
蒂姆对您的第一个问题给出了很好的解决方案。
第二个,(不幸的是)不是,这属于“缓存失效”问题。有几种解决方案:
- 使用一台服务器并使用 CDN 服务(Cloudflare/CloudFront)来缓存内容。您可以设置 TTL 来处理缓存失效(即“最终一致性”模型),或者,
- 使用一台服务器并使用CDN服务,并在更新内容后发送清除请求。
- 保留三台服务器,然后您将需要开发 API 来自己进行清除。