Добавление узлов с одним токеном в существующий кластер datastax cassandra и передача данных не работают

Добавление нового токена для каждого узла в существующий кластер datastax и передача данных не работают. Последующий процесс описан ниже. Пожалуйста, обновите меня, если процесс, которому я следовал, неправильный. Спасибо.

У нас есть 3 узла datastax с одним диапазоном токенов в нашем центре обработки данных AWS EC2, с поддержкой поиска и графика. Мы планируем добавить еще 3 узла в наш дата-центр. В настоящее время мы используем DseSimpleSnitch и простую сетевую топологию для нашего пространства ключей.Кроме того, наш текущий коэффициент репликации равен 2.

Узел 1: 10.10.1.36
Узел 2: 10.10.1.46
Узел 3: 10.10.1.56

 cat /etc/default/dse | grep -E 'GRAPH_ENABLED=|SOLR_ENABLED='
   GRAPH_ENABLED=1  
   SOLR_ENABLED=1  

Центр обработки данных: SearchGraph

Address     Rack          Status   State    Load      Owns Token               
10.10.1.46  rack1       Up     Normal  760.14 MiB  ? -9223372036854775808                  
10.10.1.36  rack1       Up     Normal  737.69 MiB  ? -3074457345618258603                   
10.10.1.56  rack1       Up     Normal  752.25 MiB  ? 3074457345618258602                   

Шаг (1) Чтобы сначала добавить 3 новых узла в наш центр обработки данных, мы изменили топологию нашего пространства ключей и перехватчик для поддержки сети.

1) Сменил снитч. кошка /etc/dse/cassandra/cassandra.yaml | grep endpoint_snitch: endpoint_snitch: GossipingPropertyFileSnitch

cat /etc/dse/cassandra/cassandra-rackdc.properties |grep -E 'dc=|rack='
  dc=SearchGraph
  rack=rack1

2) (a) Выключите все узлы, затем перезапустите их.

(b) Запустите последовательное восстановление и очистку nodetool на каждом узле.

3) Изменена топология пространства ключей.

ALTER KEYSPACE tech_app1 WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'SearchGraph' : 2};
ALTER KEYSPACE tech_app2 WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'SearchGraph' : 2};
ALTER KEYSPACE tech_chat WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'SearchGraph' : 2};

Ссылка: http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsChangeKSStrategy.html , http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsSwitchSnitch.html

Шаг (2) Для обновления диапазона токенов и настройки нового узла cassandra мы следуем описанному ниже процессу.

1) Пересчитать диапазон токенов

root@ip-10-10-1-36:~# token-generator

DC #1:

Node #1:  -9223372036854775808
Node #2:  -6148914691236517206
Node #3:  -3074457345618258604
Node #4:                    -2
Node #5:   3074457345618258600
Node #6:   6148914691236517202

2) Установлена ​​та же версия Datastax Enterprise на новых узлах.

3) Остановил службу узла и очистил данные.

4) (a) Назначенный диапазон токенов следующим образом для нового узла.

Node 4: 10.10.2.96     Range: -2 
Node 5: 10.10.2.97     Range: 3074457345618258600
Node 6: 10.10.2.86     Range: 6148914691236517202

4) (б) Настроил cassandra.yaml на каждой новой ноде:

Узел 4:

cluster_name: 'SearchGraph' 
num_tokens: 1
initial_token: -2  
parameters: 
- seeds: "10.10.1.46, 10.10.1.56" 
listen_address: 10.10.2.96 
rpc_address: 10.10.2.96 
endpoint_snitch: GossipingPropertyFileSnitch

Узел 5:

cluster_name: 'SearchGraph' 
num_tokens: 1
initial_token: 3074457345618258600  
parameters: 
- seeds: "10.10.1.46, 10.10.1.56" 
listen_address: 10.10.2.97 
rpc_address: 10.10.2.97
endpoint_snitch: GossipingPropertyFileSnitch

Узел 6:

cluster_name: 'SearchGraph' 
num_tokens: 1
initial_token: 6148914691236517202   
parameters: 
- seeds: "10.10.1.46, 10.10.1.56" 
listen_address: 10.10.2.86 
rpc_address: 10.10.2.86 
endpoint_snitch: GossipingPropertyFileSnitch

5) Поменял снитч.

cat /etc/dse/cassandra/cassandra.yaml | grep endpoint_snitch:
endpoint_snitch: GossipingPropertyFileSnitch

cat /etc/dse/cassandra/cassandra-rackdc.properties |grep -E 'dc=|rack='
dc=SearchGraph
rack=rack1

6) Запускайте DataStax Enterprise на каждом новом узле с двухминутными интервалами с отключенной последовательностью.диапазона движения:

JVM_OPTS="$JVM_OPTS -Dcassandra.consistent.rangemovement=false

7) После того, как новые узлы будут полностью загружены, используемый nodetool перемещается, чтобы назначить новый initial_token для существующих узлов в соответствии с пересчетом токена, выполненным на шаге 4 (a). Процесс выполняется на каждом узле по одному.

On  Node 1(10.10.1.36)  :  nodetool move -3074457345618258603
On  Node 2(10.10.1.46)  :  nodetool move -9223372036854775808
On  Node 3(10.10.1.56)  :  nodetool move  3074457345618258602

Центр обработки данных: SearchGraph

Address     Rack        Status State   Load            Owns                Token

10.10.1.46  rack1       Up     Normal  852.93 MiB ? -9223372036854775808
10.10.1.36  rack1       Up     Moving  900.12 MiB ? -3074457345618258603
10.10.2.96  rack1       UP     Normal  465.02 KiB ? -2
10.10.2.97  rack1       Up     Normal  109.16 MiB ? 3074457345618258600
10.10.1.56  rack1       Up     Moving  594.49 MiB ? 3074457345618258602
10.10.2.86  rack1       Up     Normal  663.94 MiB ? 6148914691236517202

Сообщение обновлено:

Но мы получаем следующую ошибку при присоединении узлов.

AbstractSolrSecondaryIndex.java:1884 - Cannot find core chat.chat_history
AbstractSolrSecondaryIndex.java:1884 - Cannot find core chat.history
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.business_units
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.feeds
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.feeds_2
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.knowledegmodule
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.userdetails
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.userdetails_2
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.vault_details
AbstractSolrSecondaryIndex.java:1884 - Cannot find core search.workgroup
AbstractSolrSecondaryIndex.java:1884 - Cannot find core cloud.feeds
AbstractSolrSecondaryIndex.java:1884 - Cannot find core cloud.knowledgemodule
AbstractSolrSecondaryIndex.java:1884 - Cannot find core cloud.organizations
AbstractSolrSecondaryIndex.java:1884 - Cannot find core cloud.userdetails
AbstractSolrSecondaryIndex.java:1884 - Cannot find core cloud.vaults
AbstractSolrSecondaryIndex.java:1884 - Cannot find core cloud.workgroup

Присоединение к узлу не удалось со следующей ошибкой:

ERROR [main] 2017-08-10 04:22:08,449  DseDaemon.java:488 - Unable to start DSE server.
com.datastax.bdp.plugin.PluginManager$PluginActivationException: Unable to activate plugin com.datastax.bdp.plugin.SolrContainerPlugin


Caused by: java.lang.IllegalStateException: Cannot find secondary index for core ekamsearch.userdetails_2, did you create it? 
If yes, please consider increasing the value of the dse.yaml option load_max_time_per_core, current value in minutes is: 10

ERROR [main] 2017-08-10 04:22:08,450  CassandraDaemon.java:705 - Exception encountered during startup
java.lang.RuntimeException: com.datastax.bdp.plugin.PluginManager$PluginActivationException: Unable to activate plugin

Кто-нибудь сталкивался с этими ошибками или предупреждениями раньше?


