Como adicionar um data center

Este documento descreve como adicionar um data center (também chamado de região) a um data center atual.

Considerações antes de adicionar um data center

Antes de instalar um data center, é necessário entender como configurar os servidores SymasLDAP, ZooKeeper, Cassandra e Postgres nos data centers. Também é necessário garantir que as portas necessárias estejam abertas entre os nós nos dois data centers.

  • SymasLDAP

    Cada data center tem o próprio servidor SymasLDAP configurado com a replicação ativada. Ao instalar o novo data center, é necessário configurar o SymasLDAP para usar a replicação e reconfigurar o servidor SymasLDAP no data center atual para usar a replicação.

  • ZooKeeper

    Para a propriedade ZK_HOSTS dos dois data centers, especifique os endereços IP ou nomes DNS de todos os nós do ZooKeeper dos dois data centers, na mesma ordem, e marque todos os nós com o modificador ":observer". Os nós sem o modificador :observer são chamados de "votantes". É necessário ter um número ímpar de "votantes" na configuração.

    Nessa topologia, o host do ZooKeeper no host 9 é o observador:

    No arquivo de configuração de exemplo mostrado abaixo, o nó 9 é marcado com o :observer modificador para que você tenha cinco votantes: nós 1, 2, 3, 7 e 8.

    Para a propriedade ZK_CLIENT_HOSTS de cada data center, especifique os endereços IP ou nomes DNS apenas dos nós do ZooKeeper no data center, na mesma ordem, para todos os nós do ZooKeeper no data center.

  • Cassandra

    Para CASS_HOSTS de cada data center, especifique todos os endereços IP do Cassandra (não os nomes DNS) para os dois data centers. Para o data center 1, liste os nós do Cassandra nesse data center primeiro. Para o data center 2, liste os nós do Cassandra nesse data center primeiro. Liste os nós do Cassandra na mesma ordem para todos os nós do Cassandra no data center.

    Todos os nós do Cassandra precisam ter um sufixo ':d,r'; por exemplo 'ip:1,1 = data center 1 e rack/zona de disponibilidade 1 e 'ip:2,1 = data center 2 e rack/zona de disponibilidade 1.

    Por exemplo, "192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1"

    O primeiro nó no rack/zona de disponibilidade 1 de cada data center será usado como o servidor de sementes. Nesse modelo de implantação, a configuração do Cassandra será assim:

  • Postgres

    Por padrão, o Edge instala todos os nós do Postgres no modo mestre. No entanto, quando você tem vários data centers, configure os nós do Postgres para usar a replicação mestre-standby. Assim, se o nó mestre falhar, o nó de espera poderá continuar a veicular o tráfego do servidor. Normalmente, você configura o servidor mestre do Postgres em um data center e o servidor de espera no segundo data center.

    Se o data center atual já estiver configurado para ter dois nós do Postgres em execução no modo mestre/standby, como parte desse procedimento, cancele o registro do nó de espera atual e substitua-o por um nó de espera no novo data center.

    A tabela a seguir mostra a configuração do Postgres antes e depois para os dois cenários:

    Antes Depois

    Nó mestre único do Postgres em dc-1

    Nó mestre do Postgres em dc-1

    Nó de espera do Postgres em dc-2

    Nó mestre do Postgres em dc-1

    Nó de espera do Postgres em dc-1

    Nó mestre do Postgres em dc-1

    Nó de espera do Postgres em dc-2

    Cancelar o registro do nó de espera antigo do Postgres em dc-1

  • Requisitos de porta

    É necessário garantir que as portas necessárias estejam abertas entre os nós nos dois data centers. Para um diagrama de portas, consulte Requisitos de porta.

Atualizar o data center atual

A adição de um data center exige que você execute as etapas para instalar e configurar os novos nós do data center, mas também exige que você atualize os nós no data center original. Essas modificações são necessárias porque você está adicionando novos nós do Cassandra e do ZooKeeper no novo data center que precisam estar acessíveis ao data center atual, e é necessário reconfigurar o SymasLDAP para usar a replicação.

Criar os arquivos de configuração

Abaixo estão os arquivos de configuração silenciosa para os dois data centers, em que cada data center tem seis nós, conforme mostrado em Topologias de instalação. Observe que o arquivo de configuração para dc-1 adiciona outras configurações a:

  • Configurar o SymasLDAP com replicação em dois nós do SymasLDAP.
  • Adicionar os novos nós do Cassandra e do ZooKeeper do dc-2 ao arquivo de configuração do dc-1.
