这篇文章给大家介绍如何使用AWS S3 offloader卸载存储在BookKeeper中的数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、新邱ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新邱网站制作公司
对于大量不需要快速访问的数据,建议你使用 Apache Pulsar 的内置功能——分层存储——它也是 Pulsar 分片架构的原生优势。
通过分层存储,你可以从 Apache BookKeeper 卸载数据到可扩展、无限的廉价云原生存储(例如 AWS S3 或 Google Cloud Storage)或 filesystem,构建高性能的消息集群,并降低运维成本。
AWS S3 offloader 是 StreamNative Hub 上托管的一个 Pulsar 插件。
如何通过 AWS S3 offloader 将存储在 BookKeeper 中的数据卸载至 AWS S3。
按照以下步骤安装 AWS S3 offloader。本示例使用 Pulsar 2.5.1。
????准备工作
Apache jclouds:2.2.0 或更高版本
从 Apache mirror下载
https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz
从 Pulsar 下载页面下载
https://pulsar.apache.org/download
通过 wget 命令下载
wget https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz
2. 下载并解压 Pulsar offloaders 安装包。
wget https://downloads.apache.org/pulsar/pulsar-2.5.1/apache-pulsar-offloaders-2.5.1-bin.tar.gz
tar xvfz apache-pulsar-offloaders-2.5.1-bin.tar.gz
在裸机集群中运行 Pulsar 时,需要保证每个 broker 所在的 Pulsar 目录中,都有 `offloaders` 解压缩后的安装文件。
在 Docker 中运行 Pulsar 或使用 Docker image(例如 K8S、DCOS)部署 Pulsar 时,可以使用 `apachepulsar/pulsar-all` image 而不使用 `apachepulsar/pulsar` image。`apachepulsar/pulsar-all` image 已经包含了分层存储 offloaders。
3. 在本地 Pulsar 目录中创建 offloaders 文件夹,将解压后的 Pulsar offloaders 文件复制到此处。
mv apache-pulsar-offloaders-2.5.1/offloaders apache-pulsar-2.5.1/offloaders
ls offloaders
如下输出所示,Pulsar 通过 Apache jclouds(https://jclouds.apache.org)支持 AWS S3 和 GCS。
tiered-storage-file-system-2.5.1.nar tiered-storage-jcloud-2.5.1.nar
以下内容为在 Pulsar 中使用 AWS S3 offloader 的详细步骤。
在使用 AWS S3 offloader driver 前,需要为它配置一些属性。更多关于「如何配置 AWS S3 offloader driver 属性」的信息,可以参阅:
https://hub.streamnative.io/offloaders/aws-s3/2.5.1/#configuration
本示例假设已配置了以下参数,并以单机模式运行 Pulsar。
在 `conf/standalone.conf` 中,配置以下参数。
managedLedgerOffloadDriver=aws-s3 s3ManagedLedgerOffloadBucket=test-pulsar-offload s3ManagedLedgerOffloadRegion=us-west-2
为了加快 ledger 轮询,你可以在测试环境中进行以下配置,但不建议在生产环境中进行以下配置。
managedLedgerMinLedgerRolloverTimeMinutes=1managedLedgerMaxEntriesPerLedger=5000
在 `conf/pulsar_env.sh` 中,配置以下参数。
export AWS_ACCESS_KEY_ID=ABCDEFG123456789export AWS_SECRET_ACCESS_KEY=QWERYHBDSSGJJBVCCDCCC
在上传数据到 AWS S3 前,需要先在 AWS 区域(Region)中创建存储桶(bucket),用于存储数据。创建存储桶后,可以向存储桶上传无限容量的数据。
你可以配置存储桶的属性,包括地理区域、存储桶中对象的访问设置和其它元数据。
1. 登录到 AWS 管理控制面板,然后打开 Amazon S3 控制面板。
2. 点击创建存储桶。
3. 设置存储桶名称和[区域(Region)。
创建存储桶后,存储桶名称不可更改。更多关于存储桶命名的信息,可以参阅存储桶命名规则:
https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules
此前已配置过 AWS S3 offloader driver,此处的`存储桶名称`应与已配置的 `s3ManagedLedgerOffloadBucket` 值一致,`区域名称`应与已配置的 `s3ManagedLedgerOffloadRegion` 值一致。
4. 在存储桶的“阻止公有访问”设置中,选择你想要为存储桶设置的公有访问权限。
5. 点击创建存储桶。现在,你已经成功创建了一个存储桶。
第 3 步:创建组
1. 登录到 AWS 管理控制面板,然后打开 IAM 控制面板。
2. 在左侧导航栏中,点击组 > 创建新组。
3. 在组名对话框中,填写组名,点击下一步。
4. 在附加策略列表中,选中想要应用于组中所有成员的策略,点击下一步。
5. 检查所有已选择的配置,选择创建新组。
当你成功创建新组后,你会看到下图所示的界面。
第 4 步:创建用户
1. 登录到 AWS 管理控制面板,然后打开 IAM 控制面板。
2. 在导航窗格中,选择用户 > 添加用户。
3. 输入用户名(大小写不敏感),然后选择 AWS 访问类型。
4. 点击下一步:权限。
5. 在设置权限界面,选择你想为用户设置的权限。
6. 选择下一步:标签。
7. (可选项)为用户添加标签,选择下一步:审核。
更多关于 IAM 中标签的信息,可以参阅「为 IAM 用户和角色添加标签」:
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html
8. 检查所有设置,选择创建用户。
9. 点击密码旁边的显示,即可查看用户的访问密钥(`访问密钥 ID` 和`私有访问密钥`)。
此前已配置过 AWS S3 offloader driver,此处的`访问密钥 ID` 应与已配置的 `AWS_ACCESS_KEY_ID` 值一致,`私有访问密钥`应与已配置的 `AWS_SECRET_ACCESS_KEY` 值一致。
点击下载 .csv 即可保存访问密钥文件,这是查看或下载访问密钥的唯一机会。在用户使用 AWS API 前,需要向用户提供访问密钥信息。因此需要妥善保存用户的新访问密钥 ID 和私有访问密钥,此步骤后将无法获取访问密钥。
第 5 步:从 BookKeeper 卸载数据到 AWS S3
以下命令均在本地 Pulsar 所在的文件夹(例如 `~/path/to/apache-pulsar-2.5.1`)中执行。
1. 以单机模式启动 Pulsar。
./bin/pulsar standalone -a 127.0.0.1
2. 为保证生成的数据不会被立刻删除,建议设置保留策略。保留策略可以设置为大小限制或时间限制,设置的值越大,数据保留的时间越长。
./bin/pulsar-admin namespaces set-retention public/default --size -10G --time 3d
更多关于 `pulsar-admin namespaces set-retention options` 命令的信息(包括 flags、说明、默认值等),可以参阅:
http://pulsar.apache.org/tools/pulsar-admin/2.6.0-SNAPSHOT/#-em-set-retention-em-
3. 使用 pulsar-perf 生产数据。
./bin/pulsar-perf produce -r 1000 -s 2048 test-topic
4. Ledger 发生切换后,卸载操作才会开始。为了确保卸载操作成功执行,建议多等待几个 ledger 发生切换(这种情况下,需要等待大约 1 秒钟)。可以使用 pulsar-admin 查看 ledger 状态。
./bin/pulsar-admin topics stats-internal test-topic
5. Ledger 切换后,你可以手动触发卸载操作。
另外,你也可以设置自动触发卸载操作。更多关于如何设置自动触发卸载操作,可以参阅:
https://hub.streamnative.io/offloaders/aws-s3/2.5.1/#configure-aws-s3-offloader-to-run-automatically
./bin/pulsar-admin topics offload --size-threshold 10M public/default/test-topic
>> 输出
Offload triggered for persistent://public/default/test-topic for messages before 12:0:-1
6. 检查卸载操作的状态。
./bin/pulsar-admin topics offload-status -w public/default/test-topic
卸载操作可能会需要一段时间。
>> 输出
Offload was a success
操作完成后,数据成功卸载到 AWS S3。