Aggiungere un data center

Questo documento descrive come aggiungere un data center (detto anche regione) a un data center esistente.

Considerazioni da fare prima di aggiungere un data center

Prima di installare l'aggiunta di un data center, devi comprendere come configurare i server OpenLDAP, ZooKeeper, Cassandra e Postgres nei data center. Devi inoltre assicurarti che le porte necessarie siano aperte tra i nodi nei due data center.

  • OpenLDAP

    Ogni data center ha il proprio server OpenLDAP configurato con la replica abilitata. Quando installi il nuovo data center, devi configurare OpenLDAP per l'utilizzo della replica e riconfigurare il server OpenLDAP nel data center esistente perché utilizzi la replica.

  • ZooKeeper

    Per la proprietà ZK_HOSTS di entrambi i data center, specifica gli indirizzi IP o i nomi DNS di tutti i nodi ZooKeeper di entrambi i data center, nello stesso ordine, e contrassegna tutti i nodi con il modificatore ":observer". I nodi senza il modificatore :observer sono chiamati "votanti". La tua configurazione deve contenere un numero dispari di "votanti".

    In questa topologia, l'host ZooKeeper sull'host 9 è l'osservatore:

    Nel file di configurazione di esempio mostrato di seguito, al nodo 9 viene assegnato il modificatore :observer in modo da avere cinque votanti: nodi 1, 2, 3, 7 e 8.

    Per la proprietà ZK_CLIENT_HOSTS di ogni data center, specifica gli indirizzi IP o i nomi DNS solo dei nodi ZooKeeper nel data center, nello stesso ordine, per tutti i nodi ZooKeeper nel data center.

  • Cassandra

    Per CASS_HOSTS per ogni data center, assicurati di specificare tutti gli indirizzi IP di Cassandra (non i nomi DNS) per entrambi i data center. Per il data center 1, elenca per primi i nodi Cassandra al suo interno. Per il data center 2, elenca per primi i nodi Cassandra al suo interno. Elenca i nodi Cassandra nello stesso ordine per tutti i nodi Cassandra nel data center.

    Tutti i nodi Cassandra devono avere un suffisso ":d,r"; ad esempio "ip:1,1 = data center 1 e zona rack/disponibilità 1 e "ip:2,1 = data center 2 e rack/zona di disponibilità 1".

    Ad esempio, "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.160.124.124."

    Il primo nodo nella zona rack/disponibilità 1 di ciascun data center verrà utilizzato come server seed. In questo modello di deployment, la configurazione di Cassandra sarà simile alla seguente:

  • Postgres

    Per impostazione predefinita, Edge installa tutti i nodi Postgres in modalità master. Tuttavia, in presenza di più data center, configuri i nodi Postgres in modo che utilizzino la replica in standby master, in modo che, in caso di errore del nodo master, il nodo standby possa continuare a indirizzare il traffico del server. In genere, il server Postgres master viene configurato in un data center e il server standby nel secondo data center.

    Se il data center esistente è già configurato con due nodi Postgres in esecuzione in modalità master/standby, nell'ambito di questa procedura annulla la registrazione del nodo in standby esistente e sostituiscilo con un nodo standby nel nuovo data center.

    La tabella seguente mostra la configurazione prima e dopo la configurazione di Postgres per entrambi gli scenari:

    Prima Dopo

    Singolo nodo Postgres master in dc-1

    Nodo master Postgres in dc-1

    Nodo Postgres in standby in dc-2

    Nodo master Postgres in dc-1

    Nodo Postgres in standby in dc-1

    Nodo master Postgres in dc-1

    Nodo Postgres in standby in dc-2

    Annulla la registrazione del vecchio nodo Standby Postgres in dc-1

  • Requisiti per le porte

    Devi assicurarti che le porte necessarie siano aperte tra i nodi nei due data center. Per uno schema delle porte, vedi Requisiti delle porte.

Aggiornamento del data center esistente

