使用 Veeam Backup & Replication 备份数据并将其存档至 Amazon S3 - AWS Prescriptive Guidance

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

使用 Veeam Backup & Replication 备份数据并将其存档至 Amazon S3

由珍娜·詹姆斯(AWS)、安东尼·菲奥雷(AWS)(AWS)和威廉·奎格利(AWS)创作

摘要

此模式详细介绍了使用 Veeam 横向扩展备份存储库功能将 Veeam Backup & Replication 创建的备份发送至支持的 Amazon Simple Storage Service (Amazon S3) 对象存储类的过程。 

Veeam 支持多个 Amazon S3 存储类,以更好地满足您的特定需求。您可以根据备份或存档数据的数据访问、弹性和成本要求选择存储类型。例如,您可以将 30 天或更长时间内不打算访问的数据存储为 Amazon S3 不经常访问 (IA) 存储类型,从而降低成本。如果您计划将数据存档 90 天或更长时间,则可以使用 Amazon Simple Storage Service Glacier (Amazon S3) Glacier Flexible Retrieval 或 S3 Glacier Deep Archive (带 Veeam 存档层)。您还可以使用 S3 对象锁来制作在 Amazon S3 中不可变的备份。

此模式不包括如何使用磁带网关设置 Veeam Backup & Replication。 AWS Storage Gateway有关该主题的信息,请参阅 Veeam 网站上的使用 AWS VTL 网关的 Veeam Backup & Replication的部署指南

警告

这种情况需要 AWS Identity and Access Management (IAM) 用户具有编程访问权限和长期证书,这会带来安全风险。为帮助减轻这种风险,我们建议仅向这些用户提供执行任务所需的权限,并在不再需要这些用户时将其移除。必要时可以更新访问密钥。有关更多信息,请参阅《IAM 用户指南》中的 更新访问密钥

先决条件和限制

