8.3. 启用基于日志的存储桶复制
在创建存储桶复制策略时,您可以使用日志,以便更快地复制最新的数据,而默认的基于扫描的复制则适用于复制其余数据。
此功能需要在 AWS 或 Azure 上设置存储桶日志。有关设置 AWS 日志的更多信息,请参阅启用 Amazon S3 服务器访问日志记录。AWS 日志存储桶需要在与源 NamespaceStore AWS 存储桶相同的区域中创建。
此功能仅支持由 NamespaceStore 支持的存储桶。由 BackingStores 支持的存储桶无法使用基于日志的复制。
8.3.1. 在 Amazon Web Service 环境中使用 OpenShift Web 控制台为新命名空间存储桶启用基于日志的存储桶复制
您可以使用 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>"}}}'
也可以在创建 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。apiVersion: v1 kind: Secret metadata: name: <namespacestore-secret-name> type: Opaque data: TenantID: <AZURE TENANT ID ENCODED IN BASE64> ApplicationID: <AZURE APPLICATIOM ID ENCODED IN BASE64> ApplicationSecret: <AZURE APPLICATION SECRET ENCODED IN BASE64> LogsAnalyticsWorkspaceID: <AZURE LOG ANALYTICS WORKSPACE ID ENCODED IN BASE64> AccountName: <AZURE ACCOUNT NAME ENCODED IN BASE64> AccountKey: <AZURE ACCOUNT KEY ENCODED IN BASE64>
创建由 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"}}'
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://
的完整路径。- 输入前缀来仅复制名称以给定前缀开头的对象。