Instalação de vários data centers para API BaaS

Edge para nuvem privada v. 4.17.01

É possível instalar o BaaS da API em vários data centers usando uma configuração ativa/ativa. Este documento descreve como adicionar um data center BaaS a um data center BaaS existente.

Como adicionar um data center quando o cluster do Cassandra é compartilhado com o Edge

Todos os data centers precisam ter o mesmo número de nós do Cassandra. Uma instalação da API BaaS pode usar o próprio cluster do Cassandra ou pode compartilhar um cluster do Cassandra com o Edge.

Se a instalação do BaaS compartilhar um cluster do Cassandra com o Edge, será necessário atualizar o servidor de gerenciamento no data center original para configurá-lo para reconhecer os nós do Cassandra no novo data center.

Atualizar o data center atual

Para adicionar um novo data center BaaS (data center 2), é preciso concluir as etapas de instalação e configuração do novo data center BaaS, mas também é necessário atualizar o data center BaaS original (data center 1) . Essas modificações são necessárias porque:

  • Você está adicionando novos nós do Cassandra ao novo data center que precisam ser acessados pelo data center atual.
  • Você precisa configurar as informações de replicação usadas pelos nós da pilha BaaS no data center 1 para incluir informações do data center 2. Não é possível realizar essa configuração até que o data center 2 seja instalado.

Para fazer essas atualizações no data center 1, atualize o arquivo de configuração original usado para instalar o data center 1 e execute novamente o apigee-setup nos nós do Cassandra do data center 1. Se o cluster do Cassandra para o data center 1 for compartilhado com uma instalação do Edge, você também precisará atualizar o servidor de gerenciamento.

Como criar os arquivos de configuração

Para instalar o data center 1, use a configuração mostrada em Instalação da API BaaS. O arquivo de configuração não precisa incluir nenhuma informação sobre o data center 2 ao instalar o data center 1.Você adiciona informações ao arquivo de configuração depois da instalação do data center 2.

Veja abaixo os arquivos de configuração do data center 2. Esse arquivo de configuração presume que você esteja instalando o dc-2 em 10 nós, conforme descrito em Topologias de instalação. Modifique esse arquivo de acordo se você estiver instalando em sete nós.

O arquivo de configuração do data center 2 (dc-2) contém informações sobre o data center 1 (dc-1):

# Specify IP address or DNS name of node for dc-2.
IP1=192.168.1.1   # ElasticSearch
IP2=192.168.1.2   # ElasticSearch
IP3=192.168.1.3   # ElasticSearch
IP4=192.168.1.4   # API BaaS Stack
IP5=192.168.1.5   # API BaaS Stack
IP6=192.168.1.6   # API BaaS Stack
IP7=192.168.1.7   # API BaaS Portal
IP8=192.168.1.8   # Cassandra dc-2 (shared with Edge or standalone)
IP9=192.168.1.9   # Cassandra dc-2 (shared with Edge or standalone)
IP10=192.168.1.10  # Cassandra dc-2 (shared with Edge or standalone)

# Specify node information for dc-1
IP11=192.168.1.11   # Cassandra dc-1 (shared with Edge or standalone)
IP12=192.168.1.12   # Cassandra dc-1 (shared with Edge or standalone)
IP13=192.168.1.13   # Cassandra dc-1 (shared with Edge or standalone)
IP14=192.168.1.14   # API BaaS Stack
IP15=192.168.1.15   # API BaaS Stack

# Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost.
HOSTIP=$(hostname -i)

# Define the API BaaS administrator account.  
AS_ADMIN="superuser"    # User name - default is "superuser".
AS_ADMIN_EMAIL=stackAdmin@email.com
AS_PASSWD=stackAdminPWord

# Specify Cassandra data center and rack suffix.
# List dc-2 nodes first, then dc-1.
# Must use IP addresses for CASS_HOSTS, not DNS names.
# CASS_HOSTS="$IP8:2,1 $IP9:2,1 $IP10:2,1 $IP11:1,1 $IP12:1,1 $IP13:1,1"

