在 OpenShift 中评估 AMQ Streams

Red Hat AMQ 2021.Q3

用于 OpenShift Container Platform 上的 AMQ Streams 1.8

摘要

本指南描述了如何安装和管理 AMQ Streams,以评估其在生产环境中的潜在用途。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息

第 1 章 AMQ 流概述

AMQ Streams 简化了在 OpenShift 集群中运行 Apache Kafka 的过程。

本指南提供有关评估 AMQ Streams 工作环境的说明。这些步骤描述了如何尽快上线运行 AMQ Streams 部署。

在尝试 AMQ Streams 之前,了解其功能以及您可能希望如何使用它很有用。本章介绍了 Kafka 背后的一些关键概念,同时还简要介绍 AMQ Streams Operator。

Operator 是一种打包、部署和管理 OpenShift 应用的方法。AMQ Streams Operator 扩展 OpenShift 功能,自动执行与 Kafka 部署相关的常见复杂任务。通过在代码中了解 Kafka 操作,Kafka 管理任务可以简化,无需人工干预。

1.1. Kafka 功能

Kafka 的底层数据流处理功能和组件架构可以提供:

  • 微服务和其他应用以极高的吞吐量和低延迟共享数据
  • 消息排序保证
  • 从数据存储中重获/重播消息以重建应用程序状态
  • 使用键值日志时删除旧记录的消息紧凑
  • 集群配置中的水平可扩展性
  • 数据复制来控制容错
  • 保留大量数据以便立即访问

1.2. Kafka 用例

Kafka 的功能使其适合:

  • 事件驱动的架构
  • 事件源,以捕获对应用状态的更改作为事件日志
  • 消息代理
  • 网站活动跟踪
  • 通过指标进行操作监控
  • 日志收集和聚合
  • 为分布式系统提交日志
  • 流处理,以便应用程序能够实时响应数据

1.3. AMQ 流如何支持 Kafka

AMQ Streams 提供容器镜像和 Operator,以便在 OpenShift 上运行 Kafka。AMQ Streams Operator 是运行 AMQ Streams 的基础。AMQ Streams 提供的 Operator 是专门构建的,具有可有效管理 Kafka 的专业操作知识。

Operator 简化了以下流程:

  • 部署和运行 Kafka 集群
  • 部署和运行 Kafka 组件
  • 配置对 Kafka 的访问
  • 保护对 Kafka 的访问
  • 升级 Kafka
  • 管理代理
  • 创建和管理主题
  • 创建和管理用户

1.4. Operator

AMQ Streams 提供 Operator 来管理在 OpenShift 集群中运行的 Kafka 集群。

Cluster Operator
部署和管理 Apache Kafka 集群、Kafka Connect、Kafka MirrorMaker、Kafka Bridge、Kafka Exporter 和 Entity Operator
实体 Operator
由主题 Operator 和 User Operator 组成
主题 Operator
管理 Kafka 主题
User Operator
管理 Kafka 用户

Cluster Operator 可以与 Kafka 集群同时部署 Topic Operator 和 User Operator 作为 Entity Operator 配置的一部分。

AMQ Streams 架构中的 Operator

Operators within the AMQ Streams architecture

1.5. 文档规范

Replaceables

在这个文档中,可替换的文本风格在 monospace 中,使用斜体、大写和连字符。

例如,在以下代码中,您要将 MY-NAMESPACE 替换为命名空间的名称:

