Adicionar suporte a rack do Cassandra

Esta seção fornece orientações gerais para escalonar operações do Cassandra fazendo com que o Cassandra seja reconhecido no Apigee Edge para o rack de nuvem privada.

Para saber mais sobre a importância de fazer o rack do anel Cassandra reconhecer, consulte os seguintes recursos:

O que é um rack?

Um rack do Cassandra é um agrupamento lógico dos nós do Cassandra dentro do anel. O Cassandra usa racks para garantir que as réplicas sejam distribuídas entre diferentes agrupamentos lógicos. Como resultado, as operações são enviadas não apenas para um nó, mas para vários nós, cada um em um rack separado, proporcionando maior tolerância a falhas e disponibilidade.

Os exemplos nesta seção usam três racks do Cassandra, que é o número de racks com suporte da Apigee em topologias de produção.

A instalação padrão do Cassandra no Apigee Edge para nuvem privada pressupõe um único rack lógico e coloca todos os nós em um data center dentro dele. Embora essa configuração seja simples de instalar e gerenciar, ela será suscetível a falhas se uma operação falhar em um desses nós.

A imagem a seguir mostra a configuração padrão do anel do Cassandra:

1 rack com três nós
(Figura 1) Configuração padrão: todos os nós em um único rack

Em uma configuração mais robusta, cada nó seria atribuído a um rack separado, e as operações também seriam executadas em réplicas em cada um desses racks.

A imagem a seguir mostra um anel de três nós. Esta imagem mostra a ordem em que as operações são replicadas no anel (sentido horário) e destaca o fato de que não há dois nós no mesmo rack:

Três racks, com um nó em cada rack
(Figura 2) Configuração com reconhecimento de rack: três nós, um em cada rack

Nessa configuração, as operações são enviadas para um nó, mas também para réplicas dele em outros racks (no sentido horário).

Adicionar reconhecimento de rack (com três nós)

Todas as topologias de instalação de produção do Apigee Edge para nuvem privada têm pelo menos três nós do Cassandra, que nesta seção são chamados de "IP1", "IP2" e "IP3". Por padrão, cada um desses nós está no mesmo rack, "ra-1".

Nesta seção, descrevemos como atribuir os nós do Cassandra a racks separados para que todas as operações sejam enviadas aos nós de réplica em agrupamentos lógicos separados dentro do anel.

Para atribuir nós do Cassandra a diferentes racks durante a instalação:

  1. Antes de executar o instalador, faça login no nó do Cassandra e abra o seguinte arquivo de configuração silencioso para edição:
    /opt/silent.conf

    Crie o arquivo, se ele não existir, e certifique-se de tornar o usuário "apigee" um proprietário.

  2. Edite a propriedade CASS_HOSTS, uma lista de endereços IP separada por espaços (não entradas de DNS ou de nome do host) que usa a seguinte sintaxe:
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    O valor padrão é um anel de três nós do Cassandra com cada nó atribuído ao rack 1 e ao data center 1, conforme mostrado no exemplo a seguir:

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. Altere as atribuições do rack para que o nó 2 seja atribuído ao rack 2 e o nó 3 ao rack 3, conforme o exemplo a seguir:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    Ao alterar as atribuições do rack, você instrui o Cassandra a criar dois agrupamentos lógicos (racks) adicionais que fornecem réplicas que recebem todas as operações recebidas pelo primeiro nó.

    Para mais informações sobre como usar a propriedade de configuração CASS_HOSTS, consulte Referência do arquivo de configuração de borda.

  4. Salve as mudanças no arquivo de configuração e execute o seguinte comando para instalar o Cassandra com a configuração atualizada:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    Exemplo:

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. Repita esse procedimento para cada nó do Cassandra no anel, na ordem em que eles são atribuídos na propriedade CASS_HOSTS. Nesse caso, instale o Cassandra na seguinte ordem:
    1. Nó 1 (IP1)
    2. Nó 2 (IP2)
    3. Nó 3 (IP3)

Após a instalação, verifique a configuração do Cassandra.

Verificar a configuração do Cassandra

Depois de instalar uma configuração do Cassandra com reconhecimento de rack, verifique se os nós estão atribuídos aos diferentes racks usando o comando nodetool status, como mostrado no exemplo a seguir:

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

Você executa esse comando em um dos nós do Cassandra.

Os resultados serão semelhantes aos mostrados a seguir, em que a coluna Rack mostra os diferentes IDs de rack para cada nó:

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

Se você ativou a autenticação JMX para o Cassandra, também precisa transmitir seu nome de usuário e senha para nodetool. Para mais informações, consulte Usar o nodetool para gerenciar nós do cluster.

Instalar um anel de seis nós

Para mais redundância, expanda o anel do Cassandra para seis nós. Nesse caso, você atribui dois nós a cada um dos três racks. Essa configuração requer mais três nós: Nó 4 (IP4), Nó 5 (IP5) e Nó 6 (IP6).

A imagem a seguir mostra a ordem em que as operações são replicadas no anel (sentido horário) e destaca o fato de que, durante a replicação, não há dois nós adjacentes no mesmo rack:

Três racks, com dois nós em cada rack
(Figura 3) Anel Cassandra de seis nós: dois nós em cada um dos três racks

Nesta configuração, cada nó tem mais duas réplicas: uma em cada um dos outros dois racks. Por exemplo, o nó 1 no rack 1 tem uma réplica no Rack 2 e no Rack 3. As operações enviadas para o nó 1 também são enviadas para as réplicas nos outros racks, no sentido horário.

Para expandir um anel do Cassandra de três nós para um do Cassandra de seis nós, configure os nós da seguinte maneira no arquivo de configuração silenciosa:

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

Assim como acontece com um anel de três nós, você precisa instalar o Cassandra na mesma ordem em que os nós aparecem na propriedade CASS_HOSTS:

  1. Nó 1 (IP1)
  2. Nó 4 (IP4)*
  3. Nó 2 (IP2)
  4. Nó 5 (IP5)
  5. Nó 3 (IP3)
  6. Nó 6 (IP6)

* Faça as alterações no arquivo de configuração silenciosa antes de executar o utilitário de configuração no quarto nó (a segunda máquina na ordem de instalação do Cassandra).

Expandir para 12 nós

Para aumentar ainda mais a tolerância a falhas e a disponibilidade, é possível aumentar o número de nós do Cassandra no anel de 6 para 12. Essa configuração requer seis nós adicionais (IP7 a IP12).

A imagem a seguir mostra a ordem em que as operações são replicadas no anel (sentido horário) e destaca o fato de que, durante a replicação, não há dois nós adjacentes no mesmo rack:

Três racks com quatro nós em cada rack
(Figura 4) Anel Cassandra de 12 nós: quatro nós em cada um dos três racks

O procedimento para instalar um anel de 12 nós é semelhante à instalação de um anel de três ou seis nós: defina CASS_HOSTS com os valores fornecidos e execute o instalador na ordem especificada.

Para expandir para um anel do Cassandra de 12 nós, defina os nós da seguinte maneira no arquivo de configuração silencioso:

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"

Assim como nos anéis de três e seis nós, é preciso executar o instalador nos nós na ordem em que eles aparecem no arquivo de configuração:

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

* É preciso fazer essas alterações antes de instalar o Apigee Edge para nuvem privada no 7o nó (a segunda máquina no pedido de instalação do Cassandra).