Взагалі, добре розроблений кластер може жити протягом РОКІВ, не торкаючись його. У мене були кластери, які працювали протягом багатьох років. Однак ось декілька вказівок:
Моніторинг надзвичайно важливий:
1) Контролювати затримки. Використовуйте opscenter або ваші улюблені інструменти метрики для відстеження затримок. Зростання затримок може бути ознаками наступаючих проблем, включаючи паузи GC (частіше зустрічаються при завантаженні читання, ніж завантаження при записі), стійкі проблеми тощо.
2) Контроль стабільних підрахунків. Кількість SSTable збільшиться, якщо ви перевиконаєте ущільнення (кожен sstable пишеться рівно один раз - делетами обробляються комбінування старих sstables у нові sstables шляхом ущільнення).
3) Контролюйте зміни стану вузлів (вгору / вниз тощо). Якщо ви бачите, як вузли ляскають, досліджуйте, як це не нормально.
4) Слідкуйте за використанням свого диска - традиційно вам потрібно залишатись менше 50% (особливо якщо ви використовуєте ущільнення STCS).
Є кілька основних речей, які ви повинні і не повинні регулярно робити:
1) Не запускайте явно nodetool compact
. Ви згадуєте, що ви це зробили, це не фатально, але це створює дуже великі сстабілі, які менше шанси брати участь у ущільненні, рухаючись вперед. Вам не обов’язково продовжувати працювати, але іноді це може допомогти позбутися видалених / перезаписаних даних.
2) nodetool repair
зазвичай рекомендується кожні gc_grace_seconds
(за замовчуванням 10 днів). Є навантаження, де це менш важливо - найбільша причина, з якої Ви потребуєте ремонту, полягає в тому, щоб маркери видалення ( tombstones
) передавались до їх закінчення (вони існують gc_grace_seconds
, якщо вузол не працює, коли видалення сталося, ці дані можуть повернутися до життя без ремонту!). Якщо ви не видаєте делетів і запитуєте з достатнім рівнем узгодженості (читає і пише в QUORUM, наприклад), ви можете реально жити життям без ремонту.
3) Якщо ви збираєтесь ремонтувати, подумайте про інкрементальний ремонт та ремонтуйте невеликі діапазони одночасно.
4) Стратегії ущільнення мають значення - багато. STCS чудово підходить для запису, LCS чудово підходить для читання. DTCS має деякі химерності.
5) Моделі даних мають значення - подібно до того, як середовища RDBMS / SQL потрапляють у проблеми, коли невкладені запити потрапляють у великі таблиці, Кассандра може бути проблематичною з дуже великими рядками / розділами.
6) Знімки дешеві. Дуже дешевий. Майже миттєві, жорсткі посилання, вони майже не коштують місця на диску. Використовуйте знімок перед оновленням версій, особливо основних версій.
7) Будьте обережні з делетами. Як натякнуто у №2, видалення створює більше даних на диску, а не звільняє їх НАЙДОЛЬШЕ gc_grace_seconds
.
Коли все інше не вдається:
Я бачив статті, які говорять про те, що Cassandra in prod вимагає спеціальної голови для управління будь-яким розміром кластеру - я не знаю, що це обов'язково правда, але якщо ви стурбовані, ви можете взяти на роботу сторонніх консультантів (TheLastPickle, Pythian ) або мати контракт на підтримку (Datastax), щоб дати вам спокій.