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

Edge para nuvem privada v4.18.01

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

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 de API BaaS pode usar o próprio cluster do Cassandra ou 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 Management Server no data center original para que ele reconheça os nós do Cassandra no novo data center.

Atualizar o data center atual

Para adicionar um novo data center do BaaS (data center 2), você precisa realizar as etapas para instalar e configurar o novo data center, mas também precisa atualizar o data center do BaaS original (data center 1). Essas modificações são necessárias porque:

  • Você está adicionando novos nós do Cassandra no 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 nos dados center 1 para incluir informações do data center 2. Não é possível realizar essa configuração até o data center 2 está instalado.

Para realizar 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, também será necessário 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 no momento em que você instala 1.Você adiciona informações ao arquivo de configuração depois de instalar o data center 2.

Abaixo estão os arquivos de configuração do data center 2. Este arquivo de configuração pressupõe que você está instalando o dc-2 em 10 nós, conforme descrito em Topologias de instalação. Modifique esse arquivo se você estiver instalando em 7 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
SMTPMAILFROM="My Company <myco@company.com>"

Adicionar um data center do BaaS

  1. Instale o primeiro data center conforme descrito em Instalação de APIs 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. Instalar o Cassandra como parte de uma instalação atual do Edge ou como uma instalação independente cluster para BaaS:
    1. Instale o utilitário apigee-setup do Edge na primeira Nó do Cassandra de dc-2, máquina 8, usando um procedimento de Internet ou não. Consulte Instalar o utilitário apigee-setup do Edge para mais informações.
    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 ser acessível ou legível para a "apigee" usuário.
    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 do dc-1, edite o arquivo de configuração para adicionar os nós do Cassandra de data center 2 com base em como você instalou o Cassandra:

    # Liste primeiro os nós dc-1, depois dc-2,
    # incluindo o data center do Cassandra e o sufixo do rack
    CASS_HOSTS="$IP11:1,1 $IP12:1,1 $IP13:1,1 $IP8:2,1 $IP9:2,1 $IP10:2,1"
  5. No primeiro nó do Cassandra do dc-1, execute setup.sh com o novo arquivo de configuração dc-1 que inclui os nós do Cassandra de dc-2:
    &gt; /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 do Cassandra dc-2 ao arquivo de configuração do nó do servidor de gerenciamento do dc-1 e execute setup.sh:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. Atualize os keyspaces do Cassandra com o fator de replicação correto para os dois data centers. Você só precisam executar essa etapa uma vez em qualquer servidor do Cassandra em um dos data centers:

    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 cqlsh do Cassandra:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Execute os seguintes comandos CQL no prompt "cqlsh>" para definir os níveis de replicação dos keyspaces do Cassandra:
      1. cqlsh&gt; ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replicação = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh&gt; ALTER KEYSPACE "Apigee_Baas" WITH replicação = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh&gt; ALTERAR KEYSPACE "system_traces" WITH replicação = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. Confira os keyspaces usando o comando:
        cqlsh> select * from system.schema_keyspaces;
      7. Sair do cqlsh:
        cqlsh> exit
  9. Em todos os nós do Cassandra em dc-2, execute o comando de reconstrução, especificando o nome da região de dc-1:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. Executar "nodetool status" em cada nó do Cassandra e verificar se todos os nós do Cassandra "100%" para o valor "Proprietários":
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool status
  11. Instale o BaaS em dc-2:
    1. Edite o arquivo de configuração para listar apenas os nós do Cassandra em dc-2:
      # List dc-2 Cassandra nodes,
      # omitting Cassandra data center and rack suffix
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. Instale o ElasticSearch nos nós 4, 5 e 6 de dc-2:
      &gt; /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. Instale a pilha BaaS nos nós 4, 5 e 6 do dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. Instale o Portal do 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ó da pilha BaaS no data center 1, edite /opt/apigee/customer/application/usergrid.properties em um editor. Crie o arquivo se ele não existir.
    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

      # O mesmo valor de 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 restantes da pilha de BaaS.
    4. Reinicie todos os nós da pilha de BaaS.

      Observação: ao reiniciar os nós da pilha de BaaS, reinicie-os no mesmo ordem para que sejam listados em BAAS_CLUSTER_SEEDS. Listas de BAAS_CLUSTER_SEEDS em da maioria dos dois nós da pilha. Depois de reiniciar esses dois nós em ordem, você pode reiniciar o nós restantes em qualquer ordem.

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. Atualizar valores de keyspace de BaaS. Esse keyspace precisa ser definido para replicação no momento da instalação, mas não precisa ser no momento da 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 para o Cassandra keyspaces:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. Visualize os keyspaces usando o comando:
        cqlsh&gt; selecionar * de system.schema_keyspaces;
      4. Sair 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, é possível validar a instalação usando o seguinte procedimento:

  1. Em todos os nós da pilha de BaaS, verifique o status:
    &gt; curl 0:8080/status
  2. Verifique se a chamada da API do 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 do BaaS para dc-2. Verifique se todos os dados são replicados em dc-2, como as coleções criadas em dc-1.