Как работает Cassandra Cluster - поставщик семян? - PullRequest
1 голос
/ 22 апреля 2020

У меня есть сомнения по поводу назначения cassandra seed_provider. В моей среде есть 3 узла кассандры, необходимые для настройки в качестве кластера. Как мне определить это в cassandra.yaml? Я в замешательстве, так как большинство уроков давали разные ответы.

Пример: Хост A - 192.168.1.1 Хост B - 192.168.1.2 Хост C - 192.168.1.3

мои текущие настройки для Host A, это правильно?

А как насчет конфигурации для Host B & Host C?

# any class that implements the SeedProvider interface and has a
# constructor that takes a Map<String, String> of parameters will do.
seed_provider:
    # Addresses of hosts that are deemed contact points. 
    # Cassandra nodes use this list of hosts to find each other and learn
    # the topology of the ring.  You must change this if you are running
    # multiple nodes!
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          # seeds is actually a comma-delimited list of addresses.
          # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds: "192.168.1.1,192.168.1.2,192.168.1.3"

1 Ответ

3 голосов
/ 22 апреля 2020

Для начала вам не нужно менять class_name из seed_provider. AFAIK, есть только один корабль с Кассандрой. Он был определен как «подключаемый», чтобы разрешить запись пользовательских поставщиков семян.

Для seeds я не рекомендую назначать каждый узел в списке семян. Если есть только 3 узла, то просто укажите 1 или 2 . Семенные узлы не bootstrap данных и требуют repair для согласованности при замене. Это может затруднить добавление узлов.

Но, насколько я вижу, ваш текущий конфиг будет работать. Я бы просто построил начальный список с максимум 2 узлами.

Просто помните, что для seed_list есть два основных требования:

  • Если вы начинаете первый узел в кластере, его IP-адрес должен быть в seed_list.
  • Должен быть запущен хотя бы один из узлов.

Не могли бы вы объяснить, что влияние, если я продолжу добавлять все 3 узла в начальный список? По каким причинам вы решите добавить 1 или 2 узла в начальный список?

Конечно, все сводится к следующему:

Узлы семени не bootstrap data

Следовательно, назначение всех 3 узлов в seed_list на всех 3 узлах допускает следующие проблемы:

  • Если узел A запущен и данные записывается в него до того, как узлы B или C будут присоединены к кластеру, эти данные будут не направляться на узлы B или C.
  • Если в будущем узел A выходит из строя и заменяется, данные не будут переданы на узел замены.

В этих случаях потребуется nodetool repair для передачи начальных данных в Недавно добавленный узел.

...