2016-09-28 7 views
5

Мы планируем обновить наш кластер, который в настоящее время работает с 2.0.9 до 2.2.6. Согласно документации, и некоторые блоги люди обновляют cassandra inplace, т. Е. Удаляют узел из цикла обновления и снова добавляют его. Мы скептически относимся к этому подходу, поскольку все может пойти не так (это высокая база транзакций с большим количеством QPS).Обновление версии Cassandra от 2.0.9 до 2.2

Итак, мы планировали добавить новый кластер данных в кластер, который должен был обновить версию cassandra (2.2). Таким образом, установка должна иметь два центра обработки данных один старый (2.0.9) и другой новый (2.2.6)

Этот центр данных является просто резервным. Когда центр обработки данных станет стабильным, мы изменим клиентское соединение с этим центром данных, и если он будет хорошо работать, мы отправимся с этим центром данных и закроем старый центр данных, иначе мы сможем вернуться в старый центр обработки данных и отладить, что пошло не так.

Возможно, этот процесс достаточно эффективен или мы должны пойти на обновление?

Могут ли две версии cassandra (2.0 и 2.2) существовать через центр обработки данных.

Есть ли падение в этом подходе?

ответ

3

Могут ли две версии cassandra (2.0 и 2.2) существовать через центр обработки данных.

Нет, они не могут.

Возможно, этот процесс осуществимо или мы должны пойти на обновление?

Вам необходимо будет выполнить обновление на месте. Это связано с тем, что Cassandra не может передавать версии. Выполнение обновления на месте позволяет новой версии читать SSTables из старой версии.

Есть ли падение в этом подходе?

Как я уже говорил, вы не сможете передавать данные из существующих узлов в новый 2.2 DC. Так что самообучение, перестройка и ремонт - все это может быть и речи.

Другой вопрос, который у вас есть, заключается в том, что 2.2.6 не является «совместимым с обновлением» с 2.0.9. Из этого документа DataStax: Apache Cassandra versions requiring intermediate upgrades ...

Apache Cassandra ограничения 2.2.x

  • Обновление от Cassandra 2.1 версии позже или равно 2.1.9 непосредственно Кассандры 2.2.x.
  • Прямое обновление от Cassandra 2.0 и более ранних версий не поддерживается.

Первый должен обновить весь кластер до Кассандры 2.1. Как только обновление до версии 2.1 будет завершено, , то вы сможете обновить свои узлы до 2.2.6.

+0

Привет @Aaron, Спасибо. Очень странно, почему две версии cassandra не могут существовать в центре данных, но могут существовать в одном и том же центре данных (Cluster). Есть ли для этого конкретная причина? Если cassandra не может передавать данные через центр обработки данных с разными версиями. Могу ли я сначала иметь такую ​​же версию в новом центре данных, а затем после начальной загрузки, восстановления и восстановления я обновляю версию в новом центре данных и после обновления изменяет соединение с клиентом? Это возможно? ... Я знаю даже в этом подходе два центра обработки данных находятся в двух разных версиях. Будет ли это работать? Спасибо. – johri21

+1

@ johri21 Да. * Это * должно работать. – Aaron

1

Cassandra - это нераспространенное хранилище данных. Для Кассандры нет такой вещи, как «резервный» центр обработки данных. Если вы собираетесь добавить еще один DC с версией 2.2, вы выбираете настройку кластера с смешанной версией, как и при обновлении узлов по отдельности. Единственное преимущество, которое я вижу, это то, что проблемы с производительностью должны быть менее вероятными из-за добавленных узлов. Однако добавление другого DC сделает вашу настройку кластера более сложной и может ввести проблемы, о которых вы еще не знаете, но не будет иметь ничего общего с запуском разных версий. Как бы вы загрузили новый DC? Как будет снижаться эффективность старого эффекта DC? Операционный эффект будет намного больше при таком подходе по сравнению с обновлением отдельных узлов.

Если вы действительно не хотите выполнять закаточные обновления, я бы предложил установить второй DC в качестве отдельного кластера, импортировать резервную копию и выполнить некоторое (нагрузочное) тестирование. Также измените свой код для записи в оба кластера и в конечном итоге переключитесь на новый, если вы удовлетворены. Если вы не хотите тратить столько сил, просто выполняйте обновление.

+0

Hi Stefan, Первая прелюдия У меня есть кластер из 4 узлов с работающей версией версии 2.0.9 cassandra. Теперь я планирую настроить различные DC с версией 2.2 cassandra. Это должно быть загружено из старого DC (2.0.9). Я знаю, что это займет некоторое время (bootstapping). Преимущество в том, что чтение и запись из моего приложения будут обслуживаться из 2.0.9, который работает отлично, и все это, в то время как чтение и запись будут синхронизированы с новым DC (async). Затем в постном периоде (когда трафик низкий) я просто изменил точку контакта на мой новый DC (2.2). После того, как все будет хорошо, я закрою старый DC. – johri21