欢迎来到即将发布的 MinIO 文档版本! 此页面上的内容正在积极开发中 可能随时更改。 如果找不到您要找的内容,请查看我们的 历史文档。 感谢您的耐心等待。 我们期待您贡献自己强大的力量,帮助更多的中国技术开发者![翻译]

将事件发布到 Kafka

MinIO 支持发布 bucket notification 事件到 Kafka 服务端点。

MinIO 依赖于 Shopify/sarama Kafka连接项目 并分享该项目的 Kafka 支持。 见 sarama Compatibility and API stability 部分了解更多详情。

将 Kafka 端点添加到 MinIO 部署

以下过程添加了一个新的 Kafka 服务端点以支持 bucket notifications 在一个 MinIO 部署。

Important

这个程序 requires 全部重启 minio server 流程 同时与部署相关联。 通常有一个简短的 API 操作中断或可能失败的时间段。

使用带有内置重试逻辑的 S3 兼容 SDK 的应用程序 or 实现手动重试逻辑通常不会遇到明显的中断 服务。 对于不能使用重试逻辑的应用,考虑调度 一个维护期,以尽量减少在执行时服务的中断这个程序。

先决条件

Kafka 最低版本和支持的版本

MinIO 依赖于 Shopify/sarama Kafka连接项目 并分享该项目的 Kafka 支持。 见 sarama Compatibility and API stability 部分了解更多详情。

MinIO mc 命令行工具

此过程使用 mc 用于某些操作的命令行工具。 见 mc Quickstart 安装说明。

1) 将 Kafka 端点添加到 MinIO

您可以使用任一环境变量配置新的 Kafka 服务端点 or 通过设置运行时配置设置。 .. tabs:

.. tab:: Environment Variables

   MinIO 支持指定 Kafka 服务端点和关联
   配置设置使用
   :ref:`environment variables
   <minio-server-envvar-bucket-notification-kafka>`. The
   :mc:`minio server` 进程在其上应用指定的设置
   下次启动。

   以下示例代码设置了 *all* 环境变量
   与配置 Kafka 服务端点相关。 最低
   *required* 变量是
   :envvar:`MINIO_NOTIFY_KAFKA_ENABLE` and
   :envvar:`MINIO_NOTIFY_KAFKA_BROKERS`:

   .. code-block:: shell
      :class: copyable

      set MINIO_NOTIFY_KAFKA_ENABLE_<IDENTIFIER>="on"
      set MINIO_NOTIFY_KAFKA_BROKERS_<IDENTIFIER>="<ENDPOINT>"
      set MINIO_NOTIFY_KAFKA_TOPIC_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_SASL_USERNAME_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_SASL_PASSWORD_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_SASL_MECHANISM_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_TLS_CLIENT_AUTH_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_SASL_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_TLS_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_TLS_SKIP_VERIFY_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_CLIENT_TLS_CERT_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_CLIENT_TLS_KEY_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_QUEUE_DIR_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_QUEUE_LIMIT_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_VERSION_<IDENTIFIER>="<string>"
      set MINIO_NOTIFY_KAFKA_COMMENT_<IDENTIFIER>="<string>"

   - 将 ``<IDENTIFIER>`` 替换为唯一的描述性字符串
     Kafka 服务端点。 对所有使用相同的 ``<IDENTIFIER>`` 值
     与新目标服务端点相关的环境变量。
     以下示例假定标识符为 “PRIMARY”。

     如果指定的``<IDENTIFIER>`` 匹配现有的 Kafka 服务
     MinIO 部署上的端点,新设置 *override*
     该端点的任何现有设置。 用
     :mc-cmd:`mc admin config get notify_kafka <mc admin config get>`
     查看 MinIO 部署上当前配置的 Kafka 端点。

   - 用逗号分隔的 Kafka 代理列表替换 ``<ENDPOINT>``。
     例如:

     ``"kafka1.example.com:2021,kafka2.example.com:2021"``

   见 :ref:`Kafka Service for Bucket Notifications
   <minio-server-envvar-bucket-notification-kafka>` 完整的文档
   在每个环境变量上。

