在装有 Snow 设备集群的 Snow Family 设备上使用与 Amazon S3 兼容的存储 - Amazon Snowball Edge 开发者指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在装有 Snow 设备集群的 Snow Family 设备上使用与 Amazon S3 兼容的存储

集群是由三个或更多 Snowball Edge 设备组成的集合,用作用于本地存储和计算目的的单个逻辑单元。与单独的 Snowball Edge 设备相比,集群为本地存储和计算提供了两种主要好处:

  • 更高的耐久性 — 存储在 Snowball Edge 设备集群中的 S3 数据比单台设备具有更高的数据持久性。此外,尽管可能出现影响集群的硬件中断,但集群上的数据仍然安全可行。在数据处于危险之中,集群可以承受由 3 和 4 个设备组成的集群中丢失一台设备,在由 5 到 16 个设备组成的集群中最多可以承受两台设备的损失。您可以替换运行状况不佳的节点,以保持存储在集群中的数据的持久性和安全性。

  • 增加存储空间 — 借助 Snowball Edge 存储优化设备,您可以创建一个单个 16 节点集群,该群集具有高达 2.6 PB 的 S3 兼容可用存储容量。借助 Snowball Edge 计算优化设备,您可以创建一个单个 16 节点集群,其中包含高达 501 TB 的 S3 兼容可用存储容量。

Snowball Edge 设备的集群由无领导节点构成。任何节点都可以向整个集群写入数据和从中读取数据,并且所有节点都能够执行集群的 behind-the-scenes 管理。

在规划对 Snowball Edge 集群的使用时,请记住以下注意事项:

  • 我们建议您为群集中的所有设备提供冗余电源,以减少群集的潜在性能和稳定性问题。

  • 与独立的本地存储和计算作业一样,如果不将其他设备作为单独导入作业的一部分进行排序,则集群中存储的数据无法导入 Amazon S3 中。如果您预定其他设备作为导入作业,则可以将数据从集群传输到导入作业设备。

  • 要将数据从 Amazon S3 传输到集群,请使用 Amazon S3 API 在集群上创建 Amazon S3 存储桶,用于存储和检索 S3 中的对象。此外,您还可以使用 Amazon DataSync 在 Snowball Edge 设备上的 Snow Family 设备上的 Amazon 存储服务与 Amazon S3 兼容存储之间传输对象。有关更多信息,请参阅在 Snowball Edge 上使用兼容 S3 的存储配置传输

  • 您可以创建一个任务,从 Amazon Snow 系列管理控制台 Amazon CLI、或其中一个 Amazon SDK 中订购设备集群。有关更多信息,请参阅 入门

  • 集群中的每台设备都有一个节点 ID。节点 ID 是集群中每台设备的唯一标识符,就像独立设备的任务 ID 一样。你可以从 Amazon Snow 系列管理控制台、、、软件开发工具包和 Amazon Snowball Edge 客户端获取节点 ID。 Amazon CLI Snowball Edge 客户端命令describe-devicedescribe-cluster返回节点 ID 以及有关设备或集群的其他信息。

  • 集群的生命周期受在预置集群时向集群设备授予的安全证书的限制。默认情况下,Snowball Edge 设备在需要寄回之前最多可使用 360 天。在该时间结束时,设备将停止响应读/写请求。如果您需要将一台或多台设备保存超过 360 天,请与联系 Amazon Web Services Support。

  • 当 Amazon 收到退回的属于集群的设备时,我们会对该设备进行彻底的擦除。此擦除过程遵循美国国家标准与技术研究院(NIST)800-88 标准。

Snow 系列设备上与 Amazon S3 兼容的存储的容错能力和存储容量
集群大小 容错能力 Snowball Edge Compute Optimited(使用 AMD EPYC Gen1、HDD 和可选 GPU)设备的存储容量(以 TB 为单位) Snowball Edge Compute Optimized(使用 AMD EPYC Gen2 和 NVMe 进行了计算优化)设备的存储容量(以 TB 为单位) 经过存储优化的 Snowball Edge 存储容量 210 TB 设备(以 TB 为单位)

3

最多丢失 1 个节点

