Esta é a documentação da Apigee e da Apigee híbrida.
    Confira a documentação da Apigee Edge.
  
Sintoma
    Ao replicar dados durante uma expansão multirregional, o status
    CassandraDataReplication pode mostrar um estado de erro e a replicação de dados pode falhar.
  
Mensagem de erro
Ao usar
    
      kubectl para visualizar o status da recriação:
  kubectl -n apigee get apigeeds \
  -o jsonpath="{.items[].status.cassandraDataReplication}{'\n'}"
Você verá que um ou mais pods do Cassandra mostram um estado de erro, e uma mensagem informando que a recriação falhou. Por exemplo:
{
  "rebuildDetails": {
    "apigee-cassandra-default-0": {
      "message": "failed to rebuild from us-west1: java.lang.IllegalStateException : Unable to find sufficient sources for streaming range (-8567285182390470134,-8567154549835592965] in keyspace system_distributed",
      "state": "error",
      "updated": 1641581899
    },
    …
  }
}Causas possíveis
| Causa | Descrição | Instruções de solução de problemas aplicáveis para | 
|---|---|---|
| Região de origem incorreta | Um valor incorreto foi especificado para source.region no arquivo YAML de replicação de dados do Cassandra. | 
      Apigee híbrido | 
| Problemas de conectividade de rede | Pode haver problemas de conectividade de rede entre os pods do Cassandra em diferentes data centers. | Apigee híbrido | 
Etapas comuns do diagnóstico
- Busque o status da replicação de dados:
kubectl -n apigee get apigeeds \
-o jsonpath="{.items[].status.cassandraDataReplication}{'\n'}" - Se for exibido um erro com uma mensagem semelhante à especificada em Mensagem de erro, isso indica que você está observando esse problema.
 
Causa: região de origem incorreta
    Se você especificar uma região de origem (datacenter) no arquivo YAML de replicação de dados
    diferente da datacenter de origem real, a replicação de dados
    falhará. Siga as etapas em Diagnóstico para analisar esse cenário
    e realizar as etapas em Resolução para corrigi-lo.
  
Diagnóstico
- Liste todos os pods do Cassandra na região de origem:
kubectl -n apigee get pods -l app=apigee-cassandra
 - Encontre o valor 
datacenterreal de qualquer um dos pods do Cassandra retornados na etapa 1:kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u JMX_user -pw JMX_password status
 - Receba o valor usado para 
source.regionno arquivo de recursos personalizados (YAML) de replicação de dados do Cassandra criado em Implantação multirregional. Se você estiver usando o nome de arquivo de exemplo encontrado na documentação de implantação multirregional, o arquivo precisará ser nomeado comodatareplication.yaml.cat datareplication.yaml
Resultados de exemplo:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: apigee-hybrid-example-org force: false source: region: "us-west1"
 Verifique o resultado da saída
nodetool statuse confira se o valor dedatacentercorresponde ou não ao valorsource.region:kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u jmxuser -pw iloveapis123 status
Resultados de exemplo:
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.104.13.2 491.84 KiB 256 100.0% 7254711c-fe0a-4b34-b50f-861109f97936 ra-1 UN 10.104.11.3 527.36 KiB 256 100.0% 5ec389f0-fd67-4de6-9f21-172d5899ff78 ra-1 UN 10.104.12.7 838.46 KiB 256 100.0% 7a88be82-1f81-4117-86e3-2cda434c0878 ra-1
- O 
source.region(us-west1) do arquivodatareplication.yamlnão corresponde ao valor realdatacenter(dc-1) da saída de statusnodetool. Siga as etapas em Resolução para corrigir a configuração. 
Resolução
    Para corrigir a replicação de dados, você precisará excluir o job de replicação e criá-lo
    com o nome datacenter correto. Siga as etapas abaixo:
  
- Exclua o processo de replicação de dados atual. Se você estiver usando o nome de arquivo de exemplo encontrado na
        
documentação de implantação multirregional, o arquivo precisará ser nomeado como
      
datareplication.yaml.kubectl delete -f datareplication.yaml
 - Atualize o nome da região no arquivo YAML para o valor 
datacentercorreto, por exemplo,dc-1:apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: apigee-hybrid-example-org force: false source: region: "dc-1"
 - Aplique a replicação de dados atualizada:
kubectl apply -f datareplication.yaml
 - Verifique o status da recriação usando o comando a seguir e confira se o estado de erro
        relatado anteriormente não aparece mais:
kubectl -n apigee get apigeeds \ -o jsonpath="{.items[].status.cassandraDataReplication}{'\n'}" - Se o problema persistir, acesse Causa: problemas de conectividade de rede.
 
Causa: problemas de conectividade de rede
O erro de replicação de dados também pode ser resultado de problemas de conectividade entre os nós do Cassandra.
Diagnóstico
Execute as etapas a seguir para analisar esse cenário:
- Liste todos os pods do Cassandra:
# list cassandra pods kubectl -n=apigee get pods -l app=apigee-cassandra
 - Execute os comandos a seguir para telnet para o primeiro pod do Cassandra no
      segundo data center (
dc-2) do primeiro pod do Cassandra no primeiro data center (dc-1), usando a porta7001:k debug -it apigee-cassandra-default-0 -n apigee --image=nginx -- sh curl -v telnet://DC_2_APIGEE_CASSANDRA_DEFAULT_0_POD_IP:7001
 - Se o telnet tiver sido bem-sucedido, será exibido um resultado semelhante ao seguinte:
* Rebuilt URL to: telnet://10.0.4.10:7001/ * Trying 10.0.4.10... * TCP_NODELAY set * Connected to 10.0.4.10 (10.0.4.10) port 7001 (#0)
 - Caso contrário, será exibido um erro semelhante ao seguinte:
* Rebuilt URL to: telnet://10.0.4.10:7001/ * Trying 10.0.4.10... * TCP_NODELAY set * connect to 10.0.4.10 port 7001 failed: Connection refused * Failed to connect to 10.0.4.10 port 7001: Connection refused * Closing connection 0 curl: (7) Failed to connect to 10.0.4.10 port 7001: Connection refused
A falha de conectividade do pod do Cassandra em um data center para o pod do Cassandra em outro data center indica que deve haver uma restrição de firewall ou algum tipo de problema de conectividade de rede.
 
Resolução
- Se essa implantação da Apigee híbrida estiver no GKE, verifique se alguma regra de firewall está definida para bloquear o tráfego de um data center para outro e analise o problema de conectividade de rede consultando VPC Visão geral das regras de firewall.
 - Se essa implantação da Apigee híbrida estiver no GKE On-Prem, trabalhe com a equipe de rede relevante e analise o problema de conectividade de rede.
 
Se o problema persistir, acesse Precisa de informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o Google Cloud Costumer Care:
- O ID do projeto do Google Cloud.
 - A organização da Apigee híbrida
 - Os arquivos 
overrides.yamlda origem e das novas regiões, mascarando qualquer informação confidencial. - O arquivo YAML 
CassandraDataReplication. - Saída 
nodetool statusdo Cassandra:kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u JMX_user -pw JMX_password status
 - Saída 
nodetool describeclusterdo Cassandra:kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u JMX_user -pw JMX_password describecluster