Cassandra: GossipingPropertyFileSnitch: недоступное исключение при вставке в таблицу

#cassandra #database-replication

#cassandra #база данных-репликация

Вопрос:

Я создал 2-узловой кластер cassandra со следующими конфигурациями.
Узел-1:
cassandra-topology.properties:

 192.168.1.177=DC1:RAC1
192.168.1.134=DC2:RAC2
  

cassandra.yml:

 cluster_name: 'TestCluster'
num_tokens: 256  
listen_address:  
rpc_address: localhost 
- seeds: "192.168.1.177,192.168.1.134"  
endpoint_snitch: GossipingPropertyFileSnitch
  

Узел-2:

cassandra-topology.properties:

 192.168.1.177=DC1:RAC1  
127.0.0.1=DC2:RAC2 # Also tried 192.168.1.134 ip
  

cassandra.yml:

  cluster_name: 'TestCluster'  
    num_tokens: 256 
    listen_address:  
    rpc_address: localhost 
    - seeds: "192.168.1.177"  
    endpoint_snitch: GossipingPropertyFileSnitch 
  

Я вижу, что оба узла запущены с помощью команды ‘nodetool status’. Пространство ключей, которое я создал, выглядит следующим образом:

  > CREATE  KEYSPACE testReplication WITH replication = {'class':  NetworkTopologyStrategy', 'DC1' : '2', 'DC2' : '2'};
  

Я также могу создавать таблицы, которые реплицируются на оба узла, но когда я пытаюсь «ВСТАВИТЬ» или «ВЫБРАТЬ» в таблице, cqlsh выдает «NoHostAvailable:»,
но system.log ничего об этом не показывает.

Любая помощь будет оценена.
Спасибо.

Ответ №1:

В cassandra.yaml каждом узле укажите ip вашего узла на rpc_address: и listen_address: и попытайтесь указать seeds: одинаковый для каждого узла (DC1 и DC2). А также для cassandra-topology.properties установите одинаковую конфигурацию для каждого узла. Итак, например, ваша конфигурация узла-1 будет выглядеть следующим образом:

 cluster_name: 'TestCluster'
num_tokens: 256  
listen_address: 192.168.1.177
rpc_address: 192.168.1.177
- seeds: "192.168.1.177,192.168.1.134"  
endpoint_snitch: GossipingPropertyFileSnitch
  

И для каждого узла, cassandra-topology.properties :

 192.168.1.177=DC1:RAC1
192.168.1.134=DC2:RAC2
  

Комментарии:

1. Последовал вашим инструкциям, по-прежнему получая ошибку Nohost Available, но на этот раз nodetool status отображается только один узел на обеих машинах.

2. Ошибка, с которой вы сталкиваетесь, является причиной вашей стратегии репликации. Как в DC1, так и в DC2 у вас есть коэффициент репликации 2, но у вас есть один узел, доступный в каждом DC. У вас должно быть как минимум 2 узла для коэффициента репликации 2. Обычно мы выполняем репликацию с коэффициентом 2, в то время как в DC доступно 3 узла. Но для 2 узлов DC фабрика репликации будет работать.