先决条件

  • Veeam Backup & Replication,包括 Veeam Availability Suite 或 Veeam Backup Essentials,已安装(您可以注册免费试用

  • 具有 Enterprise 或 Enterprise Plus 功能的 Veeam Backup & Replication 许可证,其中包含 Veeam Universal License (VUL)

  • 有权访问 Amazon S3 存储桶的活跃 IAM 用户

  • 有权访问亚马逊弹性计算云 (Amazon EC2) 和亚马逊虚拟私有云 (Amazon VPC) 的活跃 IAM 用户(如果使用存档层)

  • 通过公共 Internet 连接或 AWS Direct Connect 公共虚拟接口 (VIF) 实现从本地到 AWS 服务 具有可用带宽的网络连接,用于备份和恢复流量

  • 打开以下网络端口和端点,以确保与对象存储库通信正常:

    • Amazon S3 存储 – TCP – 端口 443:用于与 Amazon S3 存储进行通信。

    • *.amazonaws.com适用于 AWS 区域 中国区域的 Amazon S3 存储(云端点) AWS GovCloud (US) Regions,或*.amazonaws.com.cn用于中国区域:用于与 Amazon S3 存储进行通信。有关连接终端节点的完整列表,请参阅 AWS 文档中的 Amazon S3 终端节点

    • Amazon S3 存储 – TCP HTTP – 端口 80:用于验证证书状态。请考虑证书验证终端节点(证书吊销列表 (CRL) URLs 和在线证书状态协议 (OCSP) 服务器)可能会发生变化。实际地址列表请参见证书本身。

    • Amazon S3 存储 — 证书验证终端节点 —*.amazontrust.com:用于验证证书状态。请考虑证书验证端点(CRL URLs 和 OCSP 服务器)可能会发生变化。实际地址列表请参见证书本身。

限制

  • 对于用作 Veeam 对象存储库的任何 S3 存储桶,Veeam 均不支持其 S3 生命周期策略。其中包括带有 Amazon S3 存储类转换和 S3 生命周期过期规则的策略。Veeam 必须 是管理这些对象的唯一实体。启用 S3 生命周期策略可能会导致异常结果,包括数据丢失。

产品版本

  • Veeam Backup & Replication v9.5 Update 4 或更高版本(仅备份或容量层)

  • Veeam Backup & Replication v10 或更高版本(仅备份或容量层和 S3 对象锁定)

  • Veeam Backup & Replication v11 或更高版本(备份或容量层、存档或存档层以及 S3 对象锁定)

  • Veeam Backup & Replication v12 或更高版本(性能层、备份或容量层、存档或存档层以及 S3 对象锁定)

  • S3 标准

  • S3 标准 - IA

  • S3 单区 - IA

  • S3 Glacier Flexible Retrieval(仅 v11 及更高版本)

  • S3 Glacier Deep Archive(仅 v11 及更高版本)

  • S3 Glacier Instant Retrieval (仅 v12 及更高版本)

架构

源技术堆栈

  • 从 Veeam 备份服务器或 Veeam 网关服务器连接至 Amazon S3 的本地 Veeam Backup & Replication 安装

目标技术堆栈

  • Amazon S3

  • 亚马逊 VPC 和亚马逊 EC2 (如果使用存档层)

目标架构:SOBR

下图显示了横向扩展备份存储库 (SOBR) 的架构。

用于将数据从 Veeam 备份至 Amazon S3 的 SOBR 架构

Veeam Backup and Replication 软件可保护数据免受逻辑错误(例如系统故障、应用程序错误或意外删除)的影响。在此图中,备份首先在本地运行,然后将辅助副本直接发送至 Amazon S3。备份代表数据的 point-in-time副本。

工作流程包括将三个主要组件(分层或复制备份至 Amazon S3 所需组件)和一个选件:

  • Veeam Backup & Replication (1) – 是负责协调、控制和管理备份基础设施、设置、任务、恢复任务和其他过程的备份服务器。

  • Veeam 网关服务器(未在图中显示)— 当 Veeam 备份服务器未与 Amazon S3 出站连接时需要使用的可选本地网关服务器。

  • 横向扩展备份存储库 (2) – 支持多层数据存储水平扩展的存储库系统。横向扩展备份存储库由一个或多个备份存储库组成,可快速访问数据,并可使用 Amazon S3 对象存储库扩展,以便用于长期存储(容量层)和存档(存档层)。Veeam 使用横向扩展备份存储库在本地(性能层)与 Amazon S3 对象存储(容量层和存档层)之间自动分层数据。

    注意

    从 Veeam Backup & Replication v12.2 开始,直接到 S3 Glacier 功能使 S3 容量层成为可选的。可以将 SOBR 配置为性能层和 S3 Glacier 存档层。对于在容量层的本地(本地)存储上投入了大量资金并且只需要在云中长期保留存档的用户,此配置非常有用。有关更多信息,请参阅 Veeam Backup & Replication 文档

  • Amazon S3 (3) — 提供可扩展性、数据可用性、安全性和性能的 AWS 对象存储服务。

目标架构:DTO

下图显示了 direct-to-object (DTO) 架构。

用于将数据从 Veeam 备份至 Amazon S3 的 DTO 架构

在此图中,备份数据被直接发送至 Amazon S3,无需先存储于本地。辅助副本可以存储至 S3 Glacier。

自动化和扩缩

您可以使用存储库中提供的 AWS CloudFormation 模板自动创建 IAM 资源和 S3 VeeamHub GitHub 存储桶。模板包括标准选项和不可变选项。

工具

工具和 AWS 服务

  • Veeam Backup & Replication 是用于保护、备份、复制和恢复虚拟和物理工作负载的 Veeam 解决方案。

  • AWS CloudFormation帮助您对资源进行建模和设置,快速一致地配置 AWS 资源,并在资源的整个生命周期中对其进行管理。您可以使用模板来描述资源及其依赖关系,然后将它们作为堆栈一起启动和配置,而不必单独管理资源。您可以跨多个 AWS 账户 和 AWS 区域管理和配置堆栈。

  • 亚马逊弹性计算云 (Amazon EC2) 在中提供可扩展的计算容量 AWS Cloud。您可以根据需要使用 Amazon EC2 启动任意数量或数量的虚拟服务器,也可以进行横向扩展或扩展。

  • AWS Identity and Access Management (IAM) 是一项用于安全控制访问的 Web 服务 AWS 服务。借助 IAM,您可以集中管理用户、安全证书(例如访问密钥)以及控制用户和应用程序可以访问哪些 AWS 资源的权限。

  • Amazon Simple Storage Service (Amazon S3) 是一项对象存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。

  • Amazon S3 Glacier (S3 Glacier) 是一项安全、持久且成本较低的存储服务,适用于数据存档和长期备份。

  • Amazon Virtual Private Cloud(Amazon VPC)提供了一个逻辑上隔离的部分,您可以在 AWS Cloud 其中启动您定义的虚拟网络中的 AWS 资源。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用 AWS的可扩展基础设施的优势。

代码

使用VeeamHub GitHub 存储库中提供的 CloudFormation 模板自动为此模式创建 IAM 资源和 S3 存储桶。如果更喜欢手动创建资源,请按操作说明部分中的步骤操作。

最佳实践

  • 根据 IAM 最佳实践,我们强烈建议您定期轮转长期 IAM 用户凭证,例如您用于将 Veeam Backup & Replication 备份写入 Amazon S3 的 IAM 用户。有关更多信息,请参阅 IAM 文档中的 Security best practices

操作说明

Task描述所需技能

创建 IAM 用户。

按照 IAM 文档中的说明创建 IAM 用户。此用户不应具有 AWS 控制台访问权限,您需要为此用户创建访问密钥。Veeam 使用此实体进行身份验证 AWS 以读取和写入您的 S3 存储桶。您必须授予最低权限(即,只授予执行任务所需权限),这样用户拥有的权限就不会超出所需。有关要附加到 Veeam IAM 用户的 IAM policy 示例,请参阅其他信息 部分。

注意

或者,您可以使用VeeamHub GitHub 存储库中提供的 CloudFormation 模板为此模式创建 IAM 用户和 S3 存储桶。

AWS 管理员

创建 S3 存储桶。

  1. 登录 AWS Management Console 并打开 Amazon S3 控制台。 

  2. 如果您还没有现有 S3 存储桶可用作目标存储,请选择创建存储桶,然后指定存储桶名称 AWS 区域、和存储桶设置。

    • 建议为 S3 存储桶启用阻止公共访问选项,并设置访问和用户权限策略,以满足组织的要求。有关示例,请参阅 Amazon S3 文档

    • 建议启用 S3 对象锁定,即便您不打算立即使用。此设置仅能在创建 S3 存储桶时启用。

有关更多信息,请参阅 Amazon S3 文档中的创建存储桶

AWS 管理员
Task描述所需技能

启动新对象存储库向导。

在 Veeam 中设置对象存储和横向扩展备份存储库之前,必须添加要用于容量和存档层的 Amazon S3 和 S3 Glacier 存储库。在下一个操作说明中,将学习如何将此类存储库连接至横向扩展备份存储库。

  1. 在 Veeam 控制台上,打开备份基础设施视图。 

  2. 在库存窗格,选择备份存储库节点,然后选择添加存储库。 

  3. 添加备份存储库对话框中,选择对象存储Amazon S3

AWS 管理员、应用程序所有者

为容量层添加 Amazon S3 存储。

  1. Amazon Cloud Storage Services 对话框中,选择 Amazon S3

  2. 在向导的命名步骤中,指定对象存储名称和简短描述,例如创建者和创建日期。 

  3. 在向导的账户步骤中,指定对象存储账户。 

    • 对于凭证,请选择您在第一操作创建的 IAM 用户,以访问您的 Amazon S3 对象存储。 

    • 对于 AWS 区域, AWS 区域 选择 S3 存储桶所在的位置。

  4. 在向导的存储桶步骤中,指定对象存储设置。

    • 对于数据中心区域,选择 S AWS 区域 3 存储桶所在的位置。

    • 对于存储桶,请选择第一个操作中创建的 S3 存储桶。

    • 对于文件夹,请创建或选择要将对象存储库映射到的目标云文件夹。 

    • 如果想启用不可变性,请选择使最近备份在 X 天内不可变,然后设置应锁定备份的时间段。请注意,鉴于 Veeam 对 Amazon S3 的 API 调用次数的增加导致了启用的不可变性,继而导致了成本的增加。

  5. 在向导的摘要步骤中,查看配置信息,然后选择完成

AWS 管理员、应用程序所有者

为存档层添加 S3 Glacier 存储。

如果想创建存档层,请使用其他信息部分中详述的 IAM 权限。 

  1. 如前所述,启动新对象存储库向导。

  2. Amazon Cloud Storage Services 对话框中,选择 Amazon S3 Glacier

  3. 在向导的命名步骤中,指定对象存储名称和简短描述,例如创建者和创建日期。

  4. 在向导的账户步骤中,指定对象存储账户。

    • 对于证书,请选择您在第一个长篇故事中创建的 IAM 用户来访问您的 S3 Glacier 对象存储。 

    • 对于 AWS 区域, AWS 区域 选择 S3 存储桶所在的位置。

  5. 在向导的存储桶步骤中,指定对象存储设置。

    • 对于数据中心区域,选择 AWS 区域。

    • 对于存储桶,请选择用于存储备份数据的 S3 存储桶。这与容量层所用存储桶相同。

    • 对于文件夹,请创建或选择要将对象存储库映射到的目标云文件夹。 

    • 如果想启用不可变性,请选择使最近备份在整个保留策略期间不可变。请注意,鉴于 Veeam 对 Amazon S3 的 API 调用次数的增加导致了启用的不可变性,继而导致了成本的增加。

    • 如果想使用 S3 Glacier Deep Archive 作为存档存储类,请选择使用 Deep Archive 存储类

  6. 在向导的代理设备步骤,配置用于将数据从 Amazon S3 传输到 S3 Glacier 的辅助实例。您可以使用默认设置或手动配置每个设置。若要手动配置设置:

    • 选择 Customize (自定义)

    • 对于EC2 实例类型,请根据将备份文件传输到横向扩展备份存储库的存档层的速度和成本要求,选择代理设备的实例类型。

    • 对于 Amazon VPC,请选择目标实例的 VPC。

    • 对于子网,请选择代理设备的子网。

    • 对于安全组,请选择与选项关联的 VPC 安全组。

    • 对于重定向器端口,请指定用于在代理设备和备份基础设施组件之间执行路由请求的 TCP 端口。

    • 选择 确认 确认设置。

  7. 在向导的摘要步骤中,查看配置信息,然后选择完成

AWS 管理员、应用程序所有者
Task描述所需技能

启动新横向扩展备份存储库向导。

  1. 在 Veeam 控制台上,打开备份基础设施视图。 

  2. 在库存窗格,选择横向扩展存储库,然后选择添加横向扩展存储库

应用程序所有者、AWS 系统管理员

添加横向扩展备份存储库,并配置容量和存档层。

  1. 在向导的命名步骤中,指定扩展备份存储库的名称和简要描述。 

  2. 如果需要,则添加性能范围。您也可以使用现有的 Veeam 本地备份存储库作为性能等级。 从 Veeam 版本 12 开始,您可以绕过本地性能层添加 S3 存储桶作为 direct-to-object (DTO) 备份的性能范围。

  3. 选择高级,然后为横向扩展备份存储库指定其他选项。

    • 选择使用每台计算机的备份文件,以为每台计算机创建单独的备份文件,并将这些文件同时以多个流的形式写入备份存储库。建议使用此选项改善存储和计算资源利用率。

    • 选择在所需数据区处于脱机状态时执行完全备份以创建完整备份文件,以防包含增量备份还原点的数据区脱机。此选项需要通过横向扩展备份存储库中的可用空间托管完整备份文件。

  4. 在向导的策略步骤中,为存储库指定备份放置策略。 

    • 选择数据局部性,以将属于同一链的完整备份文件和增量备份文件存储至相同的性能范围。您可以将属于新备份链的文件按相同的性能范围或不同的性能范围存储(除非您以重复存储设备作为性能范围)。

    • 选择性能以将完整备份文件和增量备份文件按不同性能范围存储。此选项需要快速可靠的网络连接。如果选择性能,则可在每个性能范围内限制要存储的备份文件类型。例如,您可以在一个数据区存储完全备份文件,并在其他数据区上存储增量备份文件。若要选择文件类型:

      • 选择 Customize (自定义)

      • 备份放置设置对话框中,选择性能范围,然后选择编辑

      • 选择要在此范围内存储的备份文件类型。

  5. 在向导的容量层步骤中,配置要连接至横向扩展备份存储库的长期存储层。 

    • 选择使用对象存储扩展横向扩展备份存储库容量。对于对象存储库,请为您在上一操作中添加的容量层选择 Amazon S3 Glacier 存储。

    • 选择窗口 以选择用于移动或复制数据的时间窗口。

    • 选择创建备份后立即将其复制到对象存储,以将所有或仅最近创建的备份文件复制到容量范围。 

    • 选择在备份过期时将其移至对象存储,以将非活动备份链转移至容量范围。在移动 X 天以上的备份文件字段中,指定卸载备份文件的持续时间。(如果要在非活动备份链创建之日即卸载,请指定 0 天。) 如果横向扩展备份存储库已达到指定阈值,您还可以选择覆盖以更快地移动备份文件。

    • 选择加密上传至对象存储的数据,并指定密码来加密所有数据及其元数据,以进行分载。选择添加管理密码,以指定新密码。

  6. 在向导的存档层步骤中,配置要连接至横向扩展备份存储库的长期存档层。(如果您跳过添加 Amazon S3 Glacier 存储,则不会出现此步骤。) 

    • 选择将 GFS 完整备份存档至对象存储。对于对象存储库,请选择您在上一操作中添加的 Amazon S3 Glacier 存储。

    • 对于超过 N 天的存档 GFS 备份,请选择将文件移至存档区的时间窗口。(如果要在非活动备份链创建之日即存档,则指定 0 天。)

  7. 在向导的摘要步骤中,查看横向扩展备份储存库的配置信息,然后选择完成

应用程序所有者、AWS 系统管理员

相关资源

其他信息

以下各节提供 IAM policy 示例,您可以在此模式的操作说明部分创建 IAM 用户时使用。

容量层的 IAM policy

注意

将示例策略中 S3 存储桶的名称从更改<yourbucketname>为要用于 Veeam 容量层备份的 S3 存储桶的名称。另请注意,该策略应仅限于 Veeam 使用的特定资源(如以下政策中的Resource规范所示),并且该策略的第一部分禁用客户端加密,如 AWS 博客文章《防止意外加密 Amazon S3 对象》中所述。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictSSECObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-customer-algorithm": "false" } } }, "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:GetObjectVersion", "s3:ListBucketVersions", "s3:ListBucket", "s3:PutObjectLegalHold", "s3:GetBucketVersioning", "s3:GetObjectLegalHold", "s3:GetBucketObjectLockConfiguration", "s3:PutObject*", "s3:GetObject*", "s3:GetEncryptionConfiguration", "s3:PutObjectRetention", "s3:PutBucketObjectLockConfiguration", "s3:DeleteObject*", "s3:DeleteObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<yourbucketname>", "arn:aws:s3:::<yourbucketname>/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*" } ] }

存档层的 IAM policy

注意

 将示例策略中 S3 存储桶的名称从更改<yourbucketname>为要用于 Veeam 存档层备份的 S3 存储桶的名称。

若要使用现有 VPC、子网以及安全组:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Permissions", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:PutObject", "s3:GetObject", "s3:RestoreObject", "s3:ListBucket", "s3:AbortMultipartUpload", "s3:GetBucketVersioning", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:GetBucketObjectLockConfiguration", "s3:PutObjectRetention", "s3:GetObjectVersion", "s3:PutObjectLegalHold", "s3:GetObjectRetention", "s3:DeleteObjectVersion", "s3:ListBucketVersions" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ] } ] } { "Version": "2012-10-17", "Statement": [ { "Sid": "EC2Permissions", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:CreateKeyPair", "ec2:DescribeKeyPairs", "ec2:RunInstances", "ec2:DeleteKeyPair", "ec2:DescribeVpcAttribute", "ec2:CreateTags", "ec2:DescribeSubnets", "ec2:TerminateInstances", "ec2:DescribeSecurityGroups", "ec2:DescribeImages", "ec2:DescribeVpcs" ], "Resource": "arn:aws:ec2:<region>:<account-id>:*" } ] }

若要创建新 VPC、子网和安全组:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Permissions", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:PutObject", "s3:GetObject", "s3:RestoreObject", "s3:ListBucket", "s3:AbortMultipartUpload", "s3:GetBucketVersioning", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:GetBucketObjectLockConfiguration", "s3:PutObjectRetention", "s3:GetObjectVersion", "s3:PutObjectLegalHold", "s3:GetObjectRetention", "s3:DeleteObjectVersion", "s3:ListBucketVersions" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ] } ] } { "Version": "2012-10-17", "Statement": [ { "Sid": "EC2Permissions", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:CreateKeyPair", "ec2:DescribeKeyPairs", "ec2:RunInstances", "ec2:DeleteKeyPair", "ec2:DescribeVpcAttribute", "ec2:CreateTags", "ec2:DescribeSubnets", "ec2:TerminateInstances", "ec2:DescribeSecurityGroups", "ec2:DescribeImages", "ec2:DescribeVpcs", "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:ModifyVpcAttribute", "ec2:CreateSecurityGroup", "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:DescribeRouteTables", "ec2:DescribeInstanceTypes" ], "Resource": "*" } ] }