本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 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) 架构。

在此图中,备份数据被直接发送至 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 存储库
最佳实践
根据 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 存储库 | AWS 管理员 |
创建 S3 存储桶。 |
有关更多信息,请参阅 Amazon S3 文档中的创建存储桶。 | AWS 管理员 |
Task | 描述 | 所需技能 |
---|---|---|
启动新对象存储库向导。 | 在 Veeam 中设置对象存储和横向扩展备份存储库之前,必须添加要用于容量和存档层的 Amazon S3 和 S3 Glacier 存储库。在下一个操作说明中,将学习如何将此类存储库连接至横向扩展备份存储库。
| AWS 管理员、应用程序所有者 |
为容量层添加 Amazon S3 存储。 |
| AWS 管理员、应用程序所有者 |
为存档层添加 S3 Glacier 存储。 | 如果想创建存档层,请使用其他信息部分中详述的 IAM 权限。
| AWS 管理员、应用程序所有者 |
Task | 描述 | 所需技能 |
---|---|---|
启动新横向扩展备份存储库向导。 |
| 应用程序所有者、AWS 系统管理员 |
添加横向扩展备份存储库,并配置容量和存档层。 |
| 应用程序所有者、AWS 系统管理员 |
相关资源
创建存储桶(Amazon S3 文档)
阻止对 Amazon S3 存储的公有访问(Amazon S3 文档)
使用 S3 对象锁定(Amazon S3 文档)
如何为 S3 对象存储连接创建安全 IAM policy
(Veeam 文档)
其他信息
以下各节提供 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": "*" } ] }