En este documento, se describe cómo agregar un centro de datos (también llamado región) a un centro de datos existente.
Consideraciones antes de agregar un centro de datos
Antes de instalar un centro de datos, debes comprender cómo configurar los servidores OpenLDAP, ZooKeeper, Cassandra y Postgres en todos los centros de datos. También debes asegurarte de que los puertos necesarios estén abiertos entre los nodos de los dos centros de datos.
- OpenLDAP
Cada centro de datos tiene su propio servidor OpenLDAP configurado con la replicación habilitada. Cuando instales el nuevo centro de datos, debes configurar OpenLDAP para usar la replicación y debes volver a configurar el servidor OpenLDAP en el centro de datos existente para usar la replicación.
- ZooKeeper
Para la propiedad
ZK_HOSTS
de ambos centros de datos, especifica las direcciones IP o los nombres de DNS de todos los nodos de ZooKeeper de ambos centros de datos, en el mismo orden, y marca los nodos con el modificador “:observer”. Los nodos sin el modificador:observer
se denominan "votantes". Debes tener un número impar de "votantes" en tu configuración.En esta topología, el host de ZooKeeper en el host 9 es el observador:
En el ejemplo de archivo de configuración que se muestra a continuación, el nodo 9 está etiquetado con el modificador
:observer
para que tengas cinco votantes: los nodos 1, 2, 3, 7 y 8.Para la propiedad
ZK_CLIENT_HOSTS
de cada centro de datos, especifica las direcciones IP o los nombres de DNS solo de los nodos de ZooKeeper del centro de datos, en el mismo orden, para todos los nodos de ZooKeeper del centro de datos. - Cassandra
Todos los centros de datos deben tener la misma cantidad de nodos de Cassandra.
Para
CASS_HOSTS
de cada centro de datos, asegúrate de especificar todas las direcciones IP de Cassandra (no los nombres de DNS) para ambos centros de datos. Para el centro de datos 1, primero enumera los nodos de Cassandra en ese centro de datos. Para el centro de datos 2, primero enumera los nodos de Cassandra en ese centro de datos. Muestra los nodos de Cassandra en el mismo orden para todos los nodos de Cassandra del centro de datos.Todos los nodos de Cassandra deben tener un sufijo ':d,r'; por ejemplo, 'ip:1,1 = centro de datos 1 y bastidor/zona de disponibilidad 1 y 'ip:2,1 = centro de datos 2 y bastidor/zona de disponibilidad 1.
Por ejemplo, "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"
El primer nodo del bastidor o la zona de disponibilidad 1 de cada centro de datos se usará como servidor de origen. En este modelo de implementación, la configuración de Cassandra se verá de la siguiente manera:
-
Postgres
De forma predeterminada, Edge instala todos los nodos de Postgres en modo maestro. Sin embargo, cuando tienes varios centros de datos, configuras los nodos de Postgres para que usen la replicación maestra-en espera, de modo que, si falla el nodo maestro, el nodo en espera pueda continuar con el tráfico del servidor. Por lo general, configuras el servidor principal de Postgres en un centro de datos y el servidor en espera en el segundo centro de datos.
Si el centro de datos existente ya está configurado para tener dos nodos de Postgres en ejecución en modo maestro/en espera, como parte de este procedimiento, cancela el registro del nodo en espera existente y reemplázalo por un nodo en espera en el nuevo centro de datos.
En la siguiente tabla, se muestra la configuración de Postgres antes y después para ambas situaciones:
Antes Después Nodo principal de Postgres único en dc-1
Nodo principal de Postgres en dc-1
Nodo de Postgres en espera en dc-2
Nodo principal de Postgres en dc-1
Nodo de Postgres en espera en dc-1
Nodo principal de Postgres en dc-1
Nodo de Postgres en espera en dc-2
Cancela el registro del nodo de Postgres en espera anterior en dc-1
- Requisitos de puertos
Debes asegurarte de que los puertos necesarios estén abiertos entre los nodos de los dos centros de datos. Para ver un diagrama de puertos, consulta Requisitos de puertos.
Actualiza el centro de datos existente
Para agregar un centro de datos, debes realizar los pasos para instalar y configurar los nuevos nodos del centro de datos, pero también debes actualizar los nodos del centro de datos original. Estas modificaciones son necesarias porque agregas nodos nuevos de Cassandra y ZooKeeper al nuevo centro de datos al que debe poder acceder el centro de datos existente, y debes volver a configurar OpenLDAP para usar la replicación.
Crea los archivos de configuración
A continuación, se muestran los archivos de configuración silenciosos de los dos centros de datos, en los que cada centro de datos tiene 6 nodos, como se muestra en Topologías de instalación. Ten en cuenta que el archivo de configuración de dc-1 agrega parámetros de configuración adicionales a los siguientes elementos:
- Configura OpenLDAP con replicación en dos nodos de OpenLDAP.
- Agrega los nuevos nodos de Cassandra y ZooKeeper de dc-2 al archivo de configuración de 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>" |
Agrega un nuevo centro de datos
Usa el siguiente procedimiento para instalar un nuevo centro de datos.
En el procedimiento, los centros de datos tienen los siguientes nombres:
- dc-1: El centro de datos existente
- dc-2: Es el nuevo centro de datos.
Para agregar un nuevo centro de datos, sigue estos pasos:
- En dc-1, vuelve a ejecutar setup.sh en los nodos de Cassandra originales con el nuevo archivo de configuración dc-1 que incluye los nodos de Cassandra de dc-2:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
- En dc-1, vuelve a ejecutar setup.sh en el nodo del servidor de administración:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
- En dc-2, instala
apigee-setup
en todos los nodos. Consulta Cómo instalar la utilidad apigee-setup de Edge para obtener más información. - En dc-2, instala Cassandra y ZooKeeper en los nodos adecuados:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
- En dc-2, ejecuta el comando de reconstrucción en todos los nodos de Cassandra y especifica el nombre de la región de dc-1:
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1
Solo debes pasar tu nombre de usuario y contraseña si habilitaste la autenticación de JMX para Cassandra.
- En dc-2, instala el servidor de administración en el nodo adecuado:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
- En el nodo del servidor de administración en dc-2, instala
apigee-provision
, que instala la utilidadapigee-adminapi.sh
:/opt/apigee/apigee-service/bin/apigee-service apigee-provision install
- En dc-2, instala las rutas y los procesadores de mensajes en los nodos adecuados:
/opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
- En dc-2, instala Qpid en los nodos adecuados:
/opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
- En dc-2, instala Postgres en el nodo apropiado:
/opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
- Configura el maestro o el nodo de espera de Postgres. El nodo de Postgres en dc-1 es el principal, y el nodo de Postgres en dc-2 es el servidor de resguardo.
- En el nodo principal de dc-1, edita el archivo de configuración para establecer lo siguiente:
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- Habilita la replicación en el nuevo elemento principal:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
- En el nodo de espera de dc-2, edita el archivo de configuración para establecer lo siguiente:
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- En el nodo de espera de dc-2, detén el servidor y, luego, borra los datos existentes de Postgres:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
rm -rf /opt/apigee/data/apigee-postgresql/
Si es necesario, puedes crear una copia de seguridad de estos datos antes de borrarlos.
- Configura el nodo en espera en dc-2:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- En el nodo principal de dc-1, edita el archivo de configuración para establecer lo siguiente:
- En dc-1, actualiza la configuración de Analytics y configura las organizaciones.
- En el nodo del servidor de administración de dc-1, obtén el UUID del nodo de Postgres:
apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \ --admin adminEmail --pwd adminPword --host localhost
El UUID aparece al final de los datos que se muestran. Guarda ese valor.
- En el nodo del servidor de administración de dc-2, obtén el UUID del nodo de Postgres como se muestra en el paso anterior. Guarda ese valor.
- En el nodo del servidor de administración de dc-1, determina el nombre de los grupos de consumidores y de estadísticas. Muchos de los comandos que se indican a continuación requieren esa información.
De forma predeterminada, el nombre del grupo de estadísticas es "axgroup-001" y el nombre del grupo de consumidores es "consumer-group-001". En el archivo de configuración silenciosa de una región, puedes establecer el nombre del grupo de estadísticas con la propiedad
AXGROUP
.Si no conoces los nombres de los grupos de estadísticas y consumidores, usa el siguiente comando para mostrarlos:
apigee-adminapi.sh analytics groups list \ --admin adminEmail --pwd adminPword --host localhost
Este comando muestra el nombre del grupo de estadísticas en el campo de nombre y el nombre del grupo de consumidores en el campo consumer-groups.
- En el nodo del servidor de administración de dc-1, quita el servidor Postgres existente del grupo de análisis:
- Quita el nodo de Postgres del 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
Si dc-1 está configurado para tener dos nodos de Postgres en ejecución en el modo maestro/en espera, quita ambos:
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
- Quita el nodo Postgres del grupo de estadísticas:
apigee-adminapi.sh analytics groups postgres_server remove \ -g axgroup-001 -u UUID -Y --admin adminEmail \ --pwd adminPword --host localhost
Si dc-1 está configurado para tener dos nodos de Postgres en ejecución en modo principal o en modo de espera, quita ambos:
apigee-adminapi.sh analytics groups postgres_server \ remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \ --pwd adminPword --host localhost
- Quita el nodo de Postgres del grupo de consumidores:
- En el nodo del servidor de administración de dc-1, agrega los nuevos servidores Postgres principales o de resguardo al grupo de análisis:
- Agrega ambos servidores de Postgres al grupo de estadísticas:
apigee-adminapi.sh analytics groups postgres_server \ add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
Aquí, UUID_1 corresponde al nodo principal de Postgres en dc-1 y UUID_2 corresponde al nodo de Postgres en espera en dc-2.
- Agrega los servidores de PG al grupo de consumidores como principal o en 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
- Agrega ambos servidores de Postgres al grupo de estadísticas:
- Agrega los servidores Qpid de dc-2 al grupo de estadísticas:
- En el nodo del servidor de administración de dc-1, obtén los UUID de los nodos de Qpid en dc-2:
apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \ --admin adminEmail --pwd adminPword --host localhost
Los UUIDs aparecen al final de los datos que se muestran. Guarda esos valores.
- En el nodo del servidor de administración de dc-1, agrega los nodos Qpid al
grupo de estadísticas (ejecuta ambos 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
- En el nodo del servidor de administración de dc-1, agrega los nodos de Qpid al
grupo de consumidores (ejecuta ambos 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
- En el nodo del servidor de administración de dc-1, obtén los UUID de los nodos de Qpid en dc-2:
- Cancela el registro y borra el servidor de Postgres en espera anterior de dc-1:
- Cancela el registro del servidor en espera de Postgres dc-1 existente:
apigee-adminapi.sh servers deregister -u UUID -r dc-1 \ -p analytics -t postgres-server -Y --admin adminEmail \ --pwd adminPword --host localhost
En el que UUID es el nodo de Postgres en espera anterior en dc-1.
- Borra el servidor de Postgres en espera dc-1 existente:
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- Cancela el registro del servidor en espera de Postgres dc-1 existente:
- En el nodo del servidor de administración de dc-1, obtén el UUID del nodo de Postgres:
- Actualiza los espacios de claves de Cassandra con el factor de replicación correcto para los dos centros de datos. Solo debes ejecutar este paso una vez en cualquier servidor de Cassandra en cualquiera de los centros de datos:
- Inicia la utilidad
cqlsh
de Cassandra:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- Ejecuta los siguientes comandos de CQL en el mensaje "cqlsh>" para establecer los niveles de replicación
de los espacios de claves de Cassandra:
ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- Usa el comando para ver los espacios de claves:
select * from system.schema_keyspaces;
- Salir de
cqlsh
:exit
- Inicia la utilidad
- Ejecuta el siguiente comando
nodetool
en todos los nodos de Cassandra en dc-1 para liberar la memoria:/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup
Solo debes pasar tu nombre de usuario y contraseña si habilitaste la autenticación de JMX para Cassandra.
- Para cada organización y cada entorno que quieras admitir en los centros de datos, haz lo siguiente:
- En el nodo del servidor de administración de dc-1, agrega el nuevo MP_POD a la organización:
apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \ --admin adminEmail --pwd adminPword --host localhost
En el que gateway-2 es el nombre del pod de la puerta de enlace, como lo define la propiedad MP_POD en el archivo de configuración dc-2.
- Agrega los nuevos procesadores de mensajes a la organización y al entorno:
- En el nodo del servidor de administración de dc-2, obtén los UUIDs de los nodos de Message Processor en dc-2:
apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \ -t message-processor --admin adminEmail --pwd adminPword --host localhost
Los UUIDs aparecen al final de los datos que se muestran. Guarda esos valores.
- En el nodo del servidor de administración de dc-1, para cada Message Processor
en dc-2, agrega el Message Processor a un entorno para la organización:
apigee-adminapi.sh orgs envs servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- En el nodo del servidor de administración de dc-2, obtén los UUIDs de los nodos de Message Processor en dc-2:
- En el nodo del servidor de administración de dc-1, verifica la organización:
apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \ --admin adminEmail --pwd adminPword --host localhost
En el que apiProxyName es el nombre de un proxy de API implementado en la organización.
- En el nodo del servidor de administración de dc-1, agrega el nuevo MP_POD a la organización: