【问题标题】:AWS - HA NFS - Best practicesAWS - HA NFS - 最佳实践
【发布时间】:2016-01-29 01:17:40
【问题描述】:

是否有人制定了在 AWS 上实施 NFS 的合理策略,使其不是 SPoF(单点故障),或者至少在实例崩溃时能够快速恢复?

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

很多在线资产都在说 AWS EFS 可用,但它仍处于预览模式,仅在俄勒冈地区可用,我们的主要 VPC 位于北加州,所以无法使用此选项。

其他在线资产说 GlusterFS 是一种可行的方法,但经过一些研究,由于竞争条件和性能问题,我觉得实施此解决方案并不合适。

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

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

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

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

--更新--

EBS 卷似乎绑定到特定的可用区,因此重新连接到另一个 AZ 中的实例是不可能的。我能想到的唯一其他选择是:

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

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

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

【问题讨论】:

  • 取决于您的要求:您是否需要能够故障转移到另一个可用区?您的 RPO 和 RTO 是多少?您希望客户端自动进行故障转移吗?
  • @Andreas 我更新了 OP。

标签: amazon-web-services amazon-ec2


【解决方案1】:

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

a) 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

【讨论】:

  • 感谢您的回复。我看到了一些关于实施 DRBD 的帖子,但我们现在没有时间整合该解决方案。我们必须在本周末之前切换,所以此时我们只有一个 NFS 服务器在运行,下周我们将实施一些备份解决方案,并将发布我们的想法。
【解决方案2】:

AWS 已审核并批准了许多 SoftNAS AMI,可通过 AWS Marketplace 获取。联合发布的SoftNAS Architecture on AWS White Paper 提供了更多详细信息:

  • 安全性(第 4-11 页)
  • 跨可用区的高可用性(第 13-14 页)

您还可以尝试 30 天免费试用,看看它是否满足您的需求。 http://softnas.com/tryaws

全面披露:我为 SoftNAS 工作。

【讨论】:

  • 啊,不错。 SoftNAS 的唯一问题是它会产生另一项成本,它会将恶意节点引入严格控制的同质环境中。
猜你喜欢
  • 2019-10-19
  • 2020-03-31
  • 2015-02-05
  • 2017-11-16
  • 2015-08-03
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多