我需要将所有节点传递给Cassandra客户端?
我看到Cassandra客户端需要一组主机 例如,Python使用以下方法:我需要将所有节点传递给Cassandra客户端?,cassandra,kubernetes,Cassandra,Kubernetes,我看到Cassandra客户端需要一组主机 例如,Python使用以下方法: from cassandra.cluster import Cluster cluster = Cluster(['192.168.0.1', '192.168.0.2']) 资料来源: 问题1:为什么我需要传递这些节点 问题2:是否需要传递所有节点?还是一个就足够了?(所有节点都有关于所有其他节点的信息,对吗?) 问题3:客户端是否选择了连接所有节点的最佳节点?客户端是否知道每个节点中存储了哪些数据 问题4:
from cassandra.cluster import Cluster
cluster = Cluster(['192.168.0.1', '192.168.0.2'])
- 资料来源:
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
问题1:为什么我需要传递这些节点
与群集进行初始联系。如果进行了连接,则这些接触点没有用处
问题2:是否需要传递所有节点?还是一个就足够了?(全部
节点具有关于所有其他节点的信息,对吗?)
您只能将一个节点作为联系点传递,但问题是,如果驱动程序尝试联系时该节点已关闭,则它将无法连接到群集。因此,如果您提供另一个联系人,即使第一个联系人失败,它也会尝试与之连接。如果你用你的卡桑德拉种子名单作为联络点会更好
问题3:客户端是否选择了连接的最佳节点
所有节点?客户端是否知道每个节点中存储了哪些数据
一旦建立了初始连接,客户机驱动程序将拥有关于集群的元数据。客户端将知道每个节点中存储了哪些数据,以及哪些节点可以以较少的延迟进行查询。您可以使用负载平衡策略配置所有这些
参考:
问题4:我第一次开始使用卡桑德拉,我
第一次使用kubernetes。我部署了一个cassandra集群
有3个cassandra节点。我部署了另一台机器,在这个
计算机我想通过Python cassandra客户端连接到cassandra。
我是否需要将所有cassandra IP传递给Python cassandra客户端?或者是
把库伯内特斯给出的卡桑德拉域名放进去就足够了吗
如果主机名可以解析,那么最好使用DNS而不是IP。我看不出有什么缺点
from cassandra.cluster import Cluster
cluster = Cluster(['cassandra.default.svc.cluster.local'])