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

Edge para nuvem privada v. 4.17.09

É possível instalar a API BaaS em vários data centers usando uma configuração ativa/ativa. Neste documento, descrevemos como adicionar um data center do BaaS a um data center do BaaS atual.

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 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.

Como atualizar o data center atual

Para adicionar um novo data center do BaaS (data center 2), é necessário seguir as etapas para instalar e configurar o novo data center, mas também é preciso atualizar o data center original do BaaS (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 acessíveis pelo data center atual.
  • É preciso configurar as informações de replicação usadas pelos nós da pilha do 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 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 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 informações sobre o data center 2 no momento da instalação do data center 1.Adicione informações ao arquivo de configuração depois de instalar o data center 2.

Confira abaixo os arquivos de configuração do data center 2. Este arquivo de configuração pressupõe 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.

Observe que 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 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 independente 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 com ou sem Internet. 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 pelo 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:

    # List dc-1 nodes first, then dc-2,
    # including Cassandra data center and rack suffix
    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 de dc-1, execute setup.sh com o novo arquivo de configuração de 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 do Cassandra dc-2 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. Atualize os keyspaces do Cassandra com o fator de replicação correto para os dois data centers. Você só precisa executar essa etapa uma vez em qualquer servidor do Cassandra em qualquer data center:

    Observação: todos 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 para keyspaces do Cassandra:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH replication = { '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> ALTER KEYSPACE "system_traces" WITH replication = { '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. Veja os keyspaces usando o comando:
        cqlsh> select * from system.schema_keyspaces;
      7. Saia do 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 rebuild dc-1
  10. Execute "nodetool status" em cada nó do Cassandra e verifique se todos os nós do Cassandra têm "100%" para o valor "Owns":
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. Instale o BaaS no 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:
      > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. Instale a pilha do 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 do BaaS na máquina 7:
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. Atualize os nós da pilha do BaaS no data center 1:
    1. No primeiro nó da pilha do BaaS 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:
      # Same value as BAAS_CLUSTER_SEEDS in the dc-2 arquivo de configuração,
      # without double quotes.
      usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2

      # Same value as BAAS_CASS_DC_LIST in the dc-2 config file.
      usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2
    3. Repita as etapas a e b nos nós restantes da pilha do BaaS.
    4. Reinicie todos os nós da pilha do BaaS.

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

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. Atualize os valores do keyspace do BaaS. Esses keyspaces precisam ser definidos para replicação no momento da instalação, mas não precisam estar no ambiente de execução. A remoção da replicação também economiza memória do Cassandra.

    Você só precisa executar essa etapa uma vez em qualquer servidor do Cassandra em qualquer data center:
    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 replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { '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, é possível validar a instalação usando o seguinte procedimento:

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