首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使KSQLDB群集高度可用于请求查询

使KSQLDB群集高度可用于请求查询
EN

Stack Overflow用户
提问于 2022-07-04 14:27:38
回答 1查看 142关注 0票数 0

我在GKE上运行了一个2节点的KSQLDB0.26集群。两者都可以独立运行,但它们并没有为高可用性而正确地设置,我也不知道为什么。当我试图从/clusterStatus端点获取内省集群状态时,hostAlive值始终是其中一个服务器的false。这是在运行SELECT * FROM X AS SELECT查询时发生的。当我试图提取查询时,我得到了以下输出:

{"@type":"statement_error","error_code":40001,“message”:“启动拉查询错误:无法执行拉查询”。[分区0未能找到有效主机。主机扫描:没有选择ksqldb-2:8099,因为主机在1656932189568时未存活,主机不存在滞后信息。由于主机不存在滞后信息,所以没有选择ksqldb-1:8099。分区1未能找到有效的主机。主机扫描:由于主机不存在延迟信息,所以没有选择ksqldb-1:8099。由于主机在1656932189568时已不存在,所以没有选择ksqldb-2:8099,主机不存在滞后信息。分区2找不到有效的主机。主机扫描:没有选择ksqldb-2:8099,因为主机在1656932189568时未存活,主机不存在滞后信息。由于主机不存在滞后信息,所以没有选择ksqldb-1:8099。分区3未能找到有效的主机。主机扫描:由于主机不存在延迟信息,所以没有选择ksqldb-1:8099。由于主机在1656932189568时已不存在,所以没有选择ksqldb-2:8099,主机不存在滞后信息。分区4未能找到有效的主机。主机扫描:没有选择ksqldb-2:8099,因为主机在1656932189568时未存活,主机不存在滞后信息。由于主机不存在滞后信息,所以没有选择ksqldb-1:8099。分区5未能找到有效的主机。主机扫描:没有选择ksqldb-1:8099,因为主机不存在滞后信息。由于主机在1656932189568时未存活,所以没有选择ksqldb-2:8099,主机不存在滞后信息。分区6未能找到有效的主机。主机扫描:没有选择ksqldb-2:8099,因为主机在1656932189568时未存活,主机不存在滞后信息。由于主机不存在滞后信息,所以没有选择ksqldb-1:8099。分区7未能找到有效的主机。主机扫描:没有选择ksqldb-1:8099,因为主机不存在滞后信息。由于主机在1656932189568时未存活,所以没有选择ksqldb-2:8099,主机不存在滞后信息。分区8未能找到有效的主机。主机扫描:没有选择ksqldb-2:8099,因为主机在1656932189568时未存活,主机不存在滞后信息。由于主机不存在滞后信息,所以没有选择ksqldb-1:8099。分区9未能找到有效的主机。主机扫描:没有选择ksqldb-1:8099,因为主机不存在滞后信息。由于主机在1656932189568时未存活,所以没有选择ksqldb-2:8099,主机不存在滞后信息。分区10找不到有效的主机。主机扫描:没有选择ksqldb-2:8099,因为主机在1656932189568时未存活,主机不存在滞后信息。由于主机不存在滞后信息,所以没有选择ksqldb-1:8099。分区11未能找到有效的主机。主机扫描:没有选择ksqldb-1:8099,因为主机不存在滞后信息。由于主机在1656932189568时已不活动,因此没有选择ksqldb-2:8099,主机不存在滞后信息。]\n状态:从DOMAIN_TIER_TABLE选择*;“statementText”:“选择*从DOMAIN_TIER_TABLE;",”实体“:[]}

我在KSQL上使用带有UDF加载和的Docker映像。我认为这些是我的kubernetes部署清单中的相关KSQL env vars:

代码语言:javascript
复制
- name: KSQL_LISTENERS          
  value: http://0.0.0.0:8089
- name: KSQL_KSQL_INTERNAL_LISTENER
  value: "http://0.0.0.0:8099"
- name: KSQL_KSQL_ADVERTISED_LISTENER
  value: "http://ksqldb-1:8099"
- name: KSQL_KSQL_STREAMS_NUM_STANDBY_REPLICAS
  value: "1"
- name: KSQL_KSQL_QUERY_PULL_ENABLE_STANDBY_READS
  value: "true"
- name: KSQL_KSQL_HEARTBEAT_ENABLE
  value: "true" 
- name: KSQL_KSQL_LAG_REPORTING_ENABLE
  value: "true"

这是给一个服务器的。另一个将使用ksqldb-2作为主机名。这将解析为一个IP地址,我通过在豆荚上获得一个shell并通过printenv检查这些变量是否被传递来确认这个IP地址。一切看起来都是这样。我为每个服务器都提供了一项服务。我有一种感觉,我错误地设置了我的侦听器,但是我尝试了很多不同的侦听器迭代。

我不习惯问关于堆叠溢出的问题,所以我不太确定还能提供什么,但我可以提供任何所需的!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-07-25 11:26:57

对于任何感兴趣的人来说,使用HTTP保护KSQL会导致拉查询中断的高可用性。这是因为发送给HA启用的心跳返回401。目前,我还没有看到通过这些心跳传递身份验证细节的方法。

如果您可以利用NGINX入口控制器来传递oauth凭据,那可能是最好的方法。然而,在我们的例子中,KSQL和NGINX之间的最后一次跳转不支持HTTP/2,这对于我们需要的Streams API中的某些作用域是必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72858299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档