2015-10-20 3 views
0

У меня есть 2 постоянного тока и 3 узла:
DC1: cas01.dc01.net (172.16.3.15) и cas02.dc01.net (172.16.3.16)
DC2: cas01.dc02. net (172.16.9.3), например.Python недопустимый список узлов кластера Cassandra

Выполнить следующий сценарий:

cluster = Cluster(['cas01.dc01.net', 'cas02.dc01.net', 'cas01.dc02.net'],auth_provider=auth,protocol_version=3, load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='DC1')) 
session = cluster.connect('test') 

print '_dc_live_hosts:' 
for k, v in cluster.load_balancing_policy._dc_live_hosts.items(): 
    print "DC name: %s; Node address: %s" % (k, [node.address for node in v]) 

print 'Cluster metadata:' 
for host in cluster.metadata.all_hosts(): 
    print 'Datacenter: %s; Host: %s; Rack: %s' % (host.datacenter, host.address, host.rack) 

и получить ответ:

_dc_live_hosts: 
DC name: DC1; Node address: ['cas01.dc01.net', 'cas01.dc02.net', 'cas02.dc01.net', '172.16.3.15'] 
DC name: DC2; Node address: ['172.16.9.3'] 
Cluster metadata: 
Datacenter: None; Host: cas01.dc01.net; Rack: None 
Datacenter: None; Host: cas01.dc02.net; Rack: None 
Datacenter: DC1; Host: 172.16.3.15; Rack: Rack1 
Datacenter: DC2; Host: 172.16.9.3; Rack: Rack1 
Datacenter: DC1; Host: cas02.dc01.net; Rack: Rack1 

Почему повторяющиеся узлы?
Если указать список IP-адрес:

cluster = Cluster(['172.16.3.15', '172.16.3.16', '172.16.9.3'],auth_provider=auth,protocol_version=3, load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='DC1')) 
... 

список узлов правильно:

_dc_live_hosts: 
DC name: DС1; Node address: ['172.16.3.16', '172.16.3.15'] 
DC name: DС2; Node address: ['172.16.9.3'] 
Cluster metadata: 
Datacenter: DС1; Host: 172.16.3.16; Rack: Rack1 
Datacenter: DС1; Host: 172.16.3.15; Rack: Rack1 
Datacenter: DС2; Host: 172.16.9.3; Rack: Rack1 

Пожалуйста, помогите.

+0

Каковы ваши семена? Какой снитч вы используете? Вы можете найти ответы в файле cassandra.yaml. Если это свойство PropertyFileSnitch, можете ли вы включить содержимое своих cassandra-topology.properties? – DineMartine

+0

Узел cas01.dc01.net: - Семена: "cas01.dc01.net, cas02.dc01.net" Узел cas02.dc01.net: - Семена: "cas01.dc01.net, cas01.dc02.net" Узел cas01. dc02.net: - seed: "cas01.dc02.net, cas01.dc01.net" endpoint_snitch: PropertyFileSnitch топология: cas01.dc01.net = DC1: Rack1 cas02.dc01.net = DC1: Rack1 cas01.dc02. net = DC2: Rack1 –

ответ

0

Я не уверен, что это только проблемы, но:

  • все узлы должны иметь одни и те же семена
  • список
  • семян должны включать, по меньшей мере, один узел каждого центра обработки данных

Попробуйте это :

- seeds : "172.16.3.16, 172.16.9.3" 
+0

Его драйвер python ошибки https://datastax-oss.atlassian.net/browse/PYTHON-10 –

0

Краткое описание того, как работает водитель, который разъяснит ваш q uestion:

  1. список узлов, которые передаются в к Cluster конструктору начальные контактные узлы

    Водитель выбирает один из них, чтобы создать соединение управления. Хорошей практикой является передача более одного узла, поэтому драйвер может пытаться использовать разные соединения, если один из узлов недоступен немедленно.

  2. с использованием управляющего соединения, установленного на шаге 1, драйвер извлекает информацию о топологии кластера из таблиц system. Он использует эти данные для заполнения объектов метаданных кластера.

    Информация в таблицах system (в частности peers таблица) отражает конфигурацию каждого из узлов (на основе broadcast_address, rpc_address и т.д.)

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