我们在 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配置
你能用hostPort
而不是nodePort
吗?我已经能够使用 cass 运算符将两个独立的 OpenShift K8s kube 连接到一个集群中,但它需要一些 hijinks。你能看到这个文档吗 https://docs.google.com/document/d/1YuS0FaCKIu_Sa9XMDRSI17MqMOHqzScR6SO7XVBImz4/edit
如您所知,这些是节点形成集群所需的三个基本属性:
cluster_name
为了使不同K8s集群中的两个DC能够组成一个集群,您需要在两个K8s集群之间的八卦端口7000
上设置第一个启用双向TCP网络连接的DC。
您还需要确保将 Pod 配置为对 cassandra.yaml
中的种子列表使用服务。必须公开此种子服务,以便其他 K8s 群集可以访问它。
第一个 DC 正常运行后,需要将配置复制到其他 K8s 群集中的第二个 DC,以便:
cluster_name
7000
上与八卦有网络连接理想情况下,第二个DC还配置了种子服务,以便两个DC都可以使用它们。干杯!
请看下面的代码,让我知道我哪里做错了? 使用: DSE版本-5.1.0 172.31.16.45:9042连接到测试群集。[cqlsh 5.0.1|Cassandra3.10.0.1652|DSE 5.1.0|CQL规范3.4.4|本地协议v4]使用HELP寻求帮助。 谢谢 斯卡拉 斯卡拉 斯卡拉 我在这里什么都得不到?甚至没有错误。
DSE版本4.8.2 我用数据向集群添加了6个新节点,并将bootstrap:false。他们加入后,我正在对每一个进行重建。我相信1NODE已完成,但控制台上的命令仍在“运行”(例如,我还无法运行另一个命令)。我想确保它完全完成。该单元没有压实,也没有活动的溪流。更新:现在已经4天了,仍然处于命令提示符下。 除了compationstats和netstats,还有什么我可能缺少的吗?我看到它流式
我已经和Cassandra合作了一段时间,并遵循了以下链接中的基准测试提示: http://www.datastax.com/dev/blog/how-not-to-benchmark-cassandra 我有4个节点运行Cassandra,2个不同的节点使用本机基准测试工具“cassandra-stress”为集群提供数据。我知道,由于Cassandra写操作的LSM特性,它们很难绑定到IO,但
我正在使用一个安装了docker的docker映像,为了运行任务来清理我的kubernetes集群中每个节点上的docker映像数据。我尝试使用Daemonset,因为它将在除master之外的每个节点上运行,但是在docker容器中运行cron被证明是徒劳的。 因此,我尝试使用K8s Cronjob,它定期运行,具有以下属性: 和 我正在运行一个 shell 脚本,该脚本从上述 CronJob
引用这篇文章: http://www.datastax.com/dev/blog/4-simple-rules-when-using-the-datastax-drivers-for-cassandra Cassandra的存储引擎进行了优化,以避免存储不必要的空列,但是当使用预准备语句时,那些未提供的参数会导致空值被传递给Cassandra(从而存储墓碑)。目前,这种情况的唯一解决方法是为最常见
我正在为python使用datastax cassandra驱动程序。 有争议的代码部分是: 结果是: 我不确定括号周围的括号来自哪里,一旦我删除了括号,prepare 语句就会起作用。 想法?