При добавлении узлов 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:
- Повторно запустите setup.sh с профилем "-p c" и новым файлом конфигурации:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
Установите Cassandra на новые узлы
Чтобы установить Cassandra на новые узлы, выполните описанные ниже действия.
На каждом новом узле Cassandra:
- Установите Cassandra на трех узлах:
- Установите
apigee-setupна первом узле, как описано в разделе Установка утилиты apigee-setup Edge. - Установите 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
Эта команда указывает, запущен ли нативный транспорт (или двоичный протокол), который позволяет Cassandra принимать новые клиентские запросы.
nodetool [-u username -pw password] -h nodeIP statusbinary
Эта команда указывает, запущен ли встроенный транспорт (или двоичный протокол).
nodetool [-u username -pw password] -h nodeIP describecluster
Эта команда показывает, используют ли новые узлы ту же версию схемы, что и старые.
Подробнее об использовании nodetool рассказывается в документации по использованию nodetool.