Как программно определить с помощью Python, когда узел Cassandra ремонтируется или ремонт завершен

Введение + проблема:

У меня есть приложение Python, использующее кластер Cassandra 1.2.4. Раз в неделю мне нужно запускать плановый ремонт на нодах Cassandra (nodetool repair), и в это время я хочу снизить нагрузку на ремонтируемую ноду, но как только ремонт закончится я хочу начать нормально пользоваться нодой . Я использую библиотеку CQL из Python для доступа к кластеру.

Вопросы:

Есть ли простой способ узнать из программы Python, когда узел Cassandra ремонтируется? Если нет, есть ли способ узнать, когда ремонт будет выполнен, заранее зная, что ремонт уже начался?

Заранее спасибо!


person Sergio Ayestarán    schedule 01.07.2013    source источник


Ответы (1)


Прямо сейчас динамический снитч (включенный по умолчанию) должен иметь возможность косвенно обходить узел или узлы, которые имеют большую нагрузку: http://www.datastax.com/dev/blog/динамическое-стукачество-в-кассандре-прошлое-настоящее-и-будущее

Другие вещи, которые вы можете сделать, это посмотреть на nodetool netstats и compactionstats на всех узлах, участвующих в восстановлении, чтобы увидеть, происходит ли потоковая передача или уплотнение, связанное с восстановлением (сжатие типа проверки). Очевидно, что запуск nodetool или использование JMX-эквивалентов с Python сложны, но я просто пытаюсь дать вам некоторые идеи.

Также в 1.1.9/1.2.1 был тикет, который позволял следить за ходом ремонта через инициированный jmx вызов ремонта. Для получения дополнительной информации см.: https://issues.apache.org/jira/browse/CASSANDRA- 4767

Работа ведется с Cassandra 2.0+, чтобы сделать восстановление и потоковую передачу более устойчивыми и доступными для мониторинга. См. https://issues.apache.org/jira/browse/CASSANDRA-5286

person Jeremy Hanna    schedule 02.07.2013
comment
Спасибо, Джереми, даже несколько идей действительно полезны для меня, потому что нам не хватает некоторых функций, когда дело доходит до такого рода задач, по крайней мере, от Python. - person Sergio Ayestarán; 03.07.2013