在 docker 中将 ksql 与融合版本 3.3.0 的 kafka 连接的问题
Issue in connecting ksql with kafka of confluent version 3.3.0 in docker
我正在按照以下方式使用融合版本 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 镜像如下
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
当我 运行 ksql-cli
通过以下方式进入 bash 容器时
docker exec -it ksql-cli bash
和运行 ksql-cli
如下:
./usr/bin/ksql-cli local
它给我以下错误:
Initializing KSQL...
Could not fetch broker information. KSQL cannot initialize AdminCLient.
默认情况下,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
变成 ksql
。 local
模式消失了——你需要 运行 一个或两个显式的 ksql-server 节点。 --property-file
变为 --config-file
,schema.registry.url
变为 ksql.schema.registry.url
。
我正在按照以下方式使用融合版本 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 镜像如下
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
当我 运行 ksql-cli
通过以下方式进入 bash 容器时
docker exec -it ksql-cli bash
和运行 ksql-cli
如下:
./usr/bin/ksql-cli local
它给我以下错误:
Initializing KSQL...
Could not fetch broker information. KSQL cannot initialize AdminCLient.
默认情况下,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
变成 ksql
。 local
模式消失了——你需要 运行 一个或两个显式的 ksql-server 节点。 --property-file
变为 --config-file
,schema.registry.url
变为 ksql.schema.registry.url
。