首页 > 解决方案 > 使用 kafka 将主机协议从 http 更改为 https

问题描述

当我使用 http 协议 kafka 与我一起运行时,我遇到了 kafka 的问题,没有任何问题

但是在将协议从 http 升级到 https 之后

升级后所有服务都返回相同的错误

2021-10-28 23:16:26.367  WARN 1 --- [ad | producer-1] org.apache.kafka.clients.NetworkClient   : [Producer clientId=producer-1] Connection to node 1 (/206.189.178.228:9092) could not be established. Broker may not be available.
2021-10-28 23:18:02.623  WARN 1 --- [ntainer#1-0-C-1] org.apache.kafka.clients.NetworkClient   : [Consumer clientId=consumer-2, groupId=groupId] Connection to node 1 (/206.189.178.228:9092) could not be established. Broker may not be available.

在生产者和消费者中,我不知道会发生什么,或者这个错误是否来自 SSL

但我没有更改任何关于 Kafka 的配置

这是我的 kafak.yml 文件

                                                                                   kafka.yml                                                                                               
version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:5.5.0
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    networks:
      - food_default
  kafka:
    image: confluentinc/cp-kafka:5.5.0
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: kafka
      LISTENERS: PLAINTEXT://206.189.178.228:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://206.189.178.228:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    networks:
      - food_default

networks:
  food_default:
    external: true

这是服务配置此配置存在于其他服务中

    version: '2'
services:
  food-order-service:
    image: altshiftcreative/food-app-order-service:v1.5
    environment:
      # - _JAVA_OPTIONS=-Xmx512m -Xms256m
      - SPRING_PROFILES_ACTIVE=prod,swagger
      - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=false
      - EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://admin:$${jhipster.registry.password}@jhipster-registry:8761/eureka
      - SPRING_CLOUD_CONFIG_URI=http://admin:$${jhipster.registry.password}@jhipster-registry:8761/config
      - SPRING_DATASOURCE_URL=jdbc:mysql://food-mysql:3306/food_db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&useLegacyDatetimeCode=false&serverTimezone=UTC&createD>
      - SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_OIDC_ISSUER_URI=https://shopbia.shop/auth/realms/jhipster
      - SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_OIDC_CLIENT_ID=internal
      - SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_OIDC_CLIENT_SECRET=internal
      # - JHIPSTER_SLEEP=30 # gives time for other services to boot before the application
      - KAFKA_BOOTSTRAPSERVERS=kafka:9092
    ports:
      - 8082:8082
    networks:
      - food_default
networks:
  food_default:
    external: true

标签: spring-bootdockersslapache-kafkadocker-compose

解决方案


Kafka 不是 HTTP 协议,因此您的问题与此无关

你已经设置KAFKA_BOOTSTRAPSERVERS=kafka:9092

我没有改变任何关于 Kafka 的配置

我想你做到了。该 IP 地址不是任何默认值。要恢复到同一 Docker 网络中的预期行为,您需要设置

LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092

不清楚您从哪里获取 IP 地址,但如果您想将 Docker 容器暴露给该子网中的外部网络,那么您将需要其他设置


推荐阅读