gpt4 book ai didi

amazon-web-services - AWS - HA NFS - 最佳实践

转载 作者:行者123 更新时间:2023-12-03 16:54:27 26 4
gpt4 key购买 nike

任何人都有一个在 AWS 上实现 NFS 的合理策略,它不是 SPoF(单点故障),或者至少,如果实例崩溃,能够快速恢复?

我读过这篇 SO post ,与与多个 EC2 实例共享文件的能力有关,但它没有回答如何在 AWS 上使用 NFS 确保 HA 的问题,只是可以使用 NFS。

网上很多 Assets 都说 AWS EFS 可用,但仍处于预览模式,仅在俄勒冈地区可用,我们的主 VPC 位于北加州,因此无法使用此选项。

其他在线 Assets 说 GlusterFS 是一种可行的方法,但是经过一些研究,由于竞争条件和性能问题,我对实现此解决方案感到不舒服。

另一个选项是 软NAS 但我想避免将未知的 AMI 引入严格控制的同质环境中。

留下 NFS . NFS 是我们在我们的开发环境中使用的并且工作正常,但它是开发的,所以如果它崩溃了,我们会在系统修复问题时去喝几杯啤酒,但在生产环境中,这显然是不行的。

目前我能想到的最佳解决方案是创建一个 EBS 和两个 EC2 实例。两个实例都将正常更新(通过 puppet)以保持堆栈对齐(内核、nfs 库等),但只有一个实例会挂载 EBS。我们在事件 NFS 实例上设置了一个监视器,如果它出现故障,我们会收到通知,然后我们手动分离并附加到备份 EC2 实例。我在想我们还创建了一个也可以取消/重新连接的网络接口(interface),因此我们只需要在 DNS 中维护一个 IP。

虽然我认为我们可以使用 keepalived 自动执行此操作,以及允许自动分离/重新连接的 IAM 策略。

--更新--

看起来 EBS 卷与特定的可用区相关联,因此重新附加到另一个 AZ 中的实例是不可能的。我能想到的唯一其他选择是:

  • 在每个 AZ 中创建 EC2,在公共(public)子网中(每个都有 EIP)
  • 为 TCP:2049
  • 创建路由 53 健康检查
  • 为 nfs-1 (AZ1) 和 nfs-2 (AZ2) 创建路由 53 故障转移策略

  • 这里唯一的问题是,保持两个 NFS 服务器同步的最佳方法是什么?只是在它们之间运行一个 rsync 脚本?

    或者是否有我完全错过的最佳实践?

    最佳答案

    有几个选项可以构建高可用性 NFS 服务器。虽然我更喜欢使用 EFS 或 GlusterFS,因为所有这些解决方案都有其缺点。

    一)DRBD
    可以在 DRBD 的帮助下同步卷。这允许您镜像您的数据。在不同的可用区中使用两个 EC2 实例以实现高可用性。缺点:配置和操作复杂。

    b) EBS 快照
    如果超过 30 分钟的 RPO 是合理的,您可以使用定期 EBS 快照来从另一个可用区的中断中恢复。这可以通过运行单个 EC2 实例、用户数据脚本和用于定期 EBS 快照的 cronjob 的 Auto Scaling 组来实现。缺点:RPO > 30 分钟。

    c) S3 同步
    可以将充当 NFS 服务器的 EC2 实例的状态同步到 S3。备用服务器使用 S3 保持最新状态。缺点:大量小文件的 S3 同步需要很长时间。

    我建议观看来自 AWS re:Invent 的演讲:https://youtu.be/xbuiIwEOCAs

    关于amazon-web-services - AWS - HA NFS - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33405069/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com