Use Azure BlobStore offloader with Pulsar

    请按照以下步骤安装 Azure BlobStore offloader。

    • Pulsar:2.6.2 或更高版本

    下列示例将使用 Pulsar 2.6.2。

    1. 使用下列方式下载 Pulsar 压缩包:

    2. 下载并解压 Pulsar offloaders 程序包。

      1. tar xvfz apache-pulsar-offloaders-2.6.2-bin.tar.gz
    3. 将 Pulsar offloaders 作为offloaders复制到Pulsar目录中。

      1. mv apache-pulsar-offloaders-2.6.2/offloaders apache-pulsar-2.6.2/offloaders
      2. ls offloaders

      输出

      如输出所示,Pulsar使用 来支持 AWS S3 、 和 Azure 进行长期存储。

      1. tiered-storage-file-system-2.6.2.nar
      2. tiered-storage-jcloud-2.6.2.nar

    Configuration

    Note

    在将数据从 BookKeeper 转移到 Azure BlobStore, 之前,你需要配置 Azure BlobStore offload 驱动程序的一些属性。

    此外,你还可以配置 Azure BlobStore offloader 的自动触发和手动触发机制。

    你可以在配置文件 broker.confstandalone.conf 中配置 Azure BlobStore offloader driver。

    • 以下为必选 配置。

    Bucket (必选)

    一个 bucket 就是一个存储数据的基本容器。 你在 Azure BlobStore 中存储的所有东西都必须包含在一个 bucket 里。 您可以使用 bucket 来管理数据并控制对数据的访问,但与目录和文件夹不同,你不能嵌套 bucket。

    示例

    该示例将 bucket 命名为 pulsar-topic-offload

    1. managedLedgerOffloadBucket=pulsar-topic-offload

    身份验证 (必选)

    为了能够访问 Azure BlobStore ,你需要对 Azure BlobStore 进行认证。

    • conf/pulsar_env.sh 中设置环境变量 AZURE_STORAGE_ACCOUNTAZURE_STORAGE_ACCESS_KEY

      “export” 命令很重要,以便变量在生成进程的环境中可用。

    读取/写入的数据块大小

    你可以在配置文件broker.confstandalone.conf中配置发送到 Azure BlobStore 或从 Azure BlobStore 读取的请求大小。

    配置 | 描述 | 默认值 |—-|—-|— managedLedgerOffloadReadBufferSizeInBytes | 从 Azure BlobStore 读回数据时,每个单独读的块大小。|1 MB managedLedgerOffloadMaxBlockSizeInBytes | 在多部分上传至 Azure BlobStore 存储时,每一部分的最大尺寸。 它不能小于5MB。 |64 MB

    命名空间策略可以配置成一旦到达阈值就自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。

    阈值|动作 |—-|—-

    当一个新 segment 添加到 topic 日志后会自动运行卸载。 如果你在命名空间上设置了阈值,但向该 topic 生产的消息很少,offloader 将会停止工作,直至当前 segment 达到饱和。

    你可以通过命令行工具(CLI)设置阈值大小,比如 pulsar-admin。

    示例

    该示例使用 pulsar-admin 将Azure BlobStore offloader 的阈值大小设置为10MB。

    1. bin/pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace

    提示

    关于pulsar-admin namespaces set-offload-threshold options 命令的更多信息,包括参数、描述和默认值等,可参见。

    对于每一个 topic,你可以使用下列方法来手动触发 Azure BlobStore offloader:

    • 使用 REST endpoint。

    • 使用命令行工具(例如 pulsar-admin)。

      要想用命令行工具触发,你要指定一个 Topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续转移到 Azure BlobStore 上,直到不再超过这个阈值。 优先移动旧的 segment。

    示例

    • 该示例使用 pulsar-admin 手动触发了 Azure BlobStore offloader 的运行。

      1. bin/pulsar-admin topics offload --size-threshold 10M my-tenant/my-namespace/topic1

      输出

      1. Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
    • 该示例使用 pulsar-admin 检查 Azure BlobStore offloader 的状态。

      1. bin/pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1

      输出

      要等待 Azure BlobStore offloader 完成任务,请添加 -w 参数。

      1. bin/pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1

      输出

      1. Offload was a success

      如果卸载时出现错误,错误会返回到 pulsar-admin topics offload-status 命令。

      1. bin/pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1

      输出

      1. Error in offload
      2. null

      提示

      关于 pulsar-admin topics offload-status options 命令的更多信息,比如参数、描述和默认值等,可参见此处