L'aggiunta di un data center richiede l'esecuzione della procedura di installazione e configurazione dei nuovi nodi del data center, ma anche l'aggiornamento dei nodi nel data center originale. Queste modifiche sono necessarie perché nel nuovo data center stai aggiungendo nuovi nodi Cassandra e ZooKeeper che devono essere accessibili al data center esistente. Devi riconfigurare OpenLDAP per utilizzare la replica.

Creazione dei file di configurazione

Di seguito sono riportati i file di configurazione silenziosa per i due data center, in cui ogni data center ha sei nodi, come mostrato in Topologie di installazione. Nota che il file di configurazione per dc-1 aggiunge ulteriori impostazioni a:

  • Configura OpenLDAP con la replica su due nodi OpenLDAP.
  • Aggiungere i nuovi nodi Cassandra e ZooKeeper da dc-2 al file di configurazione per 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>"

Aggiungi un nuovo data center

Utilizza la procedura riportata di seguito per installare un nuovo data center.

Nella procedura, i data center hanno i seguenti nomi:

  • dc-1: il data center esistente
  • dc-2: il nuovo data center

Per aggiungere un nuovo data center:

  1. In dc-1, esegui nuovamente setup.sh sui nodi Cassandra originali con il nuovo file di configurazione dc-1 che include i nodi Cassandra da dc-2:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. Su dc-1, esegui nuovamente setup.sh sul nodo del server di gestione:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
  3. Su dc-2, installa apigee-setup su tutti i nodi. Per ulteriori informazioni, consulta Installare l'utilità Edge apigee-setup.
  4. Su dc-2, installa Cassandra e ZooKeeper sui nodi appropriati:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. Su dc-2, esegui il comando rebuild su tutti i nodi Cassandra, specificando il nome della regione di dc-1:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    Devi passare il nome utente e la password solo se hai attivato l'autenticazione JMX per Cassandra.

  6. Su dc-2, installa il server di gestione sul nodo appropriato:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. Sul nodo del server di gestione in dc-2, installa apigee-provision, che installa l'utilità apigee-adminapi.sh:
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. Su dc-2, installa route e processori di messaggi sui nodi appropriati:
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. Su dc-2, installa Qpid sui nodi appropriati:
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. Su dc-2, installa Postgres sul nodo appropriato:
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. Configura il master/standby di Postgres per i nodi Postgres. Il nodo Postgres in dc-1 è il master, mentre il nodo Postgres in dc-2 è il server standby.
    1. Sul nodo master in dc-1, modifica il file di configurazione per impostare:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. Abilita la replica sul nuovo master:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. Nel nodo standby in dc-2, modifica il file di configurazione per impostare:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    4. Sul nodo standby in dc-2, arresta il server ed elimina tutti i dati Postgres esistenti:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      rm -rf /opt/apigee/data/apigee-postgresql/

      Se necessario, puoi eseguire il backup di questi dati prima di eliminarli.

    5. Configura il nodo standby in dc-2:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. Su dc-1, aggiorna la configurazione dell'analisi e configura le organizzazioni.
    1. Sul nodo del server di gestione di dc-1, ottieni l'UUID del nodo Postgres:
      apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \
        --admin adminEmail --pwd adminPword --host localhost

      L'UUID viene visualizzato alla fine dei dati restituiti. Salva questo valore.

    2. Sul nodo del server di gestione di dc-2, recupera l'UUID del nodo Postgres, come mostrato nel passaggio precedente. Salva questo valore.
    3. Sul nodo del server di gestione di dc-1, determina il nome dei gruppi di analisi e consumatori. Molti dei comandi seguenti richiedono queste informazioni.

      Per impostazione predefinita, il nome del gruppo di analisi è "axgroup-001" e il nome del gruppo di consumatori è "consumer-group-001". Nel file di configurazione invisibile per una regione, puoi impostare il nome del gruppo di analisi utilizzando la proprietà AXGROUP.

      Se hai dubbi sui nomi dei gruppi di analisi e consumatori, utilizza il seguente comando per visualizzarli:

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

      Questo comando restituisce il nome del gruppo di analisi nel campo name e il nome del gruppo consumer nel campo consumer-groups.

    4. Sul nodo del server di gestione di dc-1, rimuovi il server Postgres esistente dal gruppo di analisi:
      1. Rimuovi il nodo Postgres dal gruppo consumer:
        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 dc-1 è configurato in modo da avere due nodi Postgres in esecuzione in modalità master/standby, rimuovi entrambi:

        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. Rimuovi il nodo Postgres dal gruppo di analisi:
        apigee-adminapi.sh analytics groups postgres_server remove \
          -g axgroup-001 -u UUID -Y --admin adminEmail \
          --pwd adminPword --host localhost

        Se dc-1 è configurato in modo da avere due nodi Postgres in esecuzione in modalità master/standby, rimuovi entrambi:

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. Sul nodo del server di gestione di dc-1, aggiungi i nuovi server Postgres master/in standby al gruppo di analisi:
      1. Aggiungi entrambi i server Postgres al gruppo di analisi:
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        Qui UUID_1 corrisponde al nodo Postgres master in dc-1, mentre UUID_2 corrisponde al nodo Postgres in standby in dc-2.

      2. Aggiungi i server di PG al gruppo consumer come master/in 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. Aggiungi i server Qpid da dc-2 al gruppo di analisi:
      1. Sul nodo del server di gestione di dc-1, ottieni gli UUID dei nodi Qpid in dc-2:
        apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \
          --admin adminEmail --pwd adminPword --host localhost

        Gli UUID vengono visualizzati alla fine dei dati restituiti. Salva questi valori.

      2. Sul nodo del server di gestione di dc-1, aggiungi i nodi Qpid al gruppo di analisi (esegui entrambi i comandi):
        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. Sul nodo del server di gestione di dc-1, aggiungi i nodi Qpid al gruppo consumer (esegui entrambi i comandi):
        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
    7. Annulla la registrazione ed elimina il vecchio server standby Postgres da dc-1:
      1. Annulla la registrazione del server standby Postgres dc-1 esistente:
        apigee-adminapi.sh servers deregister -u UUID -r dc-1 \
          -p analytics -t postgres-server -Y --admin adminEmail \
          --pwd adminPword --host localhost

        dove UUID è il vecchio nodo Postgres in standby in dc-1.

      2. Elimina il server standby dc-1 Postgres esistente:
        apigee-adminapi.sh servers delete -u UUID \
          --admin adminEmail --pwd adminPword --host localhost
  13. Aggiorna gli spazi delle chiavi di Cassandra con il fattore di replica corretto per i due data center. Devi eseguire questo passaggio solo una volta su qualsiasi server Cassandra in uno dei due data center:
    1. Avvia l'utilità Cassandra cqlsh:
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Esegui questi comandi CQL al prompt "cqlsh>" per impostare i livelli di replica per gli spazi delle chiavi 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. Visualizza gli spazi delle chiavi utilizzando il comando:
        select * from system.schema_keyspaces;
      4. Esci da cqlsh:
        exit
  14. Esegui questo comando nodetool su tutti i nodi Cassandra in dc-1 per liberare memoria:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    Devi passare il nome utente e la password solo se hai attivato l'autenticazione JMX per Cassandra.

  15. Per ogni organizzazione e per ogni ambiente che vuoi supportare nei vari data center:
    1. Sul nodo del server di gestione di dc-1, aggiungi il nuovo MP_POD all'organizzazione:
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

      Dove gateway-2 è il nome del pod del gateway come definito dalla proprietà MP_POD nel file di configurazione dc-2.

    2. Aggiungi i nuovi processori di messaggi all'organizzazione e all'ambiente:
      1. Sul nodo del server di gestione di dc-2, ottieni gli UUID dei nodi del processore di messaggi in dc-2:
        apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \
          -t message-processor --admin adminEmail --pwd adminPword --host localhost

        Gli UUID vengono visualizzati alla fine dei dati restituiti. Salva questi valori.

      2. Sul nodo del server di gestione di dc-1, per ogni processore di messaggi in dc-2, aggiungi il processore di messaggi a un ambiente per l'organizzazione:
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
          -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. Sul nodo del server di gestione di dc-1, controlla l'organizzazione:
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

      Dove apiProxyName è il nome di un proxy API di cui è stato eseguito il deployment nell'organizzazione.