# Specify the Cassandra region.
REGION=dc-2

# Cassandra uname/pword.
# Even if Cassandra authentication is disabled,
# you must still pass values for these properties.
CASS_USERNAME=cassandra    # Default value
CASS_PASSWORD=cassandra    # Default value

# Specify BaaS Cassandra connection information.
# Specify the data center name as dc-2.
BAAS_CASS_LOCALDC=dc-2    

# Specify both data centers.
BAAS_CASS_DC_LIST=dc-1,dc-2

# Replication is in the form "dataCenterName:#CassandraNodes". 
# Specify both data centers.
BAAS_CASS_REPLICATION=dc-1:3,dc-2:3

# Defines the initial contact points for members of the BaaS cluster. 
# Specify the IP address of no more than two Stack nodes per data center.
# Specify both data centers. 
BAAS_CLUSTER_SEEDS="dc-1:$IP14,dc-1:$IP15,dc-2:$IP4,dc-2:$IP5"

# ElasticSearch IPs or DNS names, separated by spaces, for dc-2.
ES_HOSTS="$IP1 $IP2 $IP3"

# API BaaS Stack information.
# Default cluster name is "apigee_baas"
BAAS_USERGRID_CLUSTERNAME="apigee_baas" 

# URL and port of the load balancer for the API BaaS Stack nodes, 
# or IP/DNS and port 8080 of a single Stack node with no load balancer.
BAAS_USERGRID_URL=http://myloadbalancer:8443

# API BaaS Portal information.
# URL and port number of load balancer, if there is one in front of the Portal,
# or the URL and port of the Portal node.  
BAAS_PORTAL_URL="http://$IP7:9000"

# Portal port. Default value is 9000.
BAAS_PORTAL_LISTEN_PORT=9000 

# SMTP information. BaaS requires an SMTP server.
SMTPHOST=smtp.gmail.com
SMTPPORT=465
SMTPUSER=your@email.com
SMTPPASSWORD=yourEmailPassword
SMTPSSL=y

