我们在 2 个不同的 openshift 集群中部署了 2 个 cassandra 数据中心(每个 openshift 集群一个)。每个Cassandra数据中心都有一个种子盒(pod-0)
我们使用了bitnami helm-chart(https://github . com/bitnami/charts/tree/master/bitnami/Cassandra)
现在我们想连接两个cassandra数据中心以同步数据。我们怎么做呢?
我想我们需要使用开放式路线公开 Cassandra 流量。但是要公开/使用哪个端口和服务?
我可以看到我们有:
我尝试了一些解决方案,但到目前为止我没有成功:例如,我可以从日志中看到Cassandra环试图通过端口9042连接,但Openshift路由可以通过端口443访问:
我们将cassandra配置为使用ssl,openshift中的路由可通过F5负载平衡器访问,该负载平衡器面向ops shift的所有基础节点
更新1
基本上,我们希望复制这种体系结构(但有2k8s集群,没有操作员)https://itnext.io/managing-a-multi-site-cassandra-cluster-on-multiple-kubernetes-with-casskop-multicasskop-cf407c297701
或者https://docs.k8ssandra.io/components/k8ssandra-operator/
更新2
基本上,如果有一种方法可以将内部节点端口配置为7000,但对cassandra说使用另一个端口连接到其他cassandra主机,它就可以工作。类似于Elasticsearch,您有http.port
和http.publish_port
Elasticsearch配置
如您所知,这些是节点形成集群所需的三个基本属性:
cluster_name
为了使不同K8s集群中的两个DC能够组成一个集群,您需要在两个K8s集群之间的八卦端口7000
上设置第一个启用双向TCP网络连接的DC。
您还需要确保将 Pod 配置为对 cassandra.yaml
中的种子列表使用服务。必须公开此种子服务,以便其他 K8s 群集可以访问它。
第一个 DC 正常运行后,需要将配置复制到其他 K8s 群集中的第二个 DC,以便:
cluster_name
7000
上与八卦有网络连接理想情况下,第二个DC还配置了种子服务,以便两个DC都可以使用它们。干杯!
你能用hostPort
而不是nodePort
吗?我已经能够使用 cass 运算符将两个独立的 OpenShift K8s kube 连接到一个集群中,但它需要一些 hijinks。你能看到这个文档吗 https://docs.google.com/document/d/1YuS0FaCKIu_Sa9XMDRSI17MqMOHqzScR6SO7XVBImz4/edit