在docker中将ksql与融合版本3.3.0的kafka连接时出现问题

时间:2018-04-11 13:11:41

标签: docker apache-kafka ksql

我正在以下列方式使用汇合版本3.3.0设置ksql-cli

#zookeper
docker run -d -it \
    --net=host \
    --name=zookeeper \
    -e ZOOKEEPER_CLIENT_PORT=32181 \
    confluentinc/cp-zookeeper:3.3.0

#kafka
docker run -d \
    --net=host \
    --name=kafka \
    -e KAFKA_ZOOKEEPER_CONNECT=localhost:32181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092 \
    -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
    confluentinc/cp-kafka:3.3.0

#schema-registry
docker run -d \
  --net=host \
  --name=schema-registry \
  -e SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL=localhost:32181 \
  -e SCHEMA_REGISTRY_HOST_NAME=localhost \
  -e SCHEMA_REGISTRY_LISTENERS=http://localhost:8081 \
  confluentinc/cp-schema-registry:3.3.0

我正在以下列方式运行ksql-cli docker image

  docker run -it \
  --net=host \
  --name=ksql-cli \
  -e KSQL_CONFIG_DIR="/etc/ksql" \
  -e KSQL_LOG4J_OPTS="-Dlog4j.configuration=file:/etc/ksql/log4j-rolling.properties" \
  -e STREAMS_BOOTSTRAP_SERVERS=localhost:29092 \
  -e STREAMS_SCHEMA_REGISTRY_HOST=localhost \
  -e STREAMS_SCHEMA_REGISTRY_PORT=8081 \
  confluentinc/ksql-cli:0.5

当我以下面的方式进入容器的bash时运行ksql-cli

docker exec -it ksql-cli bash

并按以下方式运行ksql-cli

./usr/bin/ksql-cli local

它给了我以下错误:

  

初始化KSQL ......

     

无法获取经纪人信息。 KSQL无法初始化AdminCLient。

1 个答案:

答案 0 :(得分:2)

默认情况下,ksql-cli尝试连接到localhost:9092上的Kafka代理。看起来您的设置使用了不同的端口,因此您需要在命令行上提供此功能,例如

./usr/bin/ksql-cli local --bootstrap-server localhost:32181

您可能还需要指定架构注册表端口,因此您可能希望使用属性文件,例如:

./usr/bin/ksql-cli local --properties-file ./ksql.properties

ksql.properties具有:

bootstrap.servers=localhost:29092 schema.registry.url=localhost:8081

或者在命令行上提供两者:

./usr/bin/ksql-cli local \ --bootstrap-server localhost:29092 \ --schema.registry.url http://localhost:8081

注意,从KSQL 4.1版开始,命令和属性会更改名称。 ksql-cli只是ksqllocal模式消失 - 您需要显式运行一个或两个ksql-server节点。 --property-file变为--config-fileschema.registry.url变为ksql.schema.registry.url