Apache Cassandra. Документация DataStax — Operations. Adding or removing nodes, data centers, or clusters. Adding nodes to an existing cluster

Cassandra_logoПеревод статьи «Operations. Adding or removing nodes, data centers, or clusters. Adding nodes to an existing cluster» из официальной документации DataStax.

Добавление узла к существующему кластеру

Виртуальные узлы (vnodes) значительно упрощают процесс добавления узлов к существующему кластеру.

— Вычисление маркеров и назначение их диапазонов к каждому из узлов больше не требуется;
— Перерасчет кластера больше не нужен, поскольку узел, присоединяющийся к кластеру, будет отвечать за некоторую часть данных.

Для более детального рассмотрения как это работает, см. Virtual nodes 1.

Если вы используете стойки, вы можете смело запускать процесс инициализации двух узлов, находящихся в одной стойке, в одно и то же время.

Примечание: если вы не используете виртуальные узлы, см. Adding or replacing single-token nodes 2.

Порядок действий

1) Установите Cassandra на новые узлы, но не запускайте службу Cassandra. Если вы используете ОС Debian, Cassandra запустится автоматически и вам необходимо будет остановить 3 службу и очистить 4 данные тестового кластера;

2) Установите следующие параметры в конфигурационном файле cassandra.yaml в зависимости от типа используемого осведомителя (snitch) — cassandra-topology.properties или cassandra-rackdc.properties:
auto_bootstrap 5 — если эта опция установлена в «false», вы должны выставить её в «true». Эта опция не включена в cassandra.yaml изначально и по умолчанию имеет значение «true».
cluster_name 6 — имя кластера, к которому будет подключен новый узел.
listen_address/broadcast_address 7 — обычно может быть пустым. В противном случае, используйте ip-адрес или имя хоста, которое будут использовать другие узлы кластера Cassandra, чтобы подключиться к текущему новому узлу.
endpoint_snitch 8 — тип осведомителя, который Cassandra будет использовать, чтобы определять узлы и маршрутизировать запросы.
num_tokens 9 — количество vnodes для присоединения к узлу. Если возможности аппаратного обеспечения различаются между узлами кластера, вы можете назначить им разные величины vnodes.
seed_provider 10 — поле -seeds в этих настройках отображает список узлов, к какому-либо должен будет подключиться каждый новый узел для получения информации о кластере и инициализации процесса gossip.
Примечание: на узлах источниках не может выполняться процесс начальной загрузки (bootstrap 11). Убедитесь, что новый подключаемый к кластеру узел не числится в списке -seeds. Не делайте все узлы узлами-источниками. Прочтите, пожалуйста, процесс межузлового взаимодействия (Internode communications (gossip) 12).
— Измените любые другие нестандартные настройки для вашего кластера в конфигурационных файлах cassandra.yaml и cassandra-topology.properties или cassandra-rackdc.properties. Используйте команду diff, чтобы найти и слить (по исходному файлу) любые различия между существующими и новыми узлами.

3) Запустите службу Cassandra на каждом новом узле. Дайте пару минут для инициализации узла. Вы можете отслеживать процесс запуска и передачи данных, используя nodetool netstats 13.

4) После того, как все узлы запущены, запустите команду nodetool cleanup 14 на каждой существовавщем до этого узле. чтобы удалить ключи, которые больше этим узлам не принадлежат. Дождитесь процесса очистки сначала на одном узле и только потом запускайте команду на следующем.

Очистка может быть безопасно отложена на часы с низкой загрузкой.

Оригинал статьи — Adding nodes to an existing cluster

comments powered by HyperComments