# Datacenter 1
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP1
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=1
LDAP_PEER=$IP7
APIGEE_LDAPPW=secret
MP_POD=gateway-1
REGION=dc-1
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"
# Datacenter 2
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP7
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=2
LDAP_PEER=$IP1
APIGEE_LDAPPW=secret
MP_POD=gateway-2
REGION=dc-2
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"

Adicionar um novo data center

Use o procedimento abaixo para instalar um novo data center.

No procedimento, os data centers têm os seguintes nomes:

  • dc-1: o data center atual
  • dc-2: o novo data center

Para adicionar um novo data center:

  1. Em dc-1, execute setup.sh novamente nos nós originais do Cassandra com o novo arquivo de configuração do dc-1 que inclui os nós do Cassandra do dc-2:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. Em dc-2, instale o apigee-setup em todos os nós. Consulte Instalar o utilitário apigee-setup do Edge para mais informações.
  3. Em dc-2, instale o Cassandra e o ZooKeeper nos nós apropriados:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  4. Em dc-1, execute setup.sh novamente no nó do servidor de gerenciamento:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1

    Se aplicável, execute a configuração de monetização novamente:

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1
  5. Em dc-2, execute o comando de reconstrução em todos os nós do Cassandra, especificando o nome da região do dc-1:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    Só é necessário transmitir seu nome de usuário e senha se você ativou a autenticação JMX para o Cassandra.

  6. No dc-2, instale o servidor de gerenciamento no nó apropriado:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. No nó do servidor de gerenciamento no dc-2, instale apigee-provision, que instala o utilitário apigee-adminapi.sh:
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. No dc-2, instale as rotas e os processadores de mensagens nos nós apropriados:
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. No dc-2, instale o Qpid nos nós apropriados:
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. No dc-2, instale o Postgres no nó apropriado:
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. Configure o mestre/standby do Postgres para os nós do Postgres. O nó do Postgres no dc-1 é o mestre, e o nó do Postgres no dc-2 é o servidor de espera.
    1. No nó mestre em dc-1, edite o arquivo de configuração para definir:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. Ative a replicação no novo mestre:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. No nó de espera em dc-2, edite o arquivo de configuração para definir:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    4. No nó de espera em dc-2, pare o servidor e exclua todos os dados do Postgres existentes:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      rm -rf /opt/apigee/data/apigee-postgresql/

      Se necessário, faça backup desses dados antes de excluí-los.

    5. Configure o nó de espera em dc-2:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. No dc-1, atualize a configuração de análise e configure as organizações.
    1. No nó do servidor de gerenciamento do dc-1, receba o UUID do nó do Postgres:
      apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \
        --admin adminEmail --pwd adminPword --host localhost

      O UUID aparece no final dos dados retornados. Salve esse valor.

    2. No nó do servidor de gerenciamento do dc-2, receba o UUID do nó do Postgres conforme mostrado na etapa anterior. Salve esse valor.
    3. No nó do servidor de gerenciamento do dc-1, determine o nome dos grupos de análise e de consumidores. Muitos dos comandos abaixo exigem essas informações.

      Por padrão, o nome do grupo de análise é "axgroup-001" e o nome do grupo de consumidores é "consumer-group-001". No arquivo de configuração silenciosa de uma região, é possível definir o nome do grupo de análise usando a propriedade AXGROUP.

      Se você não tiver certeza dos nomes dos grupos de análise e de consumidores, use o comando a seguir para mostrá-los:

      apigee-adminapi.sh analytics groups list \
        --admin adminEmail --pwd adminPword --host localhost

      Esse comando retorna o nome do grupo de análise no campo "name" e o nome do grupo de consumidores no campo "consumer-groups".

    4. No nó do servidor de gerenciamento do dc-1, remova o servidor do Postgres existente do grupo de análise:
      1. Remova o nó do Postgres do grupo de consumidores:
        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u UUID \
          -Y --admin adminEmail --pwd adminPword --host localhost

        Se o dc-1 estiver configurado para ter dois nós do Postgres em execução no modo mestre/standby, remova os dois:

        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \
          -Y --admin adminEmail --pwd adminPword --host localhost
      2. Remova o nó do Postgres do grupo de análise:
        apigee-adminapi.sh analytics groups postgres_server remove \
          -g axgroup-001 -u UUID -Y --admin adminEmail \
          --pwd adminPword --host localhost

        Se o dc-1 estiver configurado para ter dois nós do Postgres em execução no modo mestre/standby, remova os dois:

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. No nó do servidor de gerenciamento do dc-1, adicione os novos servidores mestre/standby do Postgres ao grupo de análise:
      1. Adicione os dois servidores do Postgres ao grupo de análise:
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        Em que UUID_1 corresponde ao nó mestre do Postgres em dc-1 e UUID_2 corresponde ao nó de espera do Postgres em dc-2.

      2. Adicione os servidores PG ao grupo de consumidores como mestre/standby:
        apigee-adminapi.sh analytics groups consumer_groups datastores \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
    6. Adicione os servidores Qpid do dc-2 ao grupo de análise:
      1. No nó do servidor de gerenciamento do dc-1, receba os UUIDs dos nós do Qpid em dc-2:
        apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \
          --admin adminEmail --pwd adminPword --host localhost

        Os UUIDs aparecem no final dos dados retornados. Salve esses valores.

      2. No nó do servidor de gerenciamento do dc-1, adicione os nós do Qpid ao grupo de análise (execute os dois comandos):
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_1" --admin adminEmail \
          --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
      3. No nó do servidor de gerenciamento do dc-1, adicione os nós do Qpid ao grupo de consumidores (execute os dois comandos):
        apigee-adminapi.sh analytics groups consumer_groups consumers \
        add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \
        --admin adminEmail --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups consumer_groups consumers \
        add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \
        --admin adminEmail --pwd adminPword --host localhost

        Se você estiver usando monetização, adicione os nós do Qpid ao grupo MINT no nó do servidor de gerenciamento do dc-1:

        apigee-adminapi.sh analytics groups qpid_server \
        add -g mxgroup001 -u UUID_1 --admin adminEmail \
        --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
        add -g mxgroup001 -u UUID_2 --admin adminEmail \
        --pwd adminPword --host localhost
    7. Cancele o registro e exclua o servidor de espera antigo do Postgres do dc-1:
      1. Cancele o registro do servidor de espera do Postgres dc-1:
        apigee-adminapi.sh servers deregister -u UUID -r dc-1 \
        -p analytics -t postgres-server -Y --admin adminEmail \
        --pwd adminPword --host localhost

        Em que UUID é o nó de espera antigo do Postgres no dc-1.

      2. Exclua o servidor de espera do Postgres do dc-1:
        apigee-adminapi.sh servers delete -u UUID \
        --admin adminEmail --pwd adminPword --host localhost
  13. Atualize os keyspaces do Cassandra com o fator de replicação correto para os dois data centers. Só é necessário 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 comandos CQL a seguir no prompt "cqlsh>" para definir os níveis de replicação para keyspaces do Cassandra:
      1. ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' }; 
      2. ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. Para conferir os keyspaces, use o comando:
        SELECT * FROM system_schema.keyspaces;
      4. Saia do cqlsh:
        exit
  14. Execute o comando nodetool a seguir em todos os nós do Cassandra no dc-1 para liberar memória:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    Só é necessário transmitir seu nome de usuário e senha se você ativou a autenticação JMX para o Cassandra.

  15. Para cada organização e para cada ambiente que você quer oferecer suporte em data centers:
    1. No nó do servidor de gerenciamento do dc-1, adicione o novo MP_POD à organização:
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

      Em que gateway-2 é o nome do pod do gateway, conforme definido pela propriedade MP_POD no arquivo de configuração do dc-2.

    2. Adicione os novos processadores de mensagens à organização e ao ambiente:
      1. No nó do servidor de gerenciamento do dc-2, receba os UUIDs dos nós do processador de mensagens no dc-2:
        apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \
          -t message-processor --admin adminEmail --pwd adminPword --host localhost

        Os UUIDs aparecem no final dos dados retornados. Salve esses valores.

      2. No nó do servidor de gerenciamento do dc-1, para cada processador de mensagens no dc-2, adicione o processador de mensagens a um ambiente da organização:
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
          -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. No nó do servidor de gerenciamento do dc-1, verifique a organização:
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

      Em que apiProxyName é o nome de um proxy de API implantado na organização.

  16. Se você estiver usando a monetização, instale o nó de monetização no DC2.

    Execute o comando de configuração do MINT nos nós do servidor de gerenciamento e do processador de mensagens no DC2:

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1