7.5. 使用 loadbalancers 访问 Kafka


使用 loadbalancers 从 OpenShift 集群外的外部客户端访问 AMQ Streams Kafka 集群。

要连接到代理,您可以为 Kafka bootstrap 地址指定主机名和端口号,以及用于 TLS 加密的证书。

该流程显示基本的 loadbalancer 侦听器配置。您可以使用监听程序属性启用 TLS 加密(tls)并指定客户端身份验证机制(身份验证)。使用 配置属性 添加额外的配置。例如,您可以将以下配置属性用于 loadbalancer 侦听程序:

loadBalancerSourceRanges
将流量限制为指定的 CIDR 列表(Classless Inter-Domain Routing)范围。
externalTrafficPolicy
指定服务是否将外部流量路由到节点本地还是集群范围的端点。
loadBalancerIP
在创建 loadbalancer 时请求特定的 IP 地址。

如需有关监听器配置的更多信息,请参阅 GenericKafkaListener 模式参考

先决条件

  • 正在运行的 Cluster Operator

在此过程中,Kafka 集群名称为 my-cluster。侦听器的名称是 外部

流程

  1. 配置一个 Kafka 资源,并将外部监听程序设置为 loadbalancer 类型。

    例如:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      labels:
        app: my-cluster
      name: my-cluster
      namespace: myproject
    spec:
      kafka:
        # ...
        listeners:
          - name: external
            port: 9095
            type: loadbalancer
            tls: true
            authentication:
              type: tls
            # ...
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  2. 创建或更新资源。

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

    验证 kafka 代理的身份的集群 CA 证书也会在 secret my-cluster-cluster-ca-cert 中创建。

    为每个 Kafka 代理创建 loadbalancer 类型服务和负载均衡器,以及外部 bootstrap 服务。

    为 bootstrap 和代理创建的 LoadBalancer 服务和负载均衡器

    NAME                                  TYPE            CLUSTER-IP      PORT(S)
    my-cluster-kafka-external-0          LoadBalancer     172.30.204.234  9095:30011/TCP
    my-cluster-kafka-external-1          LoadBalancer     172.30.164.89   9095:32544/TCP
    my-cluster-kafka-external-2          LoadBalancer     172.30.73.151   9095:32504/TCP
    my-cluster-kafka-external-bootstrap  LoadBalancer     172.30.30.228   9095:30371/TCP
    
    NAME                                 EXTERNAL-IP (loadbalancer)
    my-cluster-kafka-external-0          a8a519e464b924000b6c0f0a05e19f0d-1132975133.us-west-2.elb.amazonaws.com
    my-cluster-kafka-external-1          ab6adc22b556343afb0db5ea05d07347-611832211.us-west-2.elb.amazonaws.com
    my-cluster-kafka-external-2          a9173e8ccb1914778aeb17eca98713c0-777597560.us-west-2.elb.amazonaws.com
    my-cluster-kafka-external-bootstrap  a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com
    Copy to Clipboard Toggle word wrap

    用于客户端连接的 bootstrap 地址传播到 Kafka 资源的 status

    bootstrap 地址的状态示例

    status:
      clusterId: Y_RJQDGKRXmNF7fEcWldJQ
      conditions:
        - lastTransitionTime: '2023-01-31T14:59:37.113630Z'
          status: 'True'
          type: Ready
      listeners:
        # ...
        - addresses:
            - host: >-
                a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com
              port: 9095
          bootstrapServers: >-
            a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9095
          certificates:
            - |
              -----BEGIN CERTIFICATE-----
    
              -----END CERTIFICATE-----
          name: external
          type: external
      observedGeneration: 2
     # ...
    Copy to Clipboard Toggle word wrap

    用于客户端连接的 DNS 地址会传播到每个 loadbalancer 服务的状态

    bootstrap loadbalancer 的状态示例

    status:
      loadBalancer:
        ingress:
          - hostname: >-
              a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com
     # ...
    Copy to Clipboard Toggle word wrap

  3. Kafka 资源的状态中检索可用于访问 Kafka 集群的 bootstrap 地址。

    oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'
    
    a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9095
    Copy to Clipboard Toggle word wrap
  4. 提取集群 CA 证书。

    oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    Copy to Clipboard Toggle word wrap
  5. 将您的客户端配置为连接到代理。

    1. 指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9095
    2. 将提取的证书添加到 Kafka 客户端的信任存储中,以配置 TLS 连接。

      如果启用了客户端身份验证机制,您还需要在客户端上配置它。

注意

如果您使用自己的监听程序证书,请检查您是否需要将 CA 证书添加到客户端的信任存储配置中。如果是一个公共(外部)CA,您通常不需要添加它。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat