#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 фабрика репликации будет работать.