Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要将所有节点传递给Cassandra客户端?_Cassandra_Kubernetes - Fatal编程技术网

我需要将所有节点传递给Cassandra客户端?

我需要将所有节点传递给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:

我看到Cassandra客户端需要一组主机

例如,Python使用以下方法:

from cassandra.cluster import Cluster

cluster = Cluster(['192.168.0.1', '192.168.0.2'])
  • 资料来源:
问题1:为什么我需要传递这些节点

问题2:是否需要传递所有节点?还是一个就足够了?(所有节点都有关于所有其他节点的信息,对吗?)

问题3:客户端是否选择了连接所有节点的最佳节点?客户端是否知道每个节点中存储了哪些数据

问题4:我第一次开始使用卡桑德拉,第一次使用库伯内特斯。我部署了一个带有3个Cassandra节点的Cassandra集群。我部署了另一台机器,在这台机器中,我想通过Python Cassandra客户端连接到Cassandra。我是否需要将所有Cassandra IP传递给Python Cassandra客户端?或者,仅仅把库伯内特斯给出的卡桑德拉域名放进去就足够了吗

例如,当我运行
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'])