gpt4 book ai didi

node.js - 暴露在 Kubernetes 上运行的 Cassandra

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:46 27 4
gpt4 key购买 nike

我正在 Kubernetes(3 个实例)上运行 Cassandra,并希望将其公开给外部,但我的应用程序尚未在 Kubernetes 中。所以我创建了一个负载平衡服务,如下所示:

apiVersion: v1
kind: Service
metadata:
namespace: getquanty
labels:
app: cassandra
name: cassandra
annotations:
kubernetes.io/tls-acme: "true"
spec:
clusterIP:
ports:
- port: 9042
name: cql
nodePort: 30001
- port: 7000
name: intra-node
nodePort: 30002
- port: 7001
name: tls-intra-node
nodePort: 30003
- port: 7199
name: jmx
nodePort: 30004
selector:
app: cassandra
type: LoadBalancer

这是结果:

NAME        CLUSTER-IP     EXTERNAL-IP     PORT(S)                                                       AGE
cassandra 10.55.249.88 GIVEN_IP_GCE_LB 9042:30001/TCP,7000:30002/TCP,7001:30003/TCP,7199:30004/TCP 26m

我可以使用 sh (cqlsh GIVEN_IP_GCE_LB )进行连接,但是当我尝试使用 Node 的 datastax 驱动程序将数据添加到 Cassandra 时,我得到了:

message: 'Cannot achieve consistency level SERIAL',
info: 'Represents an error message from the server',
code: 4096,
consistencies: 8,
required: 1,
alive: 0,
coordinator: '35.187.166.68:9042' },
'10.52.4.32:9042': 'Host considered as DOWN',
'10.52.2.15:9042': 'Host considered as DOWN' },
info: 'Represents an error when a query cannot be performed because no host is available or could be reached by the driver.',
message: 'All host(s) tried for query failed. First host tried, 35.187.166.68:9042: ResponseError: Cannot achieve consistency level SERIAL. See innerErrors.' }

我的第一个想法是我也需要公开其他端口,所以我这样做了( Node 内、tls-intra-node、jmx),但这是同样的错误。

Kubernetes 为您提供了代理访问权限,我尝试使用为 pod 构建的 URL 从我的机器进行代理,以测试我是否具有访问权限,但无法使用 cqlsh 连接:

http://127.0.0.1:8001/api/v1/namespaces/qq/pods/cassandra-0:cql/proxy

我没有想法,剩下要尝试的一件事是公开每个实例(为每个实例提供服务),这非常丑陋,但它会让我从外部连接到 Node ,直到我迁移应用程序到 Kubernetes。

有人知道如何将 Cassandra Node 公开到互联网并使 Datastax 驱动程序了解所有 Node 吗?感谢您抽出时间。

最佳答案

经过更多阅读,我发现复制策略是导致问题的原因,NetworkStrategy适合多集群,我有一个,所以我根据我拥有的 Node 数量将复制更改为简单,现在一切都好了按预期工作。

编辑1:将数据库放在 Kube 上并不是一个好的解决方案,我最终创建了一个独立的集群,将其添加到与 kube 相同的网络中,并且能够从 kube pod 访问它。

Kube 是为了管理应用程序并使它们具有“弹性”,我不认为人们真的需要像应用程序一样快速地扩展数据库,此外,数据库的扩展与无状态应用程序不同。

关于node.js - 暴露在 Kubernetes 上运行的 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43124477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com