Следует ли перетасовать старый кластер после миграции vnodes?
Вам не нужно. Если вы перейдете от одного токена к узлу до 256 (по умолчанию), каждый узел разделит его диапазон на 256 смежных диапазонов одинакового размера. Это не влияет на то, где живут данные. Но это означает, что когда вы загружаете новый узел в новом DC, он будет оставаться сбалансированным на протяжении всего процесса.
Что такое лучший способ переключиться на NetworkTopologyStrategy и GossipingPropertyFileSnitch?
Сложность в том, что стратегия переключения репликации в целом небезопасна, поскольку данные необходимо будет перемещать по кластеру. NetworkToplogyStrategy (NTS) будет размещать данные на разных узлах, если вы укажете, что узлы находятся в разных стойках. По этой причине вы должны перейти в NTS перед добавлением новых узлов.
Вот способ сделать это, после того, как вы обновили старый кластер к vnodes (ваш шаг 1 выше):
1a. Перечислите все существующие узлы как находящиеся в DC0 в файле свойств. Перечислите новые узлы как находящиеся в DC1 и их правильные стойки.
1b. Измените стратегию репликации на NTS с параметрами DC0: 3 (или независимо от вашего текущего коэффициента репликации) и DC1: 0.
Затем, чтобы добавить новые узлы, выполните следующие действия: http://www.datastax.com/docs/1.2/operations/add_replace_nodes#adding-a-data-center-to-a-cluster. Не забудьте установить число токенов на 256, так как по умолчанию будет 1.
На шаге 5 вы должны установить коэффициент репликации для DC0 равным 0, т. Е. Изменить параметры репликации на DC0: 0, DC1: 3. Теперь эти узлы не используются, поэтому декомпозиция не будет передавать какие-либо данные, но вы все равно должны это делать, а не отключать их, чтобы они были удалены с кольца.
Обратите внимание, что риск состоит в том, что записи, выполненные с низким уровнем согласованности, до старых узлов могут потеряться. Чтобы избежать этого, вы можете написать в CL.LOCAL_QUORUM после перехода на новый DC. Существует еще небольшое окно, где записи могут потеряться (между шагами 3 и 4). Если это важно, вы можете запустить ремонт до вывода из эксплуатации старых узлов, чтобы гарантировать отсутствие потерь или запись на высоком уровне согласованности.
pro tip: попробуйте это в испытательной/непроизводственной среде. – Schildmeijer
Да, это то, что я делаю сейчас – relgames