2013-03-06 5 views
2

Возможно, я что-то неправильно понимаю, так как мне непонятно, как я должен подключиться к кластеру Кассандры. У меня есть кластер Cassandra 1.2.1 из 5 узлов, которым управляет Priam, на AWS. я хотел бы использовать Astyanax для подключения к этому кластеру, используя код, аналогичный коду ниже:С каким узлом Кассандры я должен подключиться?

conPool = new ConnectionPoolConfigurationImpl(getConecPoolName())    .setMaxConnsPerHost(CONNECTION_POOL_SIZE_PER_HOST).setSeeds(MY_IP_SEEDS) 
       .setMaxOperationsPerConnection(100) // 10000 

Что я должен использовать в качестве MY_IP_SEEDS? Должен ли я использовать IP-адреса всех моих узлов, разделенных запятой? Или я должен использовать IP всего 1 машины (семенной машины)? Если я использую ip только одной машины, я беспокоюсь о перегрузке этой машины слишком большим количеством запросов.

Я знаю, что Priam имеет «get_seeds» REST api (https://github.com/Netflix/Priam/wiki/REST-API), который для каждого узла возвращает список IP-адресов, и я также знаю, что на RAC есть одно семя. Тем не менее, я не уверен, что произойдет, если семенной узел опустится ... Мне нужно будет подключиться к другим при попытке установить новые соединения, верно?

ответ

2

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

Конечно, один из узлов должен быть доступен и находиться в кластере, чтобы запустить новый.

Таким образом, лучший способ - обновить список семян от Priam до запуска узла. Приам должен находиться за автоматически обновляемой DNS-записью.

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