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 adicionar um data center, é preciso entender como configurar os servidores SymasLDAP, ZooKeeper, Cassandra e Postgres em todos os 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 um servidor SymasLDAP configurado com a replicação ativada. Ao instalar o novo data center, configure o SymasLDAP para usar a replicação e reconfigure 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 de ambos os data centers, na mesma ordem, e marque os nós com o modificador ":observer". Os nós sem o modificador:observer
são chamados de "votantes". Você precisa ter um número ímpar de "votantes" na sua configuração.Nessa 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
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
em cada data center, especifique todos os endereços IP do Cassandra (não nomes DNS) para os dois data centers. Para o data center 1, liste primeiro os nós do Cassandra. Para o data center 2, liste primeiro os nós do Cassandra. 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 seed. Neste 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 principal. No entanto, quando você tem vários data centers, configure os nós do Postgres para usar a replicação principal-standby. Assim, se o nó principal falhar, o nó standby poderá continuar atendendo ao tráfego. Normalmente, você configura o servidor Postgres principal em um data center e o servidor em 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 principal/standby, como parte deste procedimento, cancele o registro do nó standby atual e substitua-o por um nó standby no novo data center.
A tabela a seguir mostra a configuração do Postgres antes e depois para os dois cenários:
Antes Depois Único nó mestre do Postgres em dc-1
Nó mestre do Postgres em dc-1
Nó do 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ó do Postgres em espera em dc-2
Cancelar o registro do nó Standby Postgres antigo em dc-1
- Requisitos de porta
Verifique se as portas necessárias estão abertas entre os nós nos dois data centers. Para um diagrama de portas, consulte Requisitos de porta.
Atualizar o data center atual
Para adicionar um data center, é necessário instalar e configurar os novos nós, além de 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 no novo data center, que precisam estar acessíveis ao data center atual. Além disso, é necessário reconfigurar o SymasLDAP para usar a replicação.
Como criar os arquivos de configuração
Abaixo estão os arquivos de configuração silenciosa para os dois data centers, em que cada um tem seis nós, conforme mostrado em Topologias de instalação. O arquivo de configuração para dc-1 adiciona outras configurações a:
- Configure o SymasLDAP com replicação em dois nós do SymasLDAP.
- Adicione os novos nós do Cassandra e do ZooKeeper de dc-2 ao arquivo de configuração 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>" |
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:
- Em dc-1, execute setup.sh novamente nos nós originais do Cassandra com o novo arquivo de configuração dc-1
que inclui os nós do Cassandra de dc-2:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
- 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 você estiver usando a monetização, execute novamente o comando de configuração da monetização:
/opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1
- Em dc-2, instale
apigee-setup
em todos os nós. Consulte Instalar o utilitário apigee-setup do Edge para mais informações. - Em dc-2, instale o Cassandra e o ZooKeeper nos nós apropriados:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
- 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 [-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.
- Em dc-2, instale o servidor de gerenciamento no nó apropriado:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
- No nó do servidor de gerenciamento em dc-2, instale
apigee-provision
, que instala o utilitárioapigee-adminapi.sh
:/opt/apigee/apigee-service/bin/apigee-service apigee-provision install
- Em dc-2, instale as rotas e os processadores de mensagens nos nós adequados:
/opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
- Em dc-2, instale o Qpid nos nós adequados:
/opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
- Em dc-2, instale o Postgres no nó apropriado:
/opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
- Configure o mestre/standby 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 de espera.
- No nó principal em dc-1, edite o arquivo de configuração para definir:
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- Ative a replicação no novo mestre:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
- No nó em espera em dc-2, edite o arquivo de configuração para definir:
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- No nó em espera em dc-2, pare o servidor e exclua os dados do Postgres atuais:
/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.
- Configure o nó em espera em dc-2:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- No nó principal em dc-1, edite o arquivo de configuração para definir:
- Em dc-1, atualize a configuração de análise e configure as organizações.
- No nó do servidor de gerenciamento de 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 fim dos dados retornados. Salve esse valor.
- No nó do servidor de gerenciamento de dc-2, extraia o UUID do nó do Postgres conforme mostrado na etapa anterior. Salve esse valor.
- No nó do servidor de gerenciamento de 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 souber os nomes dos grupos de análise e de 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álise no campo "name" e o nome do grupo de consumidores no campo "consumer-groups".
- No nó do servidor de gerenciamento de dc-1, remova o servidor Postgres
atual do grupo de análise:
- 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 dc-1 estiver configurado para ter dois nós do Postgres em execução no modo master/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
- 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 dc-1 estiver configurado para ter dois nós do Postgres em execução no modo principal/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
- Remova o nó do Postgres do grupo de consumidores:
- No nó do servidor de gerenciamento de dc-1, adicione os novos servidores Postgres principais/em espera ao grupo de análise:
- 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ó do Postgres em espera em dc-2.
- Adicione os servidores do PG ao grupo de consumidores como principal/em 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
- Adicione os dois servidores do Postgres ao grupo de análise:
- Adicione os servidores Qpid de dc-2 ao grupo de análise:
- No nó do servidor de gerenciamento de 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.
- No nó do servidor de gerenciamento de 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
- No nó do servidor de gerenciamento de 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 a monetização, adicione os nós do Qpid ao grupo MINT no nó do servidor de gerenciamento de 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
- No nó do servidor de gerenciamento de dc-1, receba os UUIDs dos nós do Qpid
em dc-2:
- Cancele o registro e exclua o antigo servidor standby do Postgres de dc-1:
- Cancele o registro do servidor de espera do Postgres dc-1 atual:
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 antigo nó standby do Postgres em dc-1.
- Exclua o servidor standby do Postgres dc-1 atual:
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- Cancele o registro do servidor de espera do Postgres dc-1 atual:
- No nó do servidor de gerenciamento de dc-1, receba o UUID do nó do Postgres:
- Atualize os espaços de chaves do Cassandra com o fator de replicação correto para os dois data centers. Você
só precisa executar esta etapa uma vez em qualquer servidor do Cassandra em qualquer data center:
- Inicie o utilitário
cqlsh
do Cassandra:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- Execute os seguintes comandos CQL no prompt "cqlsh>" para definir os níveis de replicação
para keyspaces do 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' };
- Use o comando a seguir para ver os keyspaces:
SELECT * FROM system_schema.keyspaces;
- Saia de
cqlsh
:exit
- Inicie o utilitário
- Execute o comando
nodetool
a seguir em todos os nós do Cassandra em 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.
- Para cada organização e ambiente que você quer oferecer suporte em data centers:
- 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 localhost
Em que gateway-2 é o nome do pod de gateway, conforme definido pela propriedade MP_POD no arquivo de configuração dc-2.
- Adicione os novos processadores de mensagens à organização e ao ambiente:
- No nó do servidor de gerenciamento de dc-2, receba os UUIDs dos nós do
processador de mensagens em 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.
- 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 da organização:
apigee-adminapi.sh orgs envs servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- No nó do servidor de gerenciamento de dc-2, receba os UUIDs dos nós do
processador de mensagens em dc-2:
- No nó do servidor de gerenciamento de 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.
- No nó do servidor de gerenciamento de dc-1, adicione o novo MP_POD à organização:
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