comment
Любая конкретная причина, когда вы назначаете токены вручную, в то время как вы можете установить numtoken = 1 в Cassandra.yaml и позволить Cassandra сделать это за вас.   -  person dilsingi    schedule 30.07.2017
comment
Я уже настроил num_tokens: 1, а также диапазон initial_token в соответствии с пересчетом, упомянутым в шаге 2 (1) выше. Мы хотим назначить диапазон initial_token вручную, а не Cassandra для его обработки, потому что я думаю, что текущий кластер Solr не будет работать, если мы изменим его и перебалансируем с помощью Opscenter, пожалуйста, уточните, если я ошибаюсь. Верны ли вышеуказанные шаги, которые мы выполнили? для добавления узлов.   -  person Sreeraju V    schedule 30.07.2017
comment
Я считаю утомительным вручную управлять токенами при масштабировании узлов cassandra. Сам num_tokens:1 автоматически поможет управлять этим на уровне Cassandra, и по мере того, как данные будут перебалансированы на новый узел, Solr проиндексирует их. Когда данные перемещаются на новый узел, соответствующие записи удаляются из старого узла, когда вы запускаете очистку nodetool. По мере того, как записи в старых узлах умирают, соответствующие записи индекса в Solr исчезают. В ядре Solr вы сможете увидеть количество проиндексированных записей и сможете проверить их после добавления узлов. Я бы избегал ручного распределения токенов.   -  person dilsingi    schedule 30.07.2017
comment
Таким образом, мы можем запустить 3 новых узла с num_tokens: 1, а как насчет существующих 3 узлов в кластере, у которого уже установлен initial_token:. Спасибо.   -  person Sreeraju V    schedule 31.07.2017
comment
Самый простой способ — вывести их из эксплуатации по одному, поскольку он перемещает данные на новые объединенные узлы. Вы можете добавить их обратно без начального токена с replace_address   -  person dilsingi    schedule 31.07.2017
comment
Спасибо, позвольте мне попробовать выполнить шаги, которые вы упомянули выше. Также есть ли какая-либо другая топология Keyspaces, которую нам пришлось изменить на NetworkTopologyStrategy, кроме tech_app1, tech_app2 и tech_chat keyspace, которые мы создали для нашего приложения.   -  person Sreeraju V    schedule 31.07.2017
comment
Также при переходе на vnode мне нужно изменить num_tokens: 1 слишком num_tokens: 256 . Спасибо   -  person Sreeraju V    schedule 31.07.2017
comment
Num_tokens — это способ настройки vnodes, поэтому установите для него значение 1. Также в стратегии топологии используйте system_auth, а также топологию сети.   -  person dilsingi    schedule 31.07.2017
comment
@dilsingi Я получаю следующие ошибки при переносе данных. java.lang.IllegalStateException: не удается найти вторичный индекс для основного search.userdetails_2, вы его создали? AbstractSolrSecondaryIndex.java:1884 — не удается найти ядро ​​cloud.userdetails. AbstractSolrSecondaryIndex.java:1884 — невозможно найти ядро ​​cloud.vaults.   -  person Sreeraju V    schedule 12.08.2017
comment
Перезагрузите ядро ​​solr без переиндексации. по умолчанию я думаю, что он начинает переиндексацию, поэтому будьте осторожны с командой   -  person dilsingi    schedule 12.08.2017
comment
@dilsingi У меня есть данные Solr в существующем кластере, но пока они переносятся на новые узлы, я получаю сообщение об ошибке solr not found. Решит ли перезагрузка ядра Solr проблему в новых узлах во время присоединения, потому что у нас есть существующие данные в старых узлах. Пожалуйста, проверьте сообщение выше, я обновил вопрос.   -  person Sreeraju V    schedule 12.08.2017
comment
Другим выходом обычно является загрузка только как узел данных (не solr), и как только данные будут полностью переданы во время загрузки, они перейдут в нормальное состояние. Как только это произойдет, перезагрузите этот узел как узел поиска и перезагрузите ядро. При перезагрузке ядра вы также можете сказать «распределено = ложь», что позволит избежать влияния на любые другие узлы solr и переиндексировать только этот узел.   -  person dilsingi    schedule 12.08.2017
comment
@dilsingi, поэтому мне нужно выполнить следующий шаг в новом узле 1) включить только график в файле конфигурации dse.yaml для новых узлов 2) После перехода в нормальное состояние также включите solr в файле конфигурации dse.yaml 3) Перезагрузите новые узлы после solr включено 4) Перезагрузить ядро ​​в новых узлах один за другим с распределённым=false. Также текущим именем DC в старом узле является SearchGraph, мне нужно изменить его в новых узлах, начиная с не-solr, как вы упомянули   -  person Sreeraju V    schedule 14.08.2017
comment
Оставьте центр обработки данных таким же, как ваш старый кластер.   -  person dilsingi    schedule 14.08.2017
comment
Спасибо @dilsingi Проблема решена.   -  person Sreeraju V    schedule 24.08.2017


Ответы (1)


Проблема с назначением токена ::

1) I had wrongly assigned token range in Step 4) (a). Assign token which 
   bisect or trisect the value which are generated using  
   "token-generator"
         Node 4: 10.10.2.96     Range: -6148914691236517206 
         Node 5: 10.10.2.97     Range: -2
         Node 6: 10.10.2.86     Range: 6148914691236517202

Note : We don't need to change the token range of existing nodes in data   
       center.No need to follow procedure in Step 7 which i have mentioned 
       above.

Решена проблема Solr: не удается найти кор ::

Increased load_max_time_per_core value in  dse.yaml configuration file, 
still i was receving the error.Finalys solved the issue 
by following method

     1) Started the new nodes as non-solr and wait for all cassandra data  
        to migrate to joining nodes.
     2) Add the parameter auto_bootstrap: False directive to the 
        cassandra.yaml file
     3) Re-start the same nodes after enabling solr. Changed parameter 
        SOLR_ENABLED=1 in /etc/default/dse
     3) Re-index in all new joined nodes. I had to reloaded all core 
        required with the reindex=true and distributed=false parameters in 
        new  joined nodes. 
        Ref : http://docs.datastax.com/en/archived/datastax_enterprise/4.0/datastax_enterprise/srch/srchReldCore.html
person Sreeraju V    schedule 24.08.2017