Узел Кассандры застрял в состоянии соединения - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь добавить новый узел в существующий кластер Cassandra 3.11.1.0 с опцией auto_bootstrap: true.Новый узел Завершил потоковую передачу данных с других узлов, создание вторичного индекса и сжатые процедуры для главной таблицы, но после этого он, похоже, застрял в состоянии JOINING .Нет ошибок / предупреждений в узлах system.log - только INFO сообщений.

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

# nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns    Host ID                               Rack
UN  XX.XX.XX.109  33.37 GiB  256          ?       xxxx-9f1c79171069  rack1
UN  XX.XX.XX.47   35.41 GiB  256          ?       xxxx-42531b89d462  rack1
UJ  XX.XX.XX.32   15.18 GiB  256          ?       xxxx-f5838fa433e4  rack1
UN  XX.XX.XX.98   20.65 GiB  256          ?       xxxx-add6ed64bcc2  rack1
UN  XX.XX.XX.21   33.02 GiB  256          ?       xxxx-660149bc0070  rack1
UN  XX.XX.XX.197  25.98 GiB  256          ?       xxxx-703bd5a1f2d4  rack1
UN  XX.XX.XX.151  21.9 GiB   256          ?       xxxx-867cb3b8bfca  rack1

nodetool compactionstats показывает, что есть ожидающие сжатия, но я не знаю, есть ли какая-то активность или он просто застрял:

# nodetool compactionstats
pending tasks: 4
- keyspace_name.table_name: 4

nodetool netstats показывает, что счетчики завершенных запросов для сообщений Small / Gossip увеличиваются:

# nodetool netstats
Mode: JOINING
Bootstrap xxxx-81b554ae3baf
    /XX.XX.XX.109
    /XX.XX.XX.47
    /XX.XX.XX.98
    /XX.XX.XX.151
    /XX.XX.XX.21
Read Repair Statistics:
Attempted: 0
Mismatch (Blocking): 0
Mismatch (Background): 0
Pool Name                    Active   Pending      Completed   Dropped
Large messages                  n/a         0              0         0
Small messages                  n/a         0         571777         0
Gossip messages                 n/a         0         199190         0

nodetool tpstats показывает, что счетчики завершенных запросов для пулов CompactionExecutor, MigrationStage, GossipStageувеличиваются:

# nodetool tpstats
Pool Name                         Active   Pending      Completed   Blocked  All time blocked
ReadStage                              0         0              0         0                 0
MiscStage                              0         0              0         0                 0
CompactionExecutor                     0         0            251         0                 0
MutationStage                          0         0         571599         0                 0
MemtableReclaimMemory                  0         0             98         0                 0
PendingRangeCalculator                 0         0              7         0                 0
GossipStage                            0         0         185695         0                 0
SecondaryIndexManagement               0         0              2         0                 0
HintsDispatcher                        0         0              0         0                 0
RequestResponseStage                   0         0              6         0                 0
ReadRepairStage                        0         0              0         0                 0
CounterMutationStage                   0         0              0         0                 0
MigrationStage                         0         0             14         0                 0
MemtablePostFlush                      0         0            148         0                 0
PerDiskMemtableFlushWriter_0           0         0             98         0                 0
ValidationExecutor                     0         0              0         0                 0
Sampler                                0         0              0         0                 0
MemtableFlushWriter                    0         0             98         0                 0
InternalResponseStage                  0         0             11         0                 0
ViewMutationStage                      0         0              0         0                 0
AntiEntropyStage                       0         0              0         0                 0
CacheCleanupExecutor                   0         0              0         0                 0

Message type           Dropped
READ                         0
RANGE_SLICE                  0
_TRACE                       0
HINT                         0
MUTATION                   124
COUNTER_MUTATION             0
BATCH_STORE                  0
BATCH_REMOVE                 0
REQUEST_RESPONSE             0
PAGED_RANGE                  0
READ_REPAIR                  0

Похоже, что узел все еще получает некоторые данные от других узлов и применяет их, но я не знаю, как проверить прогресс, и должен ли я ждать или отменить загрузку.Я уже пытался перезапустить этот узел и получил следующую ситуацию: узел долгое время находился в состоянии UJ (16 часов) с некоторым ожидающим сжатием и 99,9% простоя процессора.Также я добавил узлы в кластер около месяца назад, и никаких проблем не было - узлы присоединились в течение 2-3 часов и стали в состоянии UN .

Также nodetool cleanup работает на одном из существующих узлов на этом узле. Я вижу следующие предупреждения в system.log:

**WARN  [STREAM-IN-/XX.XX.XX.32:46814] NoSpamLogger.java:94 log Spinning trying to capture readers [BigTableReader(path='/var/lib/cassandra/data/keyspace_name/table_name-6750375affa011e7bdc709b3eb0d8941/mc-1117-big-Data.db'), BigTableReader(path='/var/lib/cassandra/data/keyspace_name/table_name-6750375affa011e7bdc709b3eb0d8941/mc-1070-big-Data.db'), ...]**

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

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Просто Auto_bootstrap: false на cassandra.yaml нового узла.и затем перезапустите узел.он присоединится как ООН.Через некоторое время выполните полный ремонт, который обеспечит стабильность.

0 голосов
/ 29 января 2019

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

Когда это происходит, у вас есть несколько вариантов:

  1. Вы всегда можете остановить узел, стереть его и попробовать снова присоединиться к нему.
  2. Если вы уверены, что все (или большинство) данных есть, вы можете остановить узел,и добавьте строку в cassandra.yaml auto_bootstrap: false.Узел запустится, присоединится к кластеру и будет обслуживать его данные.Для этой опции, как правило, рекомендуется выполнить восстановление после того, как узел работает.
...