10.3. 启用基于日志的存储桶复制
在创建存储桶复制策略时,您可以使用日志以便更快地复制最新的数据,而基于扫描的默认复制则可用于复制其余数据。
此功能需要在 AWS 或 Azure 上设置存储桶日志。有关设置 AWS 日志的更多信息,请参阅启用 Amazon S3 服务器访问日志。AWS 日志存储桶需要在与源 NamespaceStore AWS 存储桶相同的区域中创建。
此功能只在由 NamespaceStore 支持的存储桶中被支持。BackingStores 支持的存储桶无法使用基于日志的复制。
您可以使用 Amazon Web Service (AWS)云环境的事件日志来优化复制。在创建命名空间存储桶的过程中,您可以使用 Web 控制台为新的命名空间存储桶启用基于日志的存储桶复制。
先决条件
- 确保 AWS 中启用了对象日志记录。如需更多信息,请参阅启用 Amazon S3 服务器访问日志 中的"使用 S3 控制台"部分。
- 管理员对 OpenShift Web 控制台的访问权限。
流程
-
在 OpenShift Web 控制台中,导航到 Storage
Object Storage Object Bucket Claims。 - 单击 Create ObjectBucketClaim。
- 输入 ObjectBucketName 的名称并选择 StorageClass 和 BucketClass。
- 选中 Enable replication 复选框以启用复制。
- 在 Replication policy 部分中,选中 Optimize replication using event logs 复选框。
输入包含 Event log Bucket 下的日志的存储桶名称。
如果日志没有存储在存储桶的根目录中,提供没有
s3://的完整路径。- 输入前缀来仅复制其名称以给定前缀开头的对象。
10.3.2. 使用 YAML 为现有命名空间存储桶启用基于日志的存储桶复制 复制链接链接已复制到粘贴板!
您可以为使用命令行界面创建的现有存储桶启用基于日志的存储桶复制,或者应用 YAML,而不是通过 AWS S3 命令创建的存储桶。
流程
编辑存储桶 OBC 的 YAML,以启用基于日志的存储桶复制。在
spec下添加以下内容:replicationPolicy: '{"rules":[{"rule_id":"<RULE ID>", "destination_bucket":"<DEST>", "filter": {"prefix": "<PREFIX>"}}], "log_replication_info": {"logs_location": {"logs_bucket": "<LOGS_BUCKET>"}}}'replicationPolicy: '{"rules":[{"rule_id":"<RULE ID>", "destination_bucket":"<DEST>", "filter": {"prefix": "<PREFIX>"}}], "log_replication_info": {"logs_location": {"logs_bucket": "<LOGS_BUCKET>"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您还可以在创建 OBC 前将其添加到 OBC 的 YAML 中。
rule_id- 指定您选择的 ID 来标识规则
destination_bucket- 指定对象复制到的目标 MCG 存储桶的名称
- (optional)
{"filter": {"prefix": <>}} - 指定可设置前缀字符串来过滤复制的对象
log_replication_info-
指定包含与基于日志的复制优化相关的数据的对象。
{"logs_location": {"logs_bucket": <>}}设置为 AWS S3 服务器访问日志的位置。
10.3.3. 在 Microsoft Azure 中启用基于日志的存储桶复制 复制链接链接已复制到粘贴板!
先决条件
请参阅 Microsoft Azure 文档,并确保您在 Microsoft Azure 门户中完成了以下任务:
确保已创建了一个新应用程序,并记下名称、应用程序(客户端)ID 和目录(租户)ID。
如需更多信息,请参阅 注册应用程序。
- 确保创建了新的客户端 secret,并且应用程序 secret 已记录下。
确保创建了一个新的 Log Analytics 工作区,其名称和工作区 ID 已记录下来。
如需更多信息,请参阅 创建日志分析工作区。
确保在 Access control 下分配
Reader角色,并且已选择了在上一步中注册的应用程序的名称。如需更多信息,请参阅使用 Azure 门户分配 Azure 角色。
- 确保创建了一个新存储帐户,并记下 Access key。
在创建的存储帐户的 Monitoring 部分中,选择 blob 和 in diagnose settings 屏幕,仅选择
StorageWriteandStorageDelete,并在目标详情中添加您之前创建的 Log Analytics 工作区。确保在所创建的存储帐户 的 Monitoring 部分中选择了 blob。另外,确保只选择StorageWrite和StorageDelete,目标详情中会添加您之前创建的 Log Analytics 工作区。如需更多信息,请参阅 Azure Monitor 中的 diagnostics 设置。
- 确保为对象源和目标目的地创建两个新容器。
- 管理员对 OpenShift Web 控制台的访问权限。
流程
使用
namespacestores使用的凭证创建 secret。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建由 Azure 中创建的容器支持的
NamespaceStore。- 创建一个新的 Namespace-Bucketclass 和 OBC,它使用它。
-
查看目标 OBC 的 YAML 或列出所有 S3 存储桶,如
- s3 ls,以检查对象存储桶名称。 通过在 YAML
.spec下添加以下内容,使用以下模板在源 OBC 上应用 Azure 复制策略:replicationPolicy:'{"rules":[ {"rule_id":"ID goes here", "sync_deletions": "<true or false>"", "destination_bucket":object bucket name"} ], "log_replication_info":{"endpoint_type":"AZURE"}}'replicationPolicy:'{"rules":[ {"rule_id":"ID goes here", "sync_deletions": "<true or false>"", "destination_bucket":object bucket name"} ], "log_replication_info":{"endpoint_type":"AZURE"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow sync_deletion-
指定布尔值
true或false。 destination_bucket-
确保使用对象存储桶的名称,而不是声明。可以使用
s3 ls命令检索名称,或者通过在 OBC 的 YAML 中查找值来检索。
验证步骤
- 将对象写入源存储桶。
- 等待 MCG 复制它们。
- 从源存储桶中删除对象。
- 验证对象是否已从目标存储桶中删除。
10.3.4. 启用基于日志的存储桶复制删除 复制链接链接已复制到粘贴板!
先决条件
- 管理员对 OpenShift Web 控制台的访问权限。
- 为所需存储桶配置的 AWS Server Access Logging。
流程
-
在 OpenShift Web 控制台中,导航到 Storage
Object Storage Object Bucket Claims。 - 点 Create new Object bucket claim。
- (可选)在 Replication rules 部分中,为每个规则单独选择 Sync deletion 复选框。
输入包含 Event log Bucket 下的日志的存储桶名称。
如果日志没有存储在存储桶的根目录中,提供没有
s3://的完整路径。- 输入前缀来仅复制其名称以给定前缀开头的对象。