При добавлении узлов Cassandra в кластер важно учитывать следующие два ключевых момента:
- Существующие позиции узлов в кольце Cassandra не должны меняться, чтобы минимизировать потоковую передачу и сохранить сбалансированное кольцо.
- Количество узлов во всех центрах обработки данных должно оставаться постоянным.
Для достижения первой цели крайне важно удваивать количество узлов в кластере Cassandra каждый раз, когда вы добавляете новые узлы.
Например, если вы начнете со стандартной топологии установки кластера из 12 узлов , распределенной по двум центрам обработки данных, всего у вас будет шесть узлов Cassandra — по три в каждом центре обработки данных. Чтобы расширить этот кластер, вам следует добавить по три узла в каждый центр обработки данных, увеличив общее количество узлов до 12 (шесть узлов в каждом центре обработки данных). Если требуется дальнейшее расширение, вам следует добавить шесть дополнительных узлов в каждый центр обработки данных, в результате чего общее количество узлов составит 24 (12 узлов в каждом центре обработки данных).
В этом документе представлены инструкции по добавлению трех новых узлов Cassandra к существующей установке Edge for Private Cloud. Те же шаги можно выполнить для добавления дополнительных узлов. Всегда следите за тем, чтобы при расширении кластера вы удваивали количество узлов.
Список системных требований для узла 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:
- Перезапустите setup.sh с профилем «-pc» и новым файлом конфигурации:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
Установите Cassandra на новые узлы.
Используйте описанную ниже процедуру, чтобы установить Cassandra на новые узлы.
На каждом новом узле Cassandra:
- Установите Cassandra на три узла:
- Установите
apigee-setup
на первый узел, как описано в разделе Установка утилиты Edge apigee-setup . - Установите Cassandra на первый узел, используя обновленный файл конфигурации:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
- Повторите эти два шага для остальных новых узлов Cassandra.
- Установите
- Перестройте три новых узла Cassandra, указав в качестве имени региона центр обработки данных, в который вы добавляете узел (
dc-1
,dc-2
и т. д.). В этом примере этоdc-1
:- На первом узле запустите:
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h nodeIP rebuild dc-1
Где nodeIP — IP-адрес узла Cassandra.
Вам нужно будет передать свое имя пользователя и пароль только в том случае, если вы включили аутентификацию JMX для Cassandra .
- Повторите этот шаг на остальных новых узлах Cassandra.
- На первом узле запустите:
Перенастройте сервер управления
На узле Management-Server
- Перезапустите файл setup.sh, чтобы обновить сервер управления для вновь добавленных узлов Cassandra:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f updatedConfigFile
Перезапустите все маршрутизаторы и процессоры сообщений.
- На всех маршрутизаторах:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- На всех процессорах сообщений:
/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
Эта команда должна указывать MODE: Normal
когда узел запущен и индексы построены.
nodetool [-u username -pw password] -h nodeIP statusthrift
Должно указывать на то, что бережливый сервер работает, что позволяет Cassandra принимать запросы новых клиентов.
nodetool [-u username -pw password] -h nodeIP statusbinary
Должно указывать на то, что работает собственный транспорт (или двоичный протокол ).
nodetool [-u username -pw password] -h nodeIP describecluster
Должно показывать, что новые узлы используют ту же версию схемы, что и старые узлы.
Дополнительную информацию об использовании nodetool
см. в документации по использованию nodetool .