【发布时间】:2020-06-22 08:18:08
【问题描述】:
我在尝试加入 KSQLDB 集群并为请求提供服务时遇到了失败。我制作了一张图片,比我写的更好地解释了这个问题。标题为“集群失败”的框是我的问题。
有趣的是,它肯定会尝试集群,因为当我拨打 192.168.150.125:8087 时会收到 {"@type":"statement_error","error_code":40001,"message":"Unable to execute pull query:
@罗宾·莫法特 因此,对于 KDQLDB 版本,使用的 docker 映像是最新的
image: confluentinc/ksqldb-server
至于登录192.168.150.125 docker镜像我看
root@192.168.150.125:~/docker/images/ksqldb# docker logs 0ea930c887f8 ===> 配置 ksqlDB... ===> 正在启动 ksqlDB 服务器... OpenJDK 64 位服务器 VM 警告:选项 UseConcMarkSweepGC 在 >version 9.0 中已弃用,并且可能会在未来的版本中删除。 [2020-06-22 14:38:07,797] 信息 KsqlConfig 值: ksql.access.validator.enable = 自动 ksql.any.key.name.enabled = false ksql.authorization.cache.expiry.time.secs = 30 ksql.authorization.cache.max.entries = 10000 ksql.connect.url = http://localhost:8083 ksql.connect.worker.config = ksql.extension.dir = 分机 ksql.hidden.topics = [_confluent.*, __confl.........
docker logs [imageid] 日志文件中根本没有显示错误。我从头到尾浏览了一遍,甚至在尝试查询时,但日志中没有任何内容告诉我“我无法连接或加入集群”甚至“我已经尝试加入集群”。我会认为,因为这个容器正在尝试加入一个集群,所以会有一些关于它的日志记录,但什么也没有。
我得到的错误是在所有三台服务器上尝试相同的查询时。前两台服务器运行完美,如下所示,但不同机器上的容器出现“无法执行拉取查询:”错误。
root@192.168.150.124:~/docker/images/ksqldb# curl -X "POST" "http://192.168.150.124:8085/query" -H "Content-Type: application/vnd.ksql.v1 +json; charset=utf-8" -d $'{ "ksql": "SELECT * FROM chart_usage_table WHERE ROWKEY='73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05 -03';", "streamsProperties": {} }' [{"header":{"queryId":"query_1592830554884","schema":"
ROWKEYSTRING KEY,USERIDSTRING,ENTITYTYPESTRING,ENTITYIDSTRING,DATESEARCHEDSTRING,COUNTBIGINT "}}, {"行":{"列":["73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05-03","73bd8a1d-5a9e-4343-b0e3-878ab5c37529" ,"pzn","09066437","2020-05-03",100]}}]root@192.168.150.124:~/docker/images/ksqldb# curl -X "POST" “http://192.168.150.124:8086/query”-H“内容类型: 应用程序/vnd.ksql.v1+json; charset=utf-8" -d $'{ "ksql": "SELECT * FROM chart_usage_table WHERE ROWKEY='73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05-03';", “流属性”:{} }' [{"header":{"queryId":"query_1592830563312","schema":"
ROWKEYSTRING 键,USERID字符串,ENTITYTYPE字符串,ENTITYID字符串,DATESEARCHEDSTRING,COUNTBIGINT"}}, {"行":{"列":["73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05-03","73bd8a1d-5a9e-4343-b0e3-878ab5c37529" ,"pzn","09066437","2020-05-03",100]}}]root@192.168.150.124:~/docker/images/ksqldb# curl -X "POST" “http://192.168.150.125:8087/query”-H“内容类型: 应用程序/vnd.ksql.v1+json; charset=utf-8" -d $'{ "ksql": "SELECT * FROM chart_usage_table WHERE ROWKEY='73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05-03';", “流属性”:{} }' {"@type":"statement_error","error_code":40001,"message":"无法 执行拉取查询:SELECT * FROM chart_usage_table WHERE ROWKEY='73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05-03';","stackTrace":[],"statementText":"SELECT * FROM chart_usage_table WHERE ROWKEY ='73bd8a1d-5a9e-4343-b0e3-878ab5c37529|+|zn|+|09066437|+|2020-05-03';","entities":[]}
@安德鲁科茨,
感谢您的澄清,但我更加困惑,因为文档中提到了加入集群,但这并不重要。这里的问题是,即使我尝试了您的解决方案,它也不起作用。我不断收到一个绑定异常,这对我来说似乎是正确的,因为容器无法为其主机绑定任何东西。我也不是 Docker 专家,但我的指关节血腥到足以说问题似乎是 KSQLDB 无法解决某些问题,但没有说明它是什么。
ports:
- "8087:8088"
extra_hosts:
- "ACCL-FFM-SRV-125:192.168.150.125"
- "ACCL-FFM-SRV-124:192.168.150.124"
environment:
KSQL_LISTENERS: http://ACCL-FFM-SRV-125:8088
Caused by: java.net.BindException: Cannot assign requested address at java.base/sun.nio.ch.Net.bind0(Native Method)
不过,还有一件事,我在其他机器容器上调用 netcat 服务器没有问题。所以我知道网络解析从一台机器上的容器到另一台机器上的另一个容器运行良好。
[root@ksqldbservermvcu1 ~]# curl -X "POST" "http://ACCL-FFM-SRV-125:8086/query"
-d $'NETCAT on container will receive this.'
并且在容器中设置了 netcat 来接收。
[root@ksqldbservermvcu4 ~]# nc -l -p 8086
POST /query HTTP/1.1
Host: ACCL-FFM-SRV-124:8086
User-Agent: curl/7.61.1 Accept: */*
Content-Length: 38
Content-Type: application/x-www-form-urlencoded
NETCAT on container will receive this.
顺便尝试使用 KSQL_ADVERTISED_LISTENER:http://192.168.150.125:8088 不会以任何方式得到尊重。注意's'
root@ksqldbservermvcu4:~/docker/images/ksqldb# docker logs a746f993b9d9 | grep advertised
ksql.advertised.listener = null
[2020-07-02 10:44:52,127] WARN The configuration 'advertised.listener' was supplied but isn't a known config. (org.apache.kafka.clients.consumer.ConsumerConfig:355)
root@ksqldbservermvcu4:~/docker/images/ksqldb# docker logs 61fa63d920a3 | grep advertised
ksql.advertised.listener = null
[2020-07-02 11:12:18,298] WARN The configuration 'advertised.listeners' was supplied but isn't a known config. (org.apache.kafka.clients.consumer.ConsumerConfig:355)
也许我遗漏了什么,请帮忙。
【问题讨论】:
-
您能否编辑您的问题以指定 ksqlDB 服务器日志中的任何错误,以及您正在使用的版本
-
应该是
KSQL_KSQL_ADVERTISED_LISTENER,而不是KSQL_ADVERTISED_LISTENER
标签: docker confluent-platform ksqldb