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

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

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

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

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

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

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

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

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

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

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

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

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

Добавление информации о стойке (с тремя узлами)

Все топологии установки Apigee Edge для частного облака, предназначенные для использования в рабочей среде, имеют не менее трех узлов 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. Node 5 (IP5)
  5. Узел 3 (IP3)
  6. Node 6 (IP6)

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

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

Чтобы повысить отказоустойчивость и доступность, можно увеличить количество узлов Cassandra в кольце с шести до 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. Node 8 (IP8)
  5. Узел 2 (IP2)
  6. Node 9 (IP9)
  7. Node 5 (IP5)
  8. Node 10 (IP10)
  9. Узел 3 (IP3)
  10. Узел 11 (IP11)
  11. Node 6 (IP6)
  12. Узел 12 (IP12)

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