水平可伸缩性和磁盘存储

Horizontal Scalability and disk storage

我正在尝试了解水平可扩展性(虚拟化)在磁盘存储方面的工作原理。

虚拟化是硬ware 计算机节点上的一个层,用于管理请求所需的资源。

所以我的问题是当我将 war 部署到网络服务器时会发生什么?我的意思是我在不同的节点上有一个复制的存储?

在我做了一些研究之后,我发现了 NAS 与 SAN。所以我希望有 SAN 复制来保证数据稳定性....是真的吗?

当我有像 Google 引擎或 AWS 这样的基于水平的服务器时,我的存储磁盘到底在哪里?

谢谢,

希望其中的几个示例会有所帮助。让我们举一个一般的、粗略的例子。我会尽量使信息简单易懂。假设我在 LAMP 堆栈上有一个业务 运行ning。 Apache+PHP 在 WEB1 服务器上 运行ning,在 DB1 服务器上 MySQL。客户数据位于 WEB1.

SAN 复制

首先 - 你关于复制的问题。这主要用于灾难恢复。对于数据 stability/reliability,SAN 有适当的 RAID 级别、服务级别协议和备用磁盘。例如 RAID5 容忍 raid-set 中 1 个磁盘的故障。 RAID6 容忍 raid-set 等中的 2 个磁盘发生故障。拥有热备用磁盘有助于快速重新填充发生故障的 RAID 磁盘。组织还为他们的磁盘卷创建快照并在不同的数据中心重放它们,以便拥有他们的数据的第二个副本。这是在常规备份和 VM 快照之上完成的。

AWS 磁盘

AWS 有两种类型的磁盘:

  • 临时:连接到 EC2 实例的磁盘
  • 弹性块存储 (EBS)

临时存储

不要将它用于任何重要的事情。 AWS 提供具有临时存储的 EC2 实例(这意味着 VM 将磁盘连接到服务器)并建议用户以 EBS(弹性块存储)的形式购买他们的磁盘切片。我选择不 运行 临时存储上的任何内容,因为如果 EC2 实例停止,临时存储上的信息就会消失!但是,如果我的分区位于 EBS 卷上,则 EC2 重启将是无缝的。所有数据都将在我的 EBS 卷上保持活动状态。

EBS

当我需要 VM 时,我会选择 EC2 实例 (CPU/Memory)。然后我以 100GB 的 EBS 卷的形式购买磁盘(如果我想做 RAID/LVM 等,则购买更多)并将其附加到我的 EC2 实例。现在我可以在我的 EC2 卷上安装 OS。分区都是在我的 EBS 卷上创建的。当 EC2 重新启动时,我的数据保持原样。

磁盘缩放

假设我以 EC2 实例 + 100GB EBS 卷开始我的业务。一切都很好,直到我的客户开始上传非常大的文件。我的磁盘快满了,我需要扩展一个分区。使用 AWS,我可以再购买 100GB 的 EBS 卷并扩展我的分区以使用这额外的 100GB。

服务器扩展

假设我的业务做得非常好,而我的 EC2 实例跟不上流量。我需要更多的马力,我选择添加另一台服务器 WEB2 运行ning Apache+PHP 服务器,它有自己的 EBS 卷。但是客户数据呢?我会在 WEB1 上存储一些数据,在 WEB2 上存储一些数据吗?这很难调和。

在 WEB1 和 WEB2 上保持代码相同

来自 Git 的代码(或选择的版本控制)将同时部署到 WEB1 和 WEB2。这将使我的服务器代码保持最新。我的服务器的配置管理可以通过 Ansible/Puppet/Chef 进行。

简化数据存储

我有一些选择。让我们讨论两个允许 WEB1 和 WEB2 共享 data/disk space 的选项。重要说明 - EBS 卷不能与多个 EC2 实例共享。 EBS 卷只能附加到一个 EC2 实例。

第一个选项 - 建立另一台服务器 DATA1 并将一个大的 EBS 卷连接到它,并将客户文件移到那里。 WEB1 和 WEB2 将客户数据发送到 DATA1 (rsync/ftp/scp)。 WEB1 和 WEB2 也将 read/write 来自 DB1 数据库。我什至可以通过拍摄 EBS 卷的快照并在另一台位于不同 AWS 区域或可用区的名为 DATA2 的服务器上重播快照来保护我的数据,以防 DATA1 不可用。

第二个选项 - AWS 有 S3 存储。它比 EBS 可靠且便宜。与其将 DATA1 和 DATA2 立起来,不如在 S3 上创建一个存储桶并将客户数据存储在那里更容易和更便宜。 WEB1和WEB2可以read/write无缝连接到S3。

我的磁盘在 AWS 上在哪里?

我不知道,也不需要知道。 AWS 必须有机架和磁盘机架。我从那里的某个地方得到了一片磁盘 space。他们的磁盘可能有冗余,但 EBS 故障是可能的。为了我们自己的理智,除了定期备份之外,对 EBS 卷进行 RAID 和快照是很好的。

与磁盘类似,AWS 必须有机架和服务器机架。我正在从这些机架中的某处获取我选择的 EC2 实例形式的虚拟机。当我关闭并重新启动 EC2 服务器时,我可能会从不同的机架获得相同规格的 VM。但是,除非我终止 EBS 卷并购买新的 EBS 卷,否则我的 EBS 卷将保持不变。

需要注意的一件事是,如果我在俄勒冈州购买了 EC2 实例,我的 EBS 卷将位于同一个俄勒冈地区和同一个可用区。

注意 - 这是一个非常笼统的答案。