Como adicionar um data center

Edge para nuvem privada v4.18.01

Neste documento, descrevemos como adicionar um data center, também conhecido como região, a um data center atual.

.

Considerações antes de adicionar um data center

Antes de instalar um data center, é preciso saber como configurar os servidores OpenLDAP, ZooKeeper, Cassandra e Postgres nos data centers. Você também precisa garantir que as portas necessárias estejam abertas entre os nós nos dois data centers.

  • OpenLDAP
    Cada data center tem o próprio servidor OpenLDAP configurado com a replicação ativada. Ao instalar o novo data center, é necessário configurar o OpenLDAP para usar a replicação e reconfigurar o servidor do OpenLDAP no data center atual para usar a replicação.
  • ZooKeeper
    Na propriedade ZK_HOSTS dos dois data centers, especifique os endereços IP ou os 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 "votadores". É preciso ter um número ímpar de "votantes" na configuração.

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



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

    Para a propriedade ZK_CLIENT_HOSTS em 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
    Todos os data centers precisam ter o mesmo número de nós do Cassandra.

    No caso de CASS_HOSTS nos data centers, especifique todos os endereços IP do Cassandra (não os nomes DNS) nos dois data centers. Para o data center 1, liste primeiro os nós do Cassandra nesse data center. No data center 2, liste primeiro os nós do Cassandra nesse data center. 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.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.1268.12 do nó de dados, 126.12.

    Neste modelo de implantação, a configuração do Cassandra ficará assim:


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

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

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

    Antes

    Depois

    Nó mestre do Postgres em dc-1

    Nó mestre do Postgres em dc-1

    Nó Postgres em espera em dc-2

    Nó mestre do Postgres em dc-1

    Nó do Postgres em espera em dc-1

    Nó mestre do Postgres em dc-1

    Nó Postgres em espera em dc-2

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

  • Requisitos de porta
    As portas necessárias precisam estar abertas entre os nós nos dois data centers. Para ver um diagrama de portas, consulte Requisitos de instalação.

Atualizar o data center atual

Para adicionar um data center, é necessário seguir as etapas de instalação e configuração dos novos nós do data center, mas também é necessário atualizar 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 ao novo data center que precisam ser acessíveis ao data center existente e é necessário reconfigurar o OpenLDAP para usar a replicação.

Como criar os arquivos de configuração

Confira abaixo os arquivos de configuração silenciosa dos 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 OpenLDAP com replicação em dois nós do OpenLDAP.
  • Adicione os novos nós do Cassandra e do ZooKeeper de dc-2 ao arquivo de configuração para 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>"

Procedimento para adicionar um novo data center

