设置 EBS/EFS 磁盘存储以进行灾难恢复

设置 EBS/EFS 磁盘存储以进行灾难恢复

我正在考虑如何在 AWS 上最好地设置几个环境。我想设置两台服务器:

  • 应用服务器(运行 Web 应用程序和 REST 服务)
  • 工具服务器(运行多个 ETL 作业)

最终结果应该是两个应用程序服务器和两个工具服务器(即每个可用区域上一个应用服务器/工具服务器)

  • 所有环境都将与同一个数据库通信
  • 每个环境都有自己的 EBS 存储
  • 单个外部共享存储 (EFS) 可从 4 个环境中的任何一个进行访问。

我对如何设置存储有点困惑。目标是确保如果 EC2 实例丢失,我不会丢失任何数据。为了实现这一点,我想设置它,以便将代码部署在本地存储 (EBS) 上,并将动态内容存储在外部共享存储 (EFS) 上。

所有应用程序都将位于具有以下结构的文件夹中

├─ application
    ├─ bin
    ├─ lib
    ├─ config
    ├─ logs
    ├─ data
        ├─ processed
        ├─ failed   

如果 EC2 实例死机,我想保留配置、日志和数据文件夹。其他文件夹(bin 和 lib)将仅包含可以从 GIT 重建的二进制代码。为了实现这一点,我正在考虑以下存储

应用服务器 1 和应用服务器 2 上的 EBS

├─ applications
    ├─ finance
        ├─ appname1
            ├─ bin
            ├─ lib
            ├─ config --> /storage/finance/config
            ├─ logs --> /storage/finance/logs
            ├─ data --> /storage/finance/date

最后三个将是外部存储文件夹的符号链接。

EFS(共享存储)

├─ storage
    ├─ finance
        ├─ appname1
            ├─ config
            ├─ logs
            ├─ data

上述结构可能是一个维护噩梦,但我想不出其他替代方案。使用上述方法,代码部署在每个应用服务器上,但数据在两个应用服务器之间共享。如果一个 AV 区域上的一个应用服务器死机,另一个仍可正常运行。

我考虑过的其他选择包括将所有内容放在 EBS 存储上并依赖备份/图像。这行不通,因为配置文件是动态的,而图像可能并不总是具有最新数据。

阅读有关 EFS 存储的信息后,我发现写入速度可能比较慢,这让我有点担心。问题:

  • 还有其他替代方案吗?
  • 上述方法还有其他缺点吗?
  • 有没有办法可以让我把所有内容(代码+数据)放在本地 EBS 存储上,并且在发生灾难时仍然能够恢复(到第二个)。

提前致谢

答案1

在查看 EFS 的 AWS 页面时,它提到“每个 Amazon EFS 文件系统对象(即目录、文件和链接)都冗余地存储在多个可用区域中。” EBS 页面上也有类似的措辞。因此那里存在一些冗余。下面是亚马逊 PDF高可用性。

对于 EC2,使用多个可用区域将降低您的风险。我会将每个实例放在一个单独的可用区域中。PDF 建议使用 EBS 快照和备用 EC2 实例来实现 HA。快照在区域内可用,因此可以轻松访问它们以进行灾难恢复。这样做可以回答您关于将所有内容放入 AWS EBS 的问题。而且相当简单在区域之间复制 EBS 卷增加冗余度并保持所有内容同步。这样,您就可以拥有一个生产环境、一个备用环境和一个可在发生故障时快速启动的替换环境,从而几乎始终拥有 2 个可用的环境。

查看该 PDF 和链接以及亚马逊有关高可用性的文档,看看哪种方法最适合您的业务需求和员工水平。

相关内容