.. tab:: Configuration Settings

   MinIO 支持在运行时添加或更新 Kafka 端点
   :mc:`minio server` process using the :mc-cmd:`mc admin config set` 命令
   和 :mc-conf:`notify_kafka` 配置键。 您必须重新启动
   :mc:`minio server` 应用任何新的或更新的配置的过程设置。

   以下示例代码设置了与配置相关的 *all* 设置
    Kafka 服务端点。 最小 *required* 设置是
   :mc-conf:`notify_kafka brokers <notify_kafka.brokers>`:

   .. code-block:: shell
      :class: copyable

      mc admin config set ALIAS/ notify_kafka:IDENTIFIER \
         brokers="<ENDPOINT>" \
         topic="<string>" \
         sasl_username="<string>" \
         sasl_password="<string>" \
         sasl_mechanism="<string>" \
         tls_client_auth="<string>" \
         sasl="<string>" \
         tls="<string>" \
         tls_skip_verify="<string>" \
         client_tls_cert="<string>" \
         client_tls_key="<string>" \
         version="<string>" \
         queue_dir="<string>" \
         queue_limit="<string>" \
         comment="<string>"

   - 用唯一的描述性字符串替换 “IDENTIFIER”
     Kafka 服务端点。 此过程中的以下示例
     假设标识符为 “PRIMARY”。

     如果指定的 “IDENTIFIER” 与现有的 Kafka 服务匹配
     MinIO 部署上的端点,新设置 *override*
     该端点的任何现有设置。 用
     :mc-cmd:`mc admin config get notify_kafka <mc admin config get>`
      查看 MinIO 部署上当前配置的 Kafka 端点。

   - 用逗号分隔的 Kafka 代理列表替换 ``ENDPOINT``。
     例如:

     ``"kafka1.example.com:2021,kafka2.example.com:2021"``

   见 :ref:`Kafka Bucket Notification Configuration Settings
   <minio-server-config-bucket-notification-kafka>` 为完成
   每个设置的文档。

2) 重启 MinIO 部署

您必须重新启动 MinIO 部署才能应用配置更改。 使用 mc admin service restart 命令重新启动部署。

Important

MinIO 重启 all minio server 相关流程 同时部署。 应用程序可能会经历短暂的 重启过程中的停机时间。

考虑在维护期间安排重启以最小化服务中断。

mc admin service restart ALIAS

将 “ALIAS” 替换为 alias 部署到重新开始。

The minio server 进程在启动时为每个配置打印一行 Kafka目标类似于以下:

SQS ARNs: arn:minio:sqs::primary:kafka

您必须在配置存储通知时指定 ARN 资源 关联的 Kafka 部署作为目标。

3) 使用 Kafka 端点作为目标配置存储通知

使用 mc event add 添加新存储通知的命令 以配置的 Kafka 服务为目标的事件:

mc event add ALIAS/BUCKET arn:minio:sqs::primary:kafka \
  --event EVENTS
  • 将 “ALIAS” 替换为 alias 一个 MinIO 部署。

  • BUCKET 替换为要在其中配置存储的名称事件。

  • 用逗号分隔的列表替换 “EVENTS” events MinIO 为其触发通知。

mc event list 查看所有配置的存储事件 给定的通知目标:

mc event list ALIAS/BUCKET arn:minio:sqs::primary:kafka

4) 验证配置的事件

对配置了新事件的存储执行操作,然后 检查 Kafka 服务以获取通知数据。 需要采取的行动 取决于哪个 events 被指定 配置存储通知时。

例如,如果存储通知配置包括 s3:ObjectCreated:Put 事件,您可以使用 mc cp 命令在存储中创建一个新对象并触发 通知。

mc cp ~/data/new-object.txt ALIAS/BUCKET

在 MinIO 部署中更新 Kafka 端点