83

38

438

4

最多丢失 1 个节点

125

57

657

5

最多丢失 2 个节点

125

57

657

6

最多丢失 2 个节点

167

76

904

7

最多丢失 2 个节点

209

95

1096

8

最多丢失 2 个节点

250

114

1315

9

最多丢失 2 个节点

292

133

1534

10

最多丢失 2 个节点

334

152

1754

11

最多丢失 2 个节点

370

165

1970

12

最多丢失 2 个节点

376

171

1973

13

最多丢失 2 个节点

418

190

2192

14

最多丢失 2 个节点

459

209

2411

15

最多丢失 2 个节点

495

225

2625

16

最多丢失 2 个节点

501

228

2631

解锁集群后,您就可以在该集群上存储和访问数据了。您可以使用与 Amazon S3 兼容的端点从集群读取以及向其写入数据。

要从集群读取以及向其写入数据,您必须具有不超过设备集群中允许的不可用节点数量的读/写 quorum。

Snowball Edge 集群 Quorum

Quorum 表示集群中最少数量的 Snowball Edge 设备,这些设备必须相互通信以维护读/写 quorum。

当集群中的所有设备都运行正常时,您的集群就达到读/写法定人数。如果其中一两个设备脱机,则集群的运行容量就会降低。但您仍可以对集群进行读写操作。在集群中除一两台设备之外的所有设备都在运行时,集群仍具有读/写法定人数。在集群的运行容量受到影响之前可离线的节点数量可在 this table 中找到。

如果群集损失的设备数量超过中所示的设备数量,则可能会丢失 Quorom。this table当法定人数丢失时,集群将处于脱机状态,集群中的数据不可用。您可以修复此问题,否则数据可能永久丢失,具体取决于事件的严重性。如果这是临时的外部电源事件,并且您可以重新打开 Snowball Edge 设备并解锁集群中的所有节点,则您的数据将再次可用。

重要

如果健康节点的最低法定人数不存在,请联系。 Amazon Web Services Support

您可以使用describe-cluster命令查看每个节点的锁定状态和网络可访问性。使用集群存储时,您需要承担管理责任,确保集群中的设备运行正常且处于连接状态。有关更多信息,请参阅获取设备状态

如果您确定一个或多个节点运行状况不佳,则可以替换集群中的节点以保持法定数量以及数据的健康和稳定性。有关更多信息,请参阅 替换集群中的节点

重新连接不可用集群节点

节点或集群内的设备可能因出现断电或网损等问题而导致临时不可用,而不会损坏节点上的数据。在发生这种情况时,它会影响集群的状态。使用 snowballEdge describe-cluster 命令在 Snowball Edge 客户端中报告节点的网络可到达性和锁定状态。

建议您物理放置集群,以便能够访问所有节点的前部、后部和顶部。这样一来,您可以接触到背面的电源线和网线、顶部的运输标签(从而获取节点 ID)以及设备前面的 LCD 屏幕(从而获取 IP 地址和其他管理信息)。

当您检测到节点不可用时,建议您尝试下列过程之一,具体取决于导致节点不可用的场景。

重新连接不可用的节点
  1. 确保节点已打开电源。

  2. 确保节点已连接到集群的其他部分连接的同一内部网络。

  3. 如果您需要启动节点,请等待最多 20 分钟待其完成。

  4. 运行 snowballEdge unlock-cluster 命令或 snowballEdge associate-device 命令。有关示例,请参阅解锁 Snowball Edge 设备

重新连接已丢失网络连接但未断电的不可用节点
  1. 确保节点已连接到集群的其他部分所在的同一内部网络。

  2. 运行 snowballEdge describe-device 命令以查看何时将之前不可用的节点添加回集群。有关示例,请参阅获取设备状态

在执行前面的过程后,您的节点应正常运行。您还应具有一个读/写 quorum。如果不是这样,则您的一个或多个节点可能有更严重的问题,并且可能需要从集群中将其删除。

替换集群中的节点

