Как добавить узлы Cassandra

При добавлении узлов Cassandra в кластер необходимо учитывать два ключевых момента:

  • Существующие позиции узлов в кольце Cassandra не должны меняться, чтобы минимизировать потоковую передачу и поддерживать сбалансированное кольцо.
  • Количество узлов во всех центрах обработки данных должно быть одинаковым.

Чтобы достичь первой цели, при добавлении новых узлов необходимо удваивать их количество в кластере Cassandra.

Например, если вы начнете со стандартной установки кластера из 12 узлов, распределенной по двум центрам обработки данных, у вас будет в общей сложности шесть узлов Cassandra – по три в каждом центре обработки данных. Чтобы расширить этот кластер, добавьте по три узла в каждый центр обработки данных, увеличив общее количество узлов до 12 (по шесть узлов в каждом центре обработки данных). Если требуется дальнейшее расширение, добавьте по шесть дополнительных узлов в каждый центр обработки данных. В результате общее количество узлов составит 24 (по 12 в каждом центре обработки данных).

В этом документе приведены инструкции по добавлению трех новых узлов Cassandra в существующую установку Edge для частного облака. Чтобы добавить другие узлы, выполните те же действия. При расширении кластера всегда удваивайте количество узлов.

Список системных требований для узла Cassandra приведен в разделе Требования к установке.

Существующая конфигурация Edge

Во всех поддерживаемых топологиях Edge для производственной системы указано, что нужно использовать три узла Cassandra. Три узла указаны в свойстве CASS_HOSTS в файле конфигурации, как показано ниже:

IP1=10.10.0.1
IP2=10.10.0.2
IP3=10.10.0.3
HOSTIP=$(hostname -i)
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
MSIP=$IP1 
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=1
APIGEE_LDAPPW=secret
MP_POD=gateway
REGION=dc-1
ZK_HOSTS="$IP1 $IP2 $IP3"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1" 
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com
SMTPPASSWORD=smtppwd

Обратите внимание, что в свойстве REGION название региона указано как "dc-1". Эта информация понадобится вам при добавлении новых узлов Cassandra.

Изменение файла конфигурации для добавления трех новых узлов Cassandra

В этом примере три новых узла Cassandra имеют следующие IP-адреса:

  • 10.10.0.14
  • 10.10.0.15
  • 10.10.0.16

Сначала нужно обновить файл конфигурации Edge, чтобы добавить новые узлы:

IP1=10.10.0.1
IP2=10.10.0.2
IP3=10.10.0.3
# Add the new node IP addresses.
IP14=10.10.0.14
IP15=10.10.0.15
IP16=10.10.0.16
HOSTIP=$(hostname -i)
ADMIN_EMAIL=opdk@google.com
...
# Update CASS_HOSTS to add each new node after an existing nodes. 
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP14:1,1 $IP2:1,1 $IP15:1,1 $IP3:1,1 $IP16:1,1" 

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

Как настроить Edge

После редактирования файла конфигурации необходимо:

  • Как перенастроить существующие узлы Cassandra
  • Установите Cassandra на новые узлы
  • Как перенастроить сервер управления

Перенастройте существующие узлы Cassandra.

На существующих узлах Cassandra:

  1. Повторно запустите setup.sh с профилем "-p c" и новым файлом конфигурации:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile

Установите Cassandra на новые узлы

Чтобы установить Cassandra на новые узлы, выполните описанные ниже действия.

На каждом новом узле Cassandra:

  1. Установите Cassandra на трех узлах:
    1. Установите apigee-setup на первом узле, как описано в разделе Установка утилиты apigee-setup Edge.
    2. Установите Cassandra на первом узле, используя обновленный файл конфигурации:
      /opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
    3. Повторите эти два шага для остальных новых узлов Cassandra.
  2. Пересоздайте три новых узла Cassandra, указав в качестве названия региона центр обработки данных, в который вы добавляете узел (dc-1, dc-2 и т. д.). В этом примере это dc-1:
    1. На первом узле выполните следующую команду:
      /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h nodeIP rebuild dc-1

      где nodeIP – IP-адрес узла Cassandra.

      Имя пользователя и пароль нужно передавать, только если вы включили аутентификацию JMX для Cassandra.

    2. Повторите этот шаг на остальных новых узлах Cassandra.

Как перенастроить сервер управления

На узле Management-Server

  1. Повторно запустите setup.sh, чтобы обновить сервер управления для добавленных узлов Cassandra:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f updatedConfigFile

Перезапустите все маршрутизаторы и процессоры сообщений

  1. На всех маршрутизаторах:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  2. На всех процессорах сообщений:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Свободное место на диске существующих узлов Cassandra

После добавления нового узла можно использовать команду nodetool cleanup на существующих узлах, чтобы освободить место на диске. Эта команда удаляет токены конфигурации, которые больше не принадлежат существующему узлу Cassandra.

Чтобы освободить место на диске на существующих узлах Cassandra после добавления нового узла, выполните следующую команду:

/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

Имя пользователя и пароль нужно передавать, только если вы включили аутентификацию JMX для Cassandra.

Проверка перестроения

Чтобы убедиться, что перестроение прошло успешно, используйте следующие команды:

nodetool [-u username -pw password] -h nodeIP netstats

Эта команда указывает, запущен ли нативный транспорт (или двоичный протокол), который позволяет Cassandra принимать новые клиентские запросы.

nodetool [-u username -pw password] -h nodeIP statusbinary

Эта команда указывает, запущен ли встроенный транспорт (или двоичный протокол).

nodetool [-u username -pw password] -h nodeIP describecluster

Эта команда показывает, используют ли новые узлы ту же версию схемы, что и старые.

Подробнее об использовании nodetool рассказывается в документации по использованию nodetool.