Adicionar um data center BaaS

  1. Instale o primeiro data center conforme descrito em Instalação da API BaaS. Esse documento inclui o arquivo de configuração usado para instalar o data center 1.
  2. Crie o arquivo de configuração para dc-2 conforme descrito acima.
  3. Instale o Cassandra como parte de uma instalação do Edge ou como um cluster autônomo para o BaaS:
    1. Instale o utilitário apigee-setup do Edge no primeiro nó do Cassandra de dc-2, máquina 8, usando o procedimento da Internet ou não. Consulte Instalar o utilitário de configuração da Apigee do Edge para saber mais.
    2. No prompt de comando, execute o script de configuração para instalar o Cassandra no primeiro nó:
      > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

      A opção “-p c” especifica a instalação do Cassandra.

      O arquivo de configuração precisa estar acessível ou legível para o usuário "apigee".
    3. Repita as etapas 3 e 4 para os nós restantes do Cassandra, máquinas 9 e 10, em dc-2.
  4. Nos nós do Cassandra de dc-1, edite o arquivo de configuração para adicionar os nós do Cassandra do data center 2 com base em como você instalou o Cassandra:

    # Liste os nós dc-1 primeiro, depois dc-2,
    # incluindo o data center do Cassandra e o sufixo do rack
    CASS_HOSTS="$IP11:1, $12
  5. No primeiro nó do Cassandra de dc-1, execute setup.sh com o novo arquivo de configuração dc-1 que inclui os nós do Cassandra de dc-2:
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. Repita as etapas 6 e 7 para os nós restantes do Cassandra em dc-1.
  7. Se você estiver se conectando a um cluster do Cassandra para dc-1 compartilhado com o Edge, adicione os nós dc-2 do Cassandra ao arquivo de configuração do nó do servidor de gerenciamento de dc-1 e execute setup.sh:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. Atualizar os keyspaces do Cassandra com o fator de replicação correto para os dois data centers. Basta executar esta etapa uma vez em qualquer servidor do Cassandra em qualquer data center:

    Observação: os comandos abaixo definem o fator de replicação como "3", indicando três nós do Cassandra no cluster. Modifique esse valor conforme necessário para sua instalação.
    1. Inicie o utilitário Cassandra cqlsh:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Execute os seguintes comandos CQL no prompt "cqlsh>" para definir os níveis de replicação para keyspaces do Cassandra:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH prefira = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH transaction = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH prefira = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh> ALTER KEYSPACE "system_traces" WITHplication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH violation = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. Veja os keyspaces usando o comando:
        cqlsh> select * from system.schema_keyspaces;
      7. Saia de cqlsh:
        cqlsh> exit
  9. Em todos os nós do Cassandra em dc-2, execute o comando de recriação, especificando o nome da região de dc-1:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP recrie dc-1
  10. Execute "nodetool status" em cada nó do Cassandra e verifique se todos os nós do Cassandra têm "100%" no valor "Proprietários":
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. Instale o BaaS em dc-2:
    1. Edite o arquivo de configuração para listar somente os nós do Cassandra em dc-2:
      # Lista os nós do Cassandra dc-2,
      # omitindo o data center do Cassandra e o sufixo do rack
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. Instale o ElasticSearch nos nós 4, 5 e 6 de dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. Instalar a pilha BaaS nos nós 4, 5 e 6 de dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. Instale o portal BaaS na máquina 7:
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. Atualize os nós da pilha BaaS no data center 1:
    1. No primeiro nó BaaS Stack no data center 1, edite /opt/apigee/customer/application/usergrid.properties em um editor. Se o arquivo não existir, crie-o.
    2. Adicione as seguintes propriedades a usergrid.properties:
      # Mesmo valor que BAAS_CLUSTER_SEEDS no arquivo de configuração dc-2,
      # sem aspas duplas.
      usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2

      # Mesmo valor que BAAS_CASS_DC_LIST no arquivo de configuração dc-2.
      usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2
    3. Repita as etapas "a" e "b" nos nós da pilha BaaS restantes.
    4. Reinicie todos os nós da pilha BaaS.

      Observação: ao reiniciar os nós da pilha BaaS, reinicie-os na mesma ordem em que estão listados em BAAS_CLUSTER_SEEDS. BAAS_CLUSTER_SEEDS lista no máximo dois dos nós da pilha. Depois de reiniciar esses dois nós em ordem, você poderá reiniciar os nós restantes em qualquer ordem.

      > /opt/apigee/apigee-service/bin/apigee-service reiniciadas do baas-usergrid
  13. Atualizar valores de keyspace de BaaS. Esse keyspace precisa ser definido para replicação no momento da instalação, mas não no ambiente de execução. A remoção da replicação também economiza memória do Cassandra.

    Você só precisa executar esta etapa uma vez em qualquer servidor do Cassandra em um dos data centers:
    1. Inicie o utilitário cqlsh do Cassandra:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Execute os seguintes comandos CQL para definir os níveis de replicação dos keyspaces do Cassandra:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH prefira = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH estivesse = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. Veja os keyspaces usando o comando:
        cqlsh> select * from system.schema_keyspaces;
      4. Saia do cqlsh:
        cqlsh> exit

A instalação do segundo data center foi concluída.

Depois de concluir a instalação e a configuração dos dois data centers, valide a instalação usando o seguinte procedimento:

  1. Em todos os nós da pilha BaaS, verifique o status:
    > curl 0:8080/status
  2. Verifique se a chamada da API de token está funcionando:
    > curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminEmail","password":"pWord"}'
  3. Tente fazer login no portal BaaS para dc-2. Verifique se todos os dados são replicados em dc-2, como coleções criadas em dc-1.