[fluidd] 一个关于我如何迷上 IDCF 对象存储的故事

我叫佐佐木,是一名基础设施工程师。

前几天我有机会在IDCF环境下搭建一台服务器,当时我接触到了将日志存储在对象存储中的想法。我对此很感兴趣,所以这里记录一下我当时的笔记。

配置如下所示

API 服务器 (fluentd) ⇒ 日志聚合服务器 (fluentd) ⇒ 对象存储

我认为这是一种常见的配置。

初始设置

IDCF 有官方流程,所以我在设置时以此为参考。

由于它是与 S3 兼容的存储,我们使用 fluent-s3-plugin。

初始设置如下所示

<store>type s3 aws_key_id XXXXXXXXXXXXXXXXXXX aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX s3_bucket bucket_name s3_endpoint http://ds.jp-east.idcfcloud.com check_apikey_on_start false s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension} path logs/ buffer_path /var/log/fluent/idcf/buffer/ flush_interval 60s time_slice_format %Y%m%d/%Y%m%d-%H</store>

但是,由于某种原因,它没有上传到对象存储。

创建缓冲区文件没有问题

我研究过这个错误,但我不太明白……

我完全被迷住了……

 

答案写在 fluent-plugin-s3 文档中。

它是在fluent-plugin-s3 的 GitHub

签名版本

API 请求的签名版本。s3表示签名版本 2, v4表示签名版本 4。默认值为nil (遵循 SDK 的默认值)。当您使用仅接受签名版本 2 的 S3 兼容存储时,此参数非常有用。

关键在于 API 请求的签名版本

  • 使用签名版本 2 时指定 s3,使用版本 4 时指定 v4。
  • 这对于具有签名版本 2 的 S3 兼容存储非常有用。
  • 默认值取决于 SDK 版本。

看来您需要设置所使用存储的签名版本。

由于对象存储仅支持签名版本 2,

signature_version s3

添加这个之后,它立刻就生效了。

fluent-s3-plugin 似乎也支持 S3 签名版本 4。

概括

我了解了很多关于签名版本的信息,因为它可以在其他与 S3 兼容的存储环境中使用。

不仅是这次,官方文件通常都是英文的,人们往往会避免阅读,但答案却常常是用英文写的。

让我们一起提高英语水平吧!

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
709
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者