Neste procedimento, os data centers são nomeados da seguinte forma:

  • dc-1: o data center atual
  • dc-2: o novo data center
  1. Em dc-1, execute novamente o setup.sh nos nós originais do Cassandra com o novo arquivo de confiig dc-1 que inclui os nós do Cassandra de dc-2:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. No dc-1, execute novamente o setup.sh no nó do servidor de gerenciamento:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
  3. Em dc-2, instale apigee-setup em todos os nós. Consulte Instalar o utilitário de configuração da Apigee do Edge para mais informações.
  4. No dc-2, instale o Cassandra e o ZooKeeper nos nós apropriados:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. Em dc-2, execute o comando de recriação em todos os nós do Cassandra, especificando o nome da região de dc-1:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP para recriar dc-1
  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 em dc-2, instale o 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/de espera do Postgres para os nós do Postgres. O nó do Postgres em dc-1 é o mestre, e o nó do Postgres em dc-2 é o servidor em espera.

    Observação: se dc-1 já estiver configurado para ter dois nós do Postgres em execução no modo mestre/de espera, como parte deste procedimento, use o nó mestre do Postgres existente em dc-1 como o mestre e o nó do Postgres em dc-2 como o servidor em espera. Posteriormente neste procedimento, você cancelará o registro do servidor em espera do Postgres em dc-1.
    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 os dados do Postgres:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      > rm -rf /opt/apigee/data/apigee-postgresql/

      Observação: faça backup dos 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. Em dc-1, atualize a configuração de análise e defina as organizações.
    1. No nó do servidor de gerenciamento de dc-1, acesse o UUID do nó Postgres:
      > apigee-adminapi.sh servidores list -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --host localhost

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

      Observação: se dc-1 estiver configurada para ter dois nós do Postgres em execução no modo mestre/de espera, você verá dois endereços IP e UUIDs na saída. Salve os dois UUIDs. Com base nos IPs, você poderá determinar qual UUID é para o mestre e qual é para o nó de espera.
    2. No nó do servidor de gerenciamento de dc-2, receba o UUID do nó Postgres, conforme mostrado na etapa anterior. Salve esse valor.
    3. No nó do servidor de gerenciamento de dc-1, determine o nome dos grupos de análises e 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 souber os nomes dos grupos de análises e consumidores, use o seguinte comando para mostrá-los:
      > apigee-adminapi.sh analytics groups list --admin adminEmail --pwd adminPword --host localhost

      Esse comando retorna o nome do grupo de análises no campo "Nome" e o nome do grupo de consumidores no campo "grupos de consumidores".
    4. No nó do servidor de gerenciamento de dc-1, remova o servidor Postgres atual do grupo de análise:
      1. Remova o nó do Postgres do consumer-group:
        > apigee-adminapi.sh analytics groups consumer_groups datastores remove -g axgroup-001 -c consumer-group-001. -u UUID -Y --admin adminEmail --pwd adminPword --host apigee-admin.sh --host apigee-admin. Se


      2. Remova o nó 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 host

        Se dc-1 estiver configurado para ter dois nós do Postgres localhost, ou UUID-admin, -- UUID-
    5. No nó do servidor de gerenciamento de dc-1, adicione os novos servidores mestre/em espera 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 Post-UUID2 e corresponde ao nó in Postgres1 principal,
      2. Adicione os servidores PG ao grupo de consumidores como mestre/espera:
        > 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 de dc-2 ao grupo de análise:
      1. No nó do servidor de gerenciamento de dc-1, acesse os UUIDs dos nós Qpid em dc-2:
        > apigee-adminapi.sh lista de servidores -r dc-2 -p central -t qpid-server --admin adminEmail --pwd adminPword --host localhost
        aparecem no final dos dados das UUIDs de saída do servidor.
        Salve esses valores.
      2. No nó do servidor de gerenciamento de dc-1, adicione os nós 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 --hostid localhost_admin localhost > analytics-

      3. No nó do servidor de gerenciamento de dc-1, adicione os nós Qpid ao grupo de consumidores (execute os dois comandos):
        > apigee-adminapi.sh analytics groups consumer_groups consumidores add -g axgroup-001 -c consumer-group-001 -u "UUID_1" --admin admin-admin --pwd localhost_admin.

    7. Cancele o registro e exclua o antigo servidor em espera do Postgres de dc-1:
      1. Cancele o registro do servidor em espera dc-1 atual:
        > Os servidores em espera apigee-adminapi.sh cancelam o registro -u UUID -r dc-1 -p analytics -t postgres-server -Y --admin adminEmail --pwd adminPword --host localhost

        onde UUID é o nó em espera antigo Postgres.
      2. Exclua o servidor em espera dc-1 Postgres:
        Observação: esse comando não desinstala o nó do servidor Postgres. Ele só o remove da lista de nós de borda. Depois, desinstale o Postgres do nó, se necessário.
        > servidores apigee-adminapi.sh delete -u UUID --admin adminEmail --pwd adminPword --host localhost
  13. 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 "identityzone" WITH claim = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "system_traces" WITHplication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. Veja os keyspaces usando o comando:
        cqlsh> select * from system.schema_keyspaces;
      4. Saia de cqlsh:
        cqlsh> exit
  14. Execute o seguinte comando nodetool em todos os nós do Cassandra em dc-1 para liberar a memória:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP cleanup
  15. Para cada organização e ambiente que você quer oferecer suporte em todos os data centers:
    1. No nó do servidor de gerenciamento de 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 DDC
      na propriedade MP-PO2 do arquivo config-2 como o gateway definido pelo gateway_localhost do gateway.
    2. Adicione os novos processadores de mensagens à organização e ao ambiente:
      1. No nó do servidor de gerenciamento de dc-2, acesse os UUIDs dos nós do processador de mensagens em dc-2:
        > apigee-adminapi.sh lista de servidores -r dc-2 -p gateway-2 -t message-processor --admin adminEmail --pwd adminPword --host localhost
        no fim dos dados retornados pelos UUIDs dos dados retornados pelos UUIDs.
        Salve esses valores.
      2. No nó do servidor de gerenciamento de dc-1, para cada processador de mensagens em dc-2, adicione o processador de mensagens a um ambiente para a organização:
        > apigee-adminapi.sh orgs envs servers add -o orgName -e envName -u UUID --admin adminEmail --pwd adminPword --pwd adminPword
    3. No nó do servidor de gerenciamento de dc-1, verifique a organização:
      > apigee-adminapi.sh orgs apis deployment -o orgName -a apiProxyName --admin adminEmail --pwd adminPword --host localhost

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