sed -i 's/namespace: .*/namespace: MY-NAMESPACE/' install/cluster-operator/*RoleBinding*.yaml

第 2 章 评估 AMQ Streams

本章中的步骤提供了评估 AMQ 流的功能的快速方法。

按照提供的步骤安装 AMQ Streams,并开始从主题发送和接收信息:

  • 确定您有所需的先决条件
  • 安装 AMQ Streams
  • 创建 Kafka 集群
  • 为安全访问 Kafka 集群启用身份验证
  • 访问 Kafka 集群以发送和接收信息

确保您具有先决条件,然后按照本章中提供的顺序按照任务进行操作。

2.1. 先决条件

  • 运行一个 OpenShift Container Platform 集群(4.6 和 4.8),以便在其上部署 AMQ Streams。
  • 您需要访问 AMQ Streams 下载网站

2.2. 下载 AMQ 流

ZIP 文件包含安装 AMQ Streams 所需的资源以及配置示例。

流程

  1. 确保您的订阅已激活,您的系统已注册。

    有关使用客户门户激活您的红帽订阅以及注册您的系统以获取软件包的更多信息,请参阅 附录 A, 使用您的订阅

  2. AMQ Streams 下载网站下载 amq-streams-x.y.z-ocp-install-examples.zip 文件。
  3. 将 文件解压缩到任何目标。

    • Windows 或 Mac:双击 ZIP 文件以提取 ZIP 存档的内容。
    • Red Hat Enterprise Linux:在目标计算机中打开一个终端窗口,再导航到下载 ZIP 文件的位置。

    使用以下命令提取 ZIP 文件:

    unzip amq-streams-x.y.z-ocp-install-examples.zip

2.3. 安装 AMQ Streams

您可以使用部署所需的自定义资源定义(CRD)安装 AMQ Streams。

在本任务中,您可以为部署在集群中创建命名空间。最好使用命名空间来分隔函数。

先决条件

  • 安装需要具有 cluster-admin 角色的用户,如 system:admin

流程

  1. 使用具有集群管理员特权的帐户登录 OpenShift 集群。

    例如:

    oc login -u system:admin
  2. 为 AMQ Streams Kafka Cluster Operator 创建一个新的 kafka (项目)命名空间。

    oc new-project kafka
  3. 修改安装文件,以引用要在其中安装 AMQ Streams Kafka Cluster Operator 的新 kafka 命名空间。

    注意

    默认情况下,这些文件在 myproject 命名空间内工作。

    • 在 Linux 中,使用:
    sed -i 's/namespace: .*/namespace: kafka/' install/cluster-operator/*RoleBinding*.yaml
    • 在 Mac 中,使用:
    sed -i '' 's/namespace: .*/namespace: kafka/' install/cluster-operator/*RoleBinding*.yaml
  4. 部署 CRD 和基于角色的访问控制(RBAC)资源以管理 CRD。

    oc project kafka
    oc apply -f install/cluster-operator/
  5. 创建一个新的 my-kafka-project 命名空间,您要在其中部署 Kafka 集群。

    oc new-project my-kafka-project
  6. 向非管理员用户 developer 授予 my-kafka-project 访问权限。

    例如:

    oc adm policy add-role-to-user admin developer -n my-kafka-project
  7. 设置 STRIMZI_NAMESPACE 环境变量的值,授予 Cluster Operator 的权限以观察 my-kafka-project 命名空间。

    oc set env deploy/strimzi-cluster-operator STRIMZI_NAMESPACE=kafka,my-kafka-project -n kafka
    oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-kafka-project
    oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-kafka-project
    oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-kafka-project

    命令创建角色绑定,授予 Cluster Operator 访问 Kafka 集群的权限。

  8. 创建新集群角色 strimzi-admin

    oc apply -f install/strimzi-admin
  9. 将角色添加到非管理员用户 developer

    oc adm policy add-cluster-role-to-user strimzi-admin developer

2.4. 创建集群

安装 AMQ Streams 时,您可以创建一个 Kafka 集群,然后在集群中创建一个主题。

在创建集群时,您在安装 AMQ Streams 时部署的 Cluster Operator 会监视是否有新的 Kafka 资源。

先决条件

  • 对于 Kafka 集群,确保部署了 Cluster Operator。
  • 对于该主题,您必须有一个正在运行的 Kafka 集群。

流程

  1. developer 用户身份登录 my-kafka-project 命名空间。

    例如:

    oc login -u developer
    oc project my-kafka-project

    新用户登录 OpenShift 容器平台后,会为该用户创建一个帐户。

  2. 创建带有 3 个 Zookeeper 和 3 代理节点的 my-cluster Kafka 集群。

    • 使用 ephemeral 存储
    • 使用配置为使用 route 的外部监听程序在 OpenShift 集群外部公开 Kafka 集群。

      cat << EOF | oc create -f -
      apiVersion: kafka.strimzi.io/v1beta2
      kind: Kafka
      metadata:
        name: my-cluster
      spec:
        kafka:
          replicas: 3
          listeners:
            - name: plain
              port: 9092
              type: internal
              tls: false
            - name: tls
              port: 9093
              type: internal
              tls: true
            - name: external
              port: 9094
              type: route 1
              tls: true
          storage:
            type: ephemeral
        zookeeper:
          replicas: 3
          storage:
            type: ephemeral
        entityOperator:
          topicOperator: {}
      EOF
  3. 等待集群部署:

    oc wait my-kafka-project/my-cluster --for=condition=Ready --timeout=300s -n kafka
  4. 集群就绪后,创建一个主题以从外部客户端发布和订阅。

    创建以下 my-topic 自定义资源定义,在 my-cluster Kafka 集群中使用 3 个副本和 3 个分区:

    cat << EOF | oc create -f -
    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaTopic
    metadata:
      name: my-topic
      labels:
        strimzi.io/cluster: "my-cluster"
    spec:
      partitions: 3
      replicas: 3
    EOF

2.5. 访问集群

因为 route 用于从外部访问集群,集群 CA 证书需要在代理和客户端间启用 TLS(Transport Layer 安全)加密。

先决条件

  • 您需要在 OpenShift 集群中运行 Kafka 集群。
  • Cluster Operator 还必须正在运行。

流程

  1. 查找 bootstrap 的地址 route

    oc get routes my-cluster-kafka-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'

    在 Kafka 客户端中使用该地址和端口 443 作为 bootstrap 地址。

  2. 提取代理认证机构的公共证书:

    oc extract secret/my-cluster-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
  3. 将可信证书导入到信任存储中:

    keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt

    您现在已准备好开始发送和接收消息。

2.6. 从主题发送和接收消息

您可以通过从 my-topic 发送和接收集群外的信息来测试 AMQ Streams 安装。

使用终端在本地机器上运行 Kafka 制作者和使用者。

先决条件

流程

  1. 从 AMQ Streams 下载 网站下载最新版本的 AMQ Streams 归档( amq-streams-x.y.z-bin.zip)。

    将 文件解压缩到任何目标。

  2. 打开一个终端,再启动 Kafka 控制台制作者,主题为 my-topic 以及 TLS 的身份验证属性:

    bin/kafka-console-producer.sh --broker-list ROUTE-ADDRESS:443 --producer-property security.protocol=SSL --producer-property ssl.truststore.password=password --producer-property ssl.truststore.location=./client.truststore.jks --topic my-topic
  3. 在运行制作者的控制台中键入您的消息。
  4. 按 Enter 发送邮件。
  5. 打开一个新的终端标签页或窗口,启动 Kafka 控制台消费者以接收消息:

    bin/kafka-console-consumer.sh --bootstrap-server ROUTE-ADDRESS:443 --consumer-property security.protocol=SSL --consumer-property ssl.truststore.password=password --consumer-property ssl.truststore.location=./client.truststore.jks --topic my-topic --from-beginning
  6. 确认您在使用者控制台中看到传入的消息。
  7. 按 Crtl+C 退出 Kafka 控制台制作者和使用者。

附录 A. 使用您的订阅

AMQ Streams 通过软件订阅提供。要管理您的订阅,请访问红帽客户门户中的帐户。

访问您的帐户

  1. 转至 access.redhat.com
  2. 如果您还没有帐户,请创建一个帐户。
  3. 登录到您的帐户。

激活订阅

  1. 转至 access.redhat.com
  2. 导航到 My Subscriptions
  3. 导航到 激活订阅 并输入您的 16 位激活号。

下载 Zip 和 Tar 文件

要访问 zip 或 tar 文件,请使用客户门户查找要下载的相关文件。如果您使用 RPM 软件包,则不需要这一步。

  1. 打开浏览器并登录红帽客户门户网站 产品下载页面,网址为 access.redhat.com/downloads
  2. 查找 INTEGRATION 类别 中的 Red Hat AMQ Streams 条目。
  3. 选择所需的 AMQ Streams 产品。此时会打开 Software Downloads 页面。
  4. 单击组件的 Download 链接。

2021-08-27 00:37:48 +1000 修订