Добавление поддержки стоек Cassandra

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

Дополнительную информацию о том, почему важно, чтобы кольцо Cassandra учитывало стойки, можно найти в следующих ресурсах:

Что такое стойка?

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

В примерах в этом разделе используются три стойки Cassandra, то есть количество стоек, которые поддерживаются Apigee в производственных топологиях.

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

На следующем изображении показана конфигурация по умолчанию кольца Cassandra:

1 стойка с 3 узлами
(Рисунок 1) Конфигурация по умолчанию: все узлы в одной стойке

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

На изображении ниже показано кольцо с тремя узлами. На этом изображении показан порядок, в котором операции реплицируются по кольцу (по часовой стрелке), и подчеркивается тот факт, что никакие два узла не находятся в одной стойке:

3 стойки, по 1 узлу в каждой стойке
(Рисунок 2) Конфигурация с учетом стойки: три узла, по одному на каждой стойке

В этой конфигурации операции отправляются на узел, а также на реплики этого узла в других стойках (по часовой стрелке).

Добавить учет стойки (с 3 узлами)

Все рабочие топологии установки Apigee Edge для Private Cloud имеют как минимум три узла Cassandra, которые в этом разделе называются IP1, IP2 и IP3. По умолчанию каждый из этих узлов находится в одной стойке, "ra-1".

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

Чтобы назначить узлы Cassandra разным стойкам во время установки:

  1. Перед запуском установщика войдите в узел Cassandra и откройте для редактирования следующий файл конфигурации для автоматической установки:
    /opt/silent.conf

    Если файла нет, создайте его и назначьте владельцем пользователя apigee.

  2. Измените свойство CASS_HOSTS, которое представляет собой список IP-адресов (не DNS и не имен хостов), разделенных пробелами. Используйте следующий синтаксис:
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    Значение по умолчанию – кольцо Cassandra из трех узлов, каждый из которых назначен стойке 1 и центру обработки данных 1, как показано в следующем примере:

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. Измените назначения стоек так, чтобы узел 2 был назначен стойке 2, а узел 3 – стойке 3, как показано в следующем примере:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

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

    Дополнительную информацию об использовании свойства конфигурации CASS_HOSTS можно найти в справочнике по файлу конфигурации Edge.

  4. Сохраните изменения в файле конфигурации и выполните следующую команду, чтобы установить Cassandra с обновленной конфигурацией:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    Пример:

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. Повторите эту процедуру для каждого узла Cassandra в кольце в том порядке, в котором узлы назначены в свойстве CASS_HOSTS. В этом случае Cassandra необходимо устанавливать в следующем порядке:
    1. Узел 1 (IP1)
    2. Узел 2 (IP2)
    3. Узел 3 (IP3)

После установки проверьте конфигурацию Cassandra.

Проверьте конфигурацию Cassandra

После установки конфигурации Cassandra с поддержкой стоек вы можете проверить, назначены ли узлы разным стойкам, с помощью команды nodetool status, как показано в следующем примере:

/opt/apigee/apigee-cassandra/bin/nodetool status

(Вы выполняете эту команду на одном из узлов Cassandra.)

Результаты должны выглядеть примерно так, как показано ниже. В столбце Rack указаны идентификаторы стоек для каждого узла.

Datacenter: dc-1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns    Host ID                             Rack
UN  IP1   737 MB  256     ?     554d4498-e683-4a53-b0a5-e37a9731bc5c     ra-1
UN  IP2   744 MB  256     ?     cf8b7abf-5c5c-4361-9c2f-59e988d52da3     ra-2
UN  IP3   723 MB  256     ?     48e0384d-738f-4589-aa3a-08dc5bd5a736     ra-3

Если вы включили аутентификацию JMX для Cassandra, вам также необходимо передать имя пользователя и пароль в nodetool. Дополнительную информацию можно найти в статье Как использовать nodetool для управления узлами кластера.

Как установить кольцо из шести узлов

Для дополнительного резервирования вы можете расширить кольцо Cassandra до шести узлов. В этом случае вы назначаете по два узла каждой из трех стоек. Для этой конфигурации требуются три дополнительных узла: узел 4 (IP4), узел 5 (IP5) и узел 6 (IP6).

На изображении ниже показан порядок, в котором операции реплицируются по кольцу (по часовой стрелке). Также на нем видно, что во время репликации никакие два соседних узла не находятся в одной стойке.

3 стойки, по 2 узла в каждой стойке
(Рисунок 3) Кольцо Cassandra из шести узлов: по два узла на каждой из трех стоек

В этой конфигурации у каждого узла есть ещё две реплики – по одной в каждой из двух других стоек. Например, у узла 1 в стойке 1 есть реплика в стойке 2 и стойке 3. Операции, отправленные на узел 1, также отправляются на реплики в других стойках по часовой стрелке.

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

CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"

Как и в случае с кольцом из трех узлов, вы должны установить Cassandra в том же порядке, в котором узлы появляются в свойстве CASS_HOSTS:

  1. Узел 1 (IP1)
  2. Узел 4 (IP4)*
  3. Узел 2 (IP2)
  4. Узел 5 (IP5)
  5. Узел 3 (IP3)
  6. Node 6 (IP6)

* Внесите изменения в файл конфигурации для автоматической установки перед запуском утилиты настройки на четвертом узле (втором компьютере в порядке установки Cassandra).

Развернуть до 12 узлов

Чтобы ещё больше повысить отказоустойчивость и доступность, вы можете увеличить количество узлов Cassandra в кольце с 6 до 12. Для этой конфигурации требуется ещё шесть узлов (IP7–IP12).

На изображении ниже показан порядок, в котором операции реплицируются по кольцу (по часовой стрелке). Также на нем видно, что во время репликации никакие два соседних узла не находятся в одной стойке.

3 стойки, по 4 узла в каждой стойке
(Рисунок 4) Кольцо Cassandra из 12 узлов: по четыре узла в каждой из трех стоек

Процедура установки кольца из 12 узлов аналогична установке кольца из трех или шести узлов: задайте для CASS_HOSTS указанные значения и запустите установщик в указанном порядке.

Чтобы расширить кольцо Cassandra до 12 узлов, настройте узлы в файле конфигурации для автоматической установки следующим образом:

CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"

Как и в случае с кольцами из трех и шести узлов, вы должны запустить установщик на узлах в том порядке, в котором узлы указаны в файле конфигурации:

  1. Узел 1 (IP1)
  2. Node 7 (IP7)*
  3. Узел 4 (IP4)
  4. Узел 8 (IP8)
  5. Узел 2 (IP2)
  6. Node 9 (IP9)
  7. Узел 5 (IP5)
  8. Node 10 (IP10)
  9. Узел 3 (IP3)
  10. Node 11 (IP11)
  11. Node 6 (IP6)
  12. Node 12 (IP12)

* Эти изменения необходимо внести до установки Apigee Edge для частного облака на седьмом узле (втором компьютере в порядке установки Cassandra).