8.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://的完整路径。- 输入前缀来仅复制名称以给定前缀开头的对象。
8.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 服务器访问日志的位置。
8.3.3. 在 Microsoft Azure 中启用基于日志的存储桶复制 复制链接链接已复制到粘贴板!
先决条件
请参阅 Microsoft Azure 文档,并确保您已在 Microsoft Azure 门户中完成以下任务:
确保已创建了新应用程序,并记下名称、应用程序(客户端)ID 和目录(租户)ID。
如需更多信息,请参阅 注册应用程序。
- 确保创建了新的客户端 secret,并记下应用程序 secret。
确保创建了新的 Log Analytics 工作区,并且记下了其名称和工作区 ID。
如需更多信息,请参阅创建日志分析工作区。
确保在 Access control 和 members 下分配了
Reader角色,并且提供了您在上一步中注册的应用的名称。如需更多信息,请参阅使用 Azure 门户分配 Azure 角色。
- 确保创建了新的存储帐户,并且记录 Access 密钥。
在创建的存储帐户的 Monitoring 部分中,选择一个 blob,在 Diagnostic settings 屏幕中,仅选择
StorageWrite和StorageDelete,在目标详情中添加之前创建的 Log Analytics 工作区。确保在所创建存储帐户的 Monitoring 部分的 Diagnostic settings 屏幕中选择了 blob。另外,请确保只选择StorageWrite和StorageDelete,目标详情中会添加之前创建的 Log Analytics 工作区。如需更多信息,请参阅 Azure Monitor 中的诊断设置。
- 确保创建了用于对象源和对象目的地的两个新容器。
- 管理员对 OpenShift Web 控制台的访问权限。
流程
使用命名空间
存储要使用的凭证创建一个 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 复制它们。
- 从源存储桶中删除对象。
- 验证对象已从目标存储桶中删除。
8.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://的完整路径。- 输入前缀来仅复制名称以给定前缀开头的对象。