Я видел, что клиенту Cassandra нужен массив хостов.
Например, Python использует это:
from cassandra.cluster import Cluster
cluster = Cluster(['192.168.0.1', '192.168.0.2'])
Вопрос 1. Зачем мне проходить эти узлы?
Вопрос 2: мне нужно пройти все узлы? Или одного достаточно? (Все узлы имеют информацию обо всех остальных узлах, верно?)
Вопрос 3: Клиент выбирает лучший узел для соединения, зная все узлы? Знает ли клиент, какие данные хранятся в каждом узле?
Вопрос 4: Я начинаю использовать Кассандру впервые и впервые использую Кубернетес. Я развернул кластер Cassandra с 3 узлами Cassandra. Я развернул еще одну машину, и на этой машине я хочу подключиться к Cassandra с помощью клиента Python Cassandra. Нужно ли передавать все IP-адреса Cassandra клиенту Python Cassandra? Или достаточно поставить Cassandra DNS, данный Kubernetes?
Например, когда я запускаю команду dig
, я знаю все IP-адреса Cassandra. Я не знаю, достаточно ли передать этот 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'])