【发布时间】:2019-04-06 01:41:17
【问题描述】:
我看到 Cassandra 客户端需要一组主机。
例如,Python 使用这个:
from cassandra.cluster import Cluster
cluster = Cluster(['192.168.0.1', '192.168.0.2'])
问题一:为什么需要传递这些节点?
问题2:我需要通过所有节点吗?或者一个就足够了? (所有节点都有所有其他节点的信息,对吧?)
问题 3:客户端是否在知道所有节点的情况下选择最佳节点来连接?客户端是否知道每个节点中存储了哪些数据?
问题4:我是第一次开始使用Cassandra,也是第一次使用Kubernetes。我部署了一个带有 3 个 Cassandra 节点的 Cassandra 集群。我部署了另一台机器,在这台机器上,我想通过 Python Cassandra 客户端连接到 Cassandra。我需要将所有 Cassandra IP 传递给 Python Cassandra 客户端吗?还是放Kubernetes给的Cassandra DNS就够了?
例如,当我运行 dig 命令时,我知道所有 Cassandra IP。不知道把这个DNS传给客户端够不够
# dig cassandra.default.svc.cluster.local
IP 为10.32.1.19、10.32.1.24、10.32.2.24
; <<>> DiG 9.10.3-P4-Debian <<>> cassandra.default.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18340
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;cassandra.default.svc.cluster.local. IN A
;; ANSWER SECTION:
cassandra.default.svc.cluster.local. 30 IN A 10.32.1.19
cassandra.default.svc.cluster.local. 30 IN A 10.32.1.24
cassandra.default.svc.cluster.local. 30 IN A 10.32.2.24
;; Query time: 2 msec
;; SERVER: 10.35.240.10#53(10.35.240.10)
;; WHEN: Thu Apr 04 16:08:06 UTC 2019
;; MSG SIZE rcvd: 125
使用例子有什么缺点:
from cassandra.cluster import Cluster
cluster = Cluster(['cassandra.default.svc.cluster.local'])
【问题讨论】:
标签: cassandra kubernetes