要更换节点,您首先需要订购替换节点。您可以从控制台 Amazon CLI、或其中一个 Amazon SDK 订购替换节点。如果您正在从控制台预定替换节点,则可为任何尚未取消或完成的作业预定替换节点。然后,解除运行状况不佳的节点与集群的关联,将替换节点连接到您的网络并解锁包括替换节点在内的集群,将替换节点与集群相关联,然后在 Snow Family 设备上重启 Amazon S3 兼容存储服务。

从控制台预定替换节点
  1. 登录到 Amazon Snow 系列管理控制台

  2. 为属于从“作业”控制面板创建的集群的节点查找和选择作业。

  3. 对于操作,选择替换节点

    执行此操作将打开作业创建向导的最后一步,所有设置与最初创建集群的方式相同。

  4. 请选择创建作业

您的替换 Snowball Edge 目前正在寄送给您的途中。使用以下步骤从集群中移除运行状况不佳的节点。

从集群中移除节点
  1. 关闭要移除的节点的电源。有关更多信息,请参阅关闭 Snowball Edge 的电源。

  2. 使用describe-cluster命令确保无法访问运行状况不佳的节点。这由NetworkReachability对象State名称UNREACHABLE的值表示。

    snowballEdge describe-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://ip-address-of-device-in-cluster
    describe-cluster 输出
    { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "Devices": [ { "DeviceId": "JID12345678-1234-1234-1234-123456789012", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.0" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] }, { "DeviceId": "JID12345678-1234-1234-1234-123456789013", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.1" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] }, { "DeviceId": "JID12345678-1234-1234-1234-123456789014", "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "UNREACHABLE" } } ] }
  3. 使用describe-service命令确保s3-snow服务的状态为DEGRADED

    snowballEdge describe-service --service-id s3-snow --device-ip-addresses snow-device-1-address snow-device-2-address --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address
    describe-service命令的输出
    { "ServiceId": "s3-snow", "Autostart": true, "Status": { "State": "DEGRADED" }, "ServiceCapacities": [ { "Name": "S3 Storage", "Unit": "Byte", "Used": 38768180432, "Available": 82961231819568 } ], "Endpoints": [ { "Protocol": "https", "Port": 443, "Host": "10.0.0.10", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow bucket API endpoint", "DeviceId": "JID-beta-207012320001-24-02-05-17-17-26", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.11", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow object API endpoint", "DeviceId": "JID-beta-207012320001-24-02-05-17-17-26", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.12", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow bucket API endpoint", "DeviceId": "JID-beta-207012240003-24-02-05-17-17-27", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.13", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow object API endpoint", "DeviceId": "JID-beta-207012320001-24-02-05-17-17-27", "Status": { "State": "ACTIVE" } } ] }
  4. 使用disassociate-device命令取消关联并将运行状况不佳的节点从集群中移除。

    snowballEdge disassociate-device --device-id device-id --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://ip-address-of-unhealthy-device
    disassociate-device命令的输出
    Disassociating your Snowball Edge device from the cluster. Your Snowball Edge device will be disassociated from the cluster when it is in the "DISASSOCIATED" state. You can use the describe-cluster command to determine the state of your cluster.
  5. 再次使用该describe-cluster命令来确保不健康的节点已与集群断开关联。

    snowballEdge describe-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https:ip-address-of-healthy-device
    describe-clusterof 命令显示节点已解除关联
    { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "Devices": [ { "DeviceId": "JID12345678-1234-1234-1234-123456789012", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.0" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] }, { "DeviceId": "JID12345678-1234-1234-1234-123456789013", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.1" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] }, { "DeviceId": "JID12345678-1234-1234-1234-123456789014", "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "DISASSOCIATED" } } ] }
  6. 关闭电源,然后将运行状况不佳的设备放回原处。 Amazon有关更多信息,请参阅关闭 Snowball Edge 的电源并返回 Snowball Edge 设备。

当替换设备到达时,请按照以下步骤将其添加到集群中。

添加替换设备
  1. 放置群集的替换设备,以便您可以访问所有设备的正面、背面和顶部。

  2. 启动节点并确保该节点与群集的其余部分连接到相同的内部网络。有关更多信息,请参阅连接到您的本地网络

  3. 使用unlock-cluster命令并包括新节点的 IP 地址。

    snowballEdge unlock-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://ip-address-of-cluster-device --device-ip-addresses node-1-ip-address node-2-ip-address new-node-ip-address

    在下一步中将新节点与集群关联DEGRADED之前,新节点的状态将为。

  4. 使用associate-device命令将替换节点与群集相关联。

    snowballEdge associate-device --device-ip-address new-node-ip-address
    例 的associate-device命令输出
    Associating your Snowball Edge device with the cluster. Your Snowball Edge device will be associated with the cluster when it is in the ASSOCIATED state. You can use the describe-device command to determine the state of your devices.
  5. 使用describe-cluster命令确保新节点与集群相关联。

    snowballEdge describe-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://node-ip-address
    例 的describe-cluster命令输出
    { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "Devices": [ { "DeviceId": "JID12345678-1234-1234-1234-123456789012", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.0" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] }, { "DeviceId": "JID-CID12345678-1234-1234-1234-123456789013", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.1" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] }, { "DeviceId": "JID-CID12345678-1234-1234-1234-123456789015", "UnlockStatus": { "State": "UNLOCKED" }, "ActiveNetworkInterface": { "IpAddress": "10.0.0.2" }, "ClusterAssociation": { "ClusterId": "CID12345678-1234-1234-1234-123456789012", "State": "ASSOCIATED" }, "NetworkReachability": { "State": "REACHABLE" }, "Tags": [] } } ] }
  6. 在新节点上,创建两个虚拟网络接口 (VNI)。有关更多信息,请参阅在 Snow 系列设备上启动与 Amazon S3 兼容的存储

  7. 使用stop-service命令停止 s3-snow 服务。

    snowballEdge stop-service --service-id s3-snow --device-ip-addresses cluster-device-1-ip-address cluster-device-2-ip-address cluster-device-3-ip-address --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address
    例 的stop-service命令输出
    Stopping the Amazon service on your Snowball Edge. You can determine the status of the Amazon service using the describe-service command.
  8. 将新节点添加到集群后,使用start-service命令启动 s3-snow 服务。

    snowballEdge start-service --service-id s3-snow --device-ip-addresses cluster-device-1-ip-address cluster-device-2-ip-address cluster-device-3-ip-address --virtual-network-interface-arns "device-1-vni-ip-address-a" "device-1-vni-ip-address-b" "device-2-vni-ip-address-a" "device-2-vni-ip-address-b" "device-3-vni-ip-address-a" "device-3-vni-ip-address-b" --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address
    例 的start-service命令输出
    Starting the Amazon service on your Snowball Edge. You can determine the status of the Amazon service using the describe-service command.
  9. 使用describe-service命令确保 s3-snow 服务已启动。

    snowballEdge describe-service --service-id s3-snow --device-ip-addresses snow-device-1-address snow-device-2-address snow-device-3-address --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address
    例 的descibe-service命令输出
    { "ServiceId": "s3-snow", "Autostart": true, "Status": { "State": "ACTIVE" }, "ServiceCapacities": [{ "Name": "S3 Storage", "Unit": "Byte", "Used": 38768180432, "Available": 82961231819568 }], "Endpoints": [{ "Protocol": "https", "Port": 443, "Host": "10.0.0.10", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow bucket API endpoint", "DeviceId": "JID12345678-1234-1234-1234-123456789012", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.11", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow object API endpoint", "DeviceId": "JID12345678-1234-1234-1234-123456789013", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.12", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow bucket API endpoint", "DeviceId": "JID12345678-1234-1234-1234-123456789015", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.13", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow object API endpoint", "DeviceId": "JID-beta-207012320001-24-02-05-17-17-27", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.14", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow bucket API endpoint", "DeviceId": "JID-beta-207012240003-24-02-05-17-17-28", "Status": { "State": "ACTIVE" } }, { "Protocol": "https", "Port": 443, "Host": "10.0.0.15", "CertificateAssociation": { "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT" }, "Description": "s3-snow object API endpoint", "DeviceId": "JID-beta-207012320001-24-02-05-17-17-28", "Status": { "State": "ACTIVE" } } }] }