以下过程更新现有的 Kafka 服务端点以支持 bucket notifications 在一个 MinIO 部署。

Important

这个程序 requires 全部重启 minio server 流程 同时与部署相关联。 通常有一个简短的 API 操作中断或可能失败的时间段。

使用带有内置重试逻辑的 S3 兼容 SDK 的应用程序 or 实现手动重试逻辑通常不会遇到明显的中断 服务。 对于不能使用重试逻辑的应用,考虑调度 一个维护期,以尽量减少在执行时服务的中断这个程序。

先决条件

Kafka 最低版本和支持的版本

MinIO 依赖于 Shopify/sarama Kafka连接项目 并分享该项目的 Kafka 支持。 见 sarama Compatibility and API stability 部分了解更多详情。

MinIO mc 命令行工具

此过程使用 mc 用于某些操作的命令行工具。 见 mc Quickstart 安装说明。

1) 列出部署中已配置的 Kafka 端点

使用 mc admin config get 命令列出当前 在部署中配置的 Kafka 服务端点:

mc admin config get ALIAS/ notify_kafka

将 “ALIAS” 替换为 alias MinIO 部署。

命令输出类似于以下内容:

notify_kafka:primary tls_skip_verify="off"  queue_dir="" queue_limit="0" sasl="off" sasl_password="" sasl_username="" tls_client_auth="0" tls="off" brokers="" topic="" client_tls_cert="" client_tls_key="" version=""
notify_kafka:secondary tls_skip_verify="off"  queue_dir="" queue_limit="0" sasl="off" sasl_password="" sasl_username="" tls_client_auth="0" tls="off" brokers="" topic="" client_tls_cert="" client_tls_key="" version=""

The notify_kafka key 是一个顶级配置键 用于存储桶通知的 Kafka 服务. The brokers key 指定Kafka服务 给定 notify_kafka 键的端点。 notify_kafka:<IDENTIFIER> 后缀描述了该 Kafka 服务端点的唯一标识符。

记下要更新的 Kafka 服务端点的标识符 下一步。

2) 更新 Kafka 端点

使用 mc admin config set 设置新配置的命令 对于 Kafka 服务端点:

mc admin config set ALIAS/ notify_kafka:<IDENTIFIER> \
   url="https://kafka1.example.net:9200, https://kafka2.example.net:9200" \
   exchange="<string>" \
   exchange_type="<string>" \
   routing_key="<string>" \
   mandatory="<string>" \
   durable="<string>" \
   no_wait="<string>" \
   internal="<string>" \
   auto_deleted="<string>" \
   delivery_mode="<string>" \
   queue_dir="<string>" \
   queue_limit="<string>" \
   comment="<string>"

The notify_kafka brokers 配置设置 是 Kafka 服务端点所需的 minimum 。 所有其他配置 设置是*optional*。 见 用于存储桶通知的 Kafka 服务 完整列表 卡夫卡配置设置。

3) 重启 MinIO 部署

您必须重新启动 MinIO 部署才能应用配置更改。 使用 mc admin service restart 命令重新启动部署。

Important

MinIO 重启 all minio server 相关流程 同时部署。 应用程序可能会经历短暂的 重启过程中的停机时间。

考虑在维护期间安排重启以最小化服务中断。

mc admin service restart ALIAS

将 “ALIAS” 替换为 alias 部署到 重新开始。

The minio server 进程在启动时为每个配置打印一行 Kafka目标类似于以下:

SQS ARNs: arn:minio:sqs::primary:kafka

3) 验证更改

使用更新的事件配置对具有事件配置的存储执行操作 Kafka 服务端点并检查 Kafka 服务以获取通知数据。 所需的操作取决于哪个 events 是 配置存储通知时指定。

例如,如果存储通知配置包括 s3:ObjectCreated:Put 事件,您可以使用 mc cp 命令在存储中创建一个新对象并触发 通知。

mc cp ~/data/new-object.txt ALIAS/BUCKET