Ceph RADOS Gateway (RGW) 多站点同步策略

多站点同步策略提供对不同区域的存储桶之间数据移动的精细控制。同步策略可以在区域组级别配置,也可以在存储桶级别配置。

默认情况下,在多站点场景中未配置任何同步策略,所有存储桶都从主区域同步到辅助区域。

目标是允许区域之间选择性地同步存储桶。这对于配置多站点场景中的辅助区域的安全性非常重要。

有关多站点同步策略的更多信息,请参见:https://docs.ceph.net.cn/en/latest/radosgw/multisite-sync-policy

问题描述

当前的 ceph-radosgw charm 不支持配置多站点同步策略。目前,我们没有阻止特定存储桶从主区域同步到辅助区域的选项。

将同步策略添加到 ceph-radosgw charm 将使我们能够更好地控制数据如何从主 RGW 区域同步到辅助 RGW 区域。这通常对于仅同步必要的存储桶到辅助集群非常有用。它对于单向数据同步尤其有价值。

提议的变更

允许配置默认区域组同步策略。

这将允许默认情况下禁用区域组中的所有存储桶同步。并且,对于特定的存储桶,可以通过存储桶级别同步策略来启用与辅助区域的同步。当需要选择性地将数据同步到辅助 RGW 区域时,这非常有用。

默认情况下,ceph-radosgw charm 不会配置任何同步策略,以保持与现有功能的向后兼容性。

同步策略可以通过命令 radosgw-admin sync group create 创建。同步策略组可以有三种状态

  • enabled,允许并启用了同步。

  • allowed,允许同步(但未启用)。

  • forbidden,不允许同步。

在同步策略组中,我们需要配置

  • 数据流,通过命令 radosgw-admin sync group flow create

  • 管道,通过命令 radosgw-admin sync group pipe create

数据流定义了不同区域之间的数据流,它可以定义

  • symmetrical 数据流,其中多个区域相互同步数据。

  • directional 数据流,其中数据从一个区域单向移动到另一个区域。

管道定义了可以使用这些数据流的实际存储桶,以及与之关联的属性(例如:源对象前缀)。

备选方案

实现

将向 ceph-radosgw charm 添加两个新的配置

  • sync-policy-state,允许配置默认同步策略组的状态(enabledallowedforbidden)。这将配置在主 ceph-radosgw 应用程序中,它将决定默认区域组同步策略。默认情况下,此配置为空。如果为空,则区域组中不配置同步策略。这样,我们保持了与 charm 现有功能的向后兼容性。

  • sync-policy-flow-type,定义了将在主区域和辅助区域之间配置在默认同步策略组中的数据流类型。默认情况下,此配置为 symmetrical,仅当主 ceph-radosgw 应用程序具有非空的配置选项 sync-policy-state 并且配置了多站点同步策略时才使用。

实现 primary-relation-changed 钩子,我们将在其中配置默认同步策略(如果设置了 sync-policy-state 配置)。如果创建了默认策略

  • 将配置与每个辅助区域的数据流。数据流类型从辅助 ceph-radosgw 应用程序通过关系数据传递的 sync-policy-flow-type 配置中获得。

  • 将配置与每个辅助区域的管道。管道允许所有存储桶使用先前定义的数据流。

将向 ceph-radosgw charm 添加三个 Juju 操作

  • enable-buckets-sync,接受逗号分隔的要使用存储桶级别同步策略启用同步的存储桶列表。这旨在与 allowed sync-policy-state 配置一起使用,该配置允许存储桶同步,但默认情况下已禁用。

  • disable-buckets-sync,接受逗号分隔的要使用存储桶级别同步策略禁止同步的存储桶列表。当您只想禁用某些存储桶的同步时,无论默认区域组同步策略如何,此操作都很有用。

  • reset-buckets-sync,接受逗号分隔的要重置存储桶级别同步策略的存储桶列表。执行此操作后,存储桶将根据默认区域组同步策略进行同步。

如果在主 ceph-radosgw 应用程序上执行 Juju 操作,则任何存储桶级别同步策略都会自动从主 RGW 站点传播到所有辅助 RGW 站点。

另一方面,如果在辅助 ceph-radosgw 应用程序上执行 Juju 操作,则存储桶级别同步策略不会传播到任何其他 RGW 站点。

所有这些新的 Juju 操作只能在主 ceph-radosgw 应用程序上执行。如果它们在辅助 ceph-radosgw 应用程序上执行,它们将失败。

负责人

主要负责人:ionutbalutoiu

Gerrit Topic

使用 Gerrit 主题“ceph-radosgw-multisite-sync-policies”用于与此规范相关的所有补丁。

git-review -t ceph-radosgw-multisite-sync-policies

工作项

  • ceph-radosgw 添加两个新的 charm 配置

    • sync-policy-state,允许配置默认同步策略组的状态。

    • sync-policy-flow-type,定义了将在主区域和辅助区域之间配置在默认同步策略组中的数据流类型。

  • 使用 Implementation 部分中描述的所有细节实现 primary-relation-changed 钩子。

  • ceph-radosgw charm 添加三个 Juju 操作

    • enable-buckets-sync,接受逗号分隔的要使用存储桶级别同步策略启用同步的存储桶列表。

    • disable-buckets-sync,接受逗号分隔的要使用存储桶级别同步策略禁止同步的存储桶列表。

    • reset-buckets-sync,接受逗号分隔的要重置存储桶级别同步策略的存储桶列表。

仓库

文档

新的 charm 配置和 Juju 操作将在 ceph-radosgw charm 中记录。

此外,应将有关新可选多站点同步策略的附加文档添加到 charm 部署指南。

安全性

如果使用,这将提高多站点 Ceph RGW 部署的安全性。

测试

编写或更改的代码将涵盖在单元测试中;将使用 Zaza 框架实现功能测试。

依赖项

没有新的依赖项。