2012-04-20 3 views
1

Ну, у меня есть один кластер узлов, и я разделился на два адреса 127.0.0.1 и 127.0.0.2. Использование клиента Cassandra, если я попытаюсь вставить данные в 127.0.0.1. Данные успешно добавляются для 127.0.0.1, и я могу просмотреть его также, но если я попытаюсь подключиться к просмотру из 127.0.0.2, я не вижу никакого обновления. Нет данных. Я думаю, что не смог объяснить это в прошлый раз. Вот как я скопировал две кассандры в разные папки с именем Cassandra 1 и Cassandra 2 на том же узле. Обновите Cassandra.yaml соответственно.Cassandra Clustering Single Node

1)

cluster_name: 'Test Cluster' 
initial_token: 
data_file_directories: - /Cassandra/1/var/lib/cassandra/data 
commitlog_directory: /Cassandra/1/var/lib/cassandra/commitlog 
saved_caches_directory: /Cassandra/1/var/lib/cassandra/saved_caches 
- seeds: "127.0.0.1,127.0.0.2" 
listen_address: 127.0.0.1 
rpc_address: 127.0.0.1 

2)

cluster_name: 'Test Cluster' 
initial_token: 
data_file_directories: - /Cassandra/2/var/lib/cassandra/data 
commitlog_directory: /Cassandra/2/var/lib/cassandra/commitlog 
saved_caches_directory: /Cassandra/2/var/lib/cassandra/saved_caches 
- seeds: "127.0.0.1,127.0.0.2" 
listen_address: 127.0.0.2 
rpc_address: 127.0.0.2 

остальные настройки по умолчанию, и я ничего не изменяется. Затем я создаю пространство ключей и столбцы семью с помощью:

CREATE KEYSPACE demo with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options = [{replication_factor:2}]; 

Я не указал partioner так defauly случаен я думаю.

use demo; 

create column family order with comparator=UTF8Type and key_validation_class=UTF8Type and default_validation_class=UTF8Type and column_metadata=[{column_name: member, validation_class: UTF8Type},{column_name: user, validation_class: UTF8Type, index_type: KEYS},{column_name: instrument, validation_class: UTF8Type},{column_name: price, validation_class: DoubleType}, {column_name: quantity, validation_class: Int32Type},{column_name:datetime, validation_class: DateType}]; 

Теперь, если я пытаюсь подключиться к 127.0.0.1 и вставить данные, я верю, что данные должны быть вставлены как для 127.0.0.1 и 127.0.0.2, но это не так.

Set orders[KEY][user] = 'ABC' list orders; 

Есть ли что-то не так? Что я должен сделать, чтобы сделать его работоспособным.

Пожалуйста, дайте мне подробный пример, если у вас есть. Я думаю, что я делаю что-то неправильно, создавая пространство ключей, семейство столбцов и вставку данных. Если у вас есть пример с двумя вставками узлов, это тоже здорово.

ответ

0

Используете ли вы оба IP как семя, устанавливаете его на один IP-адрес, который сначала загружается.

Что делает «nodetool --host [127.0.0.1 | 127.0.0.2] ring», - говорит. вы можете видеть оба ip в кастере.

+0

Да, я использую оба IP как семя. Я изменил уровень INFO на DEBUG, чтобы убедиться, что оба они обмениваются данными, но я могу видеть только один IP за раз. – Jone

+0

Да, я использую как IP как семя, так и если я устанавливаю один IP-адрес в качестве семени, тогда я получаю исключение при запуске второго сервера. – Jone

1

У меня была аналогичная проблема после попытки предоставить разные номера портов для родного транспорта. Он должен быть того же порта (по умолчанию 9042), иначе узлы не находят друг друга. IP-адрес должен отличаться для предотвращения конфликтов портов между узлами.

Используйте ./nodetool status, чтобы проверить, действительно ли вы создали кластер, а не просто два изолированных экземпляра.

Смежные вопросы