Автомасштабирование кластера Cassandra на AWS

Я пытался автоматически масштабировать трехузловой кластер Cassandra с коэффициентом репликации 3 и уровнем согласованности 1 на инстансах Amazon EC2. Несмотря на балансировщик нагрузки, один из узлов с автоматическим масштабированием не использует ЦП, а другой узел с автоматическим масштабированием имеет значительный трафик.

Я экспериментировал более 4 раз, чтобы автоматически масштабировать 3 узла с помощью RF3CL1, но загрузка ЦП на одном из узлов автомасштабирования по-прежнему равна нулю. Общая загрузка ЦП падает, но один из узлов с автоматическим масштабированием постоянно простаивает с точки автоматического масштабирования.

Обратите внимание, что два узла, которые запускаются в момент автомасштабирования, запускаются одной и той же конфигурацией запуска. Два узла имеют одинаковую конфигурацию во всех аспектах. Существует аварийный сигнал для срабатывания узлов, и политика масштабирования устанавливается в соответствии с этим аварийным сигналом.

Может ли быть скрипт bash, который можно запустить на пользовательских данных?

Например, изменение пространств ключей?

Может ли кто-нибудь сообщить мне, что может быть причиной такого поведения?


person siddhartha s    schedule 25.08.2017    source источник


Ответы (2)


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

https://d0.awsstatic.com/whitepapers/Cassandra_on_AWS.pdf

person myron-semack    schedule 25.08.2017
comment
Проблема по-прежнему актуальна для конфигураций RF3 и CL QUORUM. Моя конфигурация yaml: seed — это начальный адрес, адрес прослушивания и адрес rpc — это IP-адрес соответствующего узла. Есть ли проблема с моей конфигурацией yaml? Кроме того, три узла, для которых выполняется автоматическое масштабирование, находятся в одной зоне доступности. - person siddhartha s; 26.08.2017

да, вам не нужен ELB для Кассандры.

Итак, вы создали единственный узел Cassandra и создали некоторое пространство ключей. Затем вы масштабировали Cassandra до трех узлов. Вы обнаружили, что один новый узел простаивает при доступе к существующему пространству ключей. Верно ли это понимание? Вы изменили коэффициент репликации существующего пространства ключей на 3? Если нет, данные существующего пространства ключей по-прежнему будут иметь 1 реплику.

При добавлении новых узлов Cassandra автоматически балансирует некоторые токены для новых узлов. Вероятно, поэтому вы видите нагрузку на один из новых узлов, который получает токены с данными пространства ключей.

person CloudStax    schedule 30.08.2017
comment
Да, ваше понимание правильное. Моя политика масштабирования заключается в добавлении 2 экземпляров при нарушении сигнализации. Технически я позволяю AWS добавлять два экземпляра Cassandra одновременно. Я думаю, что два экземпляра Cassandra не могут одновременно присоединиться к существующему кластеру, если в конфигурации yaml не указано иное. Я не могу найти параметр автоматической загрузки в конфигурации yaml. - person siddhartha s; 31.08.2017
comment
Было бы хорошо, если бы два экземпляра одновременно присоединялись к существующему кластеру. Cassandra автоматически загрузит новые узлы. Никакой вариант не требуется. - person CloudStax; 31.08.2017