Обновление - Краткая версия:
PropertyFileSnitch cassandra-topology.properties
для первых 3 узлов (стойки 1-3) указывает, что только эти узлы находятся в DC1, а остальные - в DC2. указав значение по умолчанию default=DC2:r1
. Когда кластер был увеличен путем добавления узлов 4 и 5, PropertyFileSnitch для этих узлов был настроен на добавление их в DC1, а также в стойки 4 и 5, но снитч из первых 3 узлов остался неизменным и как в результате кластер находится в этом несогласованном состоянии.
Мой вопрос в том, можно ли перебалансировать (исправить) этот кластер. Было бы достаточно, если бы я выполнил полный перезапуск кластера после исправления cassandra-topology.properties
?
Пожалуйста, посоветуйте, как я могу безопасно перебалансировать кластер.
Более длинная версия:
Я новичок в Cassandra, и я начал работать над уже созданным кластером.
У меня есть 5 узлов в одном центре обработки данных на разных стойках под управлением Cassandra версии 3.0.5 с vnodes num_tokens: 256
и пространством ключей с replication = {'class': 'NetworkTopologyStrategy', 'DC1': '3'} AND durable_writes = true
.
Раньше было всего 3 узла, и кластер был увеличен за счет дополнительных 2 узлов. У меня есть сценарий автоматического восстановления, который запускает nodetool repair
с параметрами parallelism: parallel, primary range: false, incremental: true, job threads: 1
.
После того, как был вставлен большой объем данных, начали появляться проблемы. При запуске сценария восстановления на узле 4 или 5 узел 2 перегружается: использование ЦП остается на уровне 100%, очередь MutationStage растет, а паузы сборщика мусора занимают не менее 1 секунды, пока процесс Cassandra окончательно не завершится. Результат ремонта обычно failed with error Stream failed (progress: 0%)
.
При запуске команды nodetool status
на узлах 1, 2 или 3 я получаю следующий результат:
Datacenter: DC2 Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.0.13 10.68 GB 256 0.0% 75e17b8a r1 UN 10.0.0.14 9.43 GB 256 0.0% 21678ddb r1 Datacenter: DC1 Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.0.10 16.14 GB 256 100.0% cf9d327f Rack1 UN 10.0.0.11 22.83 GB 256 100.0% e725441e Rack2 UN 10.0.0.12 19.66 GB 256 100.0% 95b5c8e3 Rack3
Но при запуске команды nodetool status
на узлах 4 или 5 я получаю следующий результат:
Datacenter: DC1 Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.0.13 10.68 GB 256 58.9% 75e17b8a Rack4 UN 10.0.0.14 9.43 GB 256 61.1% 21678ddb Rack5 UN 10.0.0.10 16.14 GB 256 60.3% cf9d327f Rack1 UN 10.0.0.11 22.83 GB 256 61.4% e725441e Rack2 UN 10.0.0.12 19.66 GB 256 58.3% 95b5c8e3 Rack3
После дальнейшего исследования выяснилось, что PropertyFileSnitch cassandra-topology.properties
не обновлялся на узлах 1, 2 и 3 (которые также являются начальными значениями для этого кластера) после масштабирования кластера.
Спасибо!