1. Introdução
Muitas vezes, é desejável que os clientes corporativos tenham clusters de banco de dados em espera para localização de dados e alto desempenho, recuperação de desastres e/ou para simples backups de dados. O Couchbase Cross Data Center Replication (XDCR) dispensa apresentações, pois os clientes usam esse recurso há muito tempo para atingir esses objetivos em seus ambientes.
No entanto, com cada vez mais implementações do Couchbase na nuvem usando o Couchbase Autonomous Operator (CAO) para Kubernetes, os clientes solicitaram orientação para configurar a rede para sua plataforma de nuvem.
Este artigo aborda em detalhes a configuração de redes entre clusters do Couchbase em duas regiões diferentes, usando uma abordagem passo a passo. Usamos a plataforma Amazon AWS para implantar o cluster do Couchbase no ambiente Amazon EKS, mas acreditamos que a abordagem de alto nível seria mais ou menos a mesma, independentemente da plataforma de sua escolha.
2. Pré-requisitos
É altamente recomendável que você leia meu blog anterior sobre como implementar o cluster do Couchbase no EKS. A maioria das etapas detalhadas sobre a implantação do Couchbase Autonomous Operator será apenas referenciada neste artigo, portanto, podemos nos concentrar nos aspectos de rede para configurar a replicação entre centros de dados.
3. Implantar clusters EKS em duas regiões
Vamos começar implantando dois Amazon Elastic Container Service for Kubernetes (Amazon EKS) em duas regiões distintas (Virgínia e Ohio).

Figura 1: Cluster EKS implantado nas regiões de Ohio e Virgínia.
Cada cluster do Amazon EKS terá um mínimo de três nós de trabalho, que serão usados para hospedar pods do Couchbase, conforme descrito na seção 4. Nosso objetivo ao final deste artigo é que você tenha dois clusters do Couchbase implantados nesses dois clusters do Amazon EKS, com a rede configurada e o XDCR ativo estabelecido da origem para o cluster de destino.
3.1. Implantar o EKS na região da Virgínia
Usaremos eksctl
para implantar o Amazon EKS, onde criaremos um novo nodegroup chamado grupo azul
com um mínimo de três m5.large
instâncias e um máximo de seis.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ eksctl criar agrupamento \ --nome blueEKS \ --versão 1.14 \ --região nós-leste-1 \ --zonas nós-leste-1a,nós-leste-1b,nós-leste-1c \ --nógrupo-nome grupo azul \ --nó-tipo m5.grande \ --nós 3 \ --nós-min 3 \ --nós-máximo 6 \ --nó-ami automático \ --vpc-cidr 172.16.0.0/24 [ℹ] usando região nós-leste-1 ... [✔] EKS agrupamento "blueEKS" em "us-east-1" região é pronto |
Uma vez eksctl
Quando terminar de implantar o cluster Kubernestes (K8s), faça login no console do AWS para anotar o VPC-ID e o bloco CIDR. Aqui estão as etapas para descobrir esses detalhes, que serão usados posteriormente na configuração do par de VPC.

Figura 2: Console EKS mostrando o painel de recursos por região.
- Selecione
Virgínia
no menu suspenso. - Se você vir o VPC Dashboard, clique em
Suas VPCs
no painel esquerdo. Se você tiver uma página diferente aberta, pesquise primeiro o serviço VPC e, em seguida, clique emSuas VPCs
opção.

Figura 3: Página de detalhes da VPC.
- Como pode ser visto acima, você precisa selecionar a VPC que acabou de ser criada e, em seguida, copiar o
ID DA VPC
na tabela abaixo:
Tabela 1. Atributos do cluster EKS azul
Atributos | Aglomerado azul | Grupo verde |
---|---|---|
Região | Virgínia | Ohio |
Bloco CIDR | 172.16.0.0/24 | |
VPC-ID | vpc-0c8d3d5919e79659d |
3.2. Implantar o EKS na região de Ohio
Em seguida, implante o cluster do Kubernetes na região de Ohio com 3 nós de trabalho de m5.large
tipo. O número e o tipo desses nós de trabalho podem ser diferentes, dependendo do tamanho do cluster, mas, nesta configuração, vamos implantar um cluster do Couchbase de 3 nós nesses 3 nós de trabalho.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ eksctl criar agrupamento \ --nome greenEKS \ --versão 1.14 \ --região nós-leste-2 \ --zonas nós-leste-2a,nós-leste-2b,nós-leste-2c \ --nógrupo-nome grupo verde \ --nó-tipo m5.grande \ --nós 3 \ --nós-min 3 \ --nós-máximo 6 \ --nó-ami automático \ --vpc-cidr 10.0.0.0/24 [ℹ] usando região nós-leste-2 ... [✔] EKS agrupamento "greenEKS" em "us-east-2" região é pronto |
Depois que o cluster Green estiver pronto, abra uma nova guia do navegador e faça login no console do AWS.

Figura 4: Console do AWS conectado à região de Ohio.
- Alterar a região para Ohio

Figura 5: Página de detalhes do VPC mostrando os detalhes do cluster de Ohio.
- No painel de controle da VPC, selecione
Suas VPCs
guia. - Copie e cole o ID do VPC do Green Cluster na tabela abaixo para o registro:
Tabela 2. Atributos do cluster EKS verde
Atributos | Aglomerado azul | Grupo verde |
---|---|---|
Região | Virgínia | Ohio |
Bloco CIDR | 172.16.0.0/24 | 10.0.0.0/24 |
VPC-ID | vpc-0c8d3d5919e79659d | vpc-08d025c8ae697bf34 |
Neste ponto, temos o cluster Kubernetes implantado nas regiões da Virgínia e de Ohio e temos detalhes de VPC que serão usados no emparelhamento de VPC.
3.3. Trocar o contexto do cluster
Antes de prosseguirmos com a implantação de clusters do Couchbase nessas duas regiões, é preciso lembrar de um comando útil para alternar facilmente os contextos de cluster:
1 2 3 4 5 |
$ kubectl configuração obter-contextos ATUAL NOME CLUSTER AUTHINFO NAMESPACE * x.y@domínio.com@blueEKS.nós-leste-1.eksctl.io blueEKS.nós-leste-1.eksctl.io x.y@domínio.com@blueEKS.nós-leste-1.eksctl.io x.y@domínio.com@greenEKS.nós-leste-2.eksctl.io greenEKS.nós-leste-2.eksctl.io x.y@domínio.com@greenEKS.nós-leste-2.eksctl.io |
Como pode ser visto acima, haverá dois clusters diferentes registrados em kubectl config
. Atualmente, o contexto está definido como blueEKS.us-east-1.eksctl.io
e se quisermos mudar para o cluster greenEKS.us-east-2.eksctl.io
podemos simplesmente fazer isso:
1 2 3 4 5 6 7 8 9 |
$ kubectl configuração uso-contexto x.y@domínio.com@greenEKS.nós-leste-2.eksctl.io Comutado para contexto "x.y@domain.com@greenEKS.us-east-2.eksctl.io". $ kubectl obter nós NOME STATUS PAPÉIS IDADE VERSÃO ip-10-0-0-11.us-leste-2.compute.internal Pronto <nenhum> 20m v1.14.8-eks-b8860f ip-10-0-0-61.us-leste-2.compute.internal Pronto <nenhum> 20m v1.14.8-eks-b8860f ip-10-0-0-72.us-leste-2.compute.internal Pronto <nenhum> 20m v1.14.8-eks-b8860f |
A partir daí, qualquer kubectl
que executamos, ele estará no contexto de greenEKS.us-east-2.eksctl.io
que está em leste-2 (Ohio)
região.
4. Implantar o cluster do Couchbase em duas regiões
Em meu último blog sobre Como implantar o cluster do Couchbase no EKS usando volumes persistentesNa seção "Como fazer o download", abordei cada etapa em detalhes. Portanto, em vez de repetir as etapas, aqui novamente, vou apenas segui-las para manter as coisas simples.
4.1 Configuração do Green Cluster
Vamos começar a implementar nosso primeiro cluster do Couchbase em leste-2
região também conhecida como verde
neste caso. Portanto, seguindo as etapas do último blog, nós o faremos:
- Implante o Couchbase Autonomous Operator seguindo as etapas de 2.1 a 2.8.
- Crie o segredo e a classe de armazenamento executando as etapas 3.1 a 3.2
Não usaremos o script de implantação de cluster, conforme mencionado aqui; em vez disso, usaremos couchbase-green-cluster.yaml que criará um cluster do Couchbase de três nós espalhados em três zonas de disponibilidade diferentes (east-2a/2b/2c).
1 2 3 |
$ kubectl criar -f couchbase-verde-agrupamento.yaml -n emart --salvar-configuração conjunto de sofás.couchbase.com/verde criado |
Observação: É uma prática recomendada permitir
spec.antiAffinity
em couchbase-green-cluster.yaml para garantir que cada nó do Kubernetes receba um e somente um pod. Isso garante que, se um nó falhar, apenas um pod do Couchbase será desativado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ kubectl registros couchbase-operador-7654d844cb-tz7k5 -n emart -f tempo="2020-02-22T08:22:02Z" nível=informações mensagem="Node status:" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="┌────────────┬──────────────────┬──────────────┬────────────────┐" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="│ Servidor │ Versão │ Classe │ Status │" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="├────────────┼──────────────────┼──────────────┼────────────────┤" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="│ green-0000 │ enterprise-6.0.3 │ data-east-2a │ managed+active │" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="└────────────┴──────────────────┴──────────────┴────────────────┘" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="Status do agendador:" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="┌──────────────┬────────────┬────────────┐" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="│ Classe │ Zona │ Servidor │" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="├──────────────┼────────────┼────────────┤" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="│ data-east-2a │ us-east-2a │ green-0000 │" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações mensagem="└──────────────┴────────────┴────────────┘" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:02Z" nível=informações agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:22:08Z" nível=informações mensagem="Criando um pod (green-0001) executando o Couchbase enterprise-6.0.3" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:23:21Z" nível=informações mensagem="membro adicionado (green-0001)" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:23:21Z" nível=informações mensagem="Criando um pod (green-0002) executando o Couchbase enterprise-6.0.3" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:24:31Z" nível=informações mensagem="membro adicionado (green-0002)" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:24:39Z" nível=informações mensagem="Progresso do reequilíbrio: 0.000000" agrupamento-nome=verde módulo=agrupamento tempo="2020-02-22T08:24:43Z" nível=informações mensagem="reconciliação concluída" agrupamento-nome=verde módulo=agrupamento |
Agora podemos fazer o port forward para visualizar o console de administração do Couchbase:
1 2 3 4 |
$ kubectl porto-avançar verde-0000 8092:8091 -n emart Encaminhamento de 127.0.0.1:8092 -> 8091 Encaminhamento de [::1]:8092 -> 8091 |
Em seguida, abra um navegador e digite: http://localhost:8092/ para se conectar ao Console da Web do Couchbase de Verde
agrupamento:

Figura 6: Três nós: cluster verde distribuído em três zonas de disponibilidade (AZs)
Criar um balde vazio padrão
que será usado posteriormente como o bucket de destino durante a configuração do XDCR.

Figura 7: Compartimento de destino sem documentos nele
4.2 Configuração do cluster azul
Precisamos mudar o contexto de kubectl config
para trabalhar com o cluster blueEKS.
1 2 3 4 5 6 7 8 9 |
$ kubectl configuração uso-contexto x.y@domínio.com@blueEKS.nós-leste-1.eksctl.io Comutado para contexto "x.y@domain.com@blueEKS.us-east-1.eksctl.io". $ kubectl obter nós NOME STATUS PAPÉIS IDADE VERSÃO ip-172-16-0-25.ec2.internal Pronto <nenhum> 2h v1.14.8-eks-b8860f ip-172-16-0-42.ec2.internal Pronto <nenhum> 2h v1.14.8-eks-b8860f ip-172-16-0-76.ec2.internal Pronto <nenhum> 2h v1.14.8-eks-b8860f |
Depois de mudar o contexto, seguiremos as mesmas etapas descritas acima. Usaremos o couchbase-blue-cluster.yaml para finalmente implementar um cluster de três nós.
1 2 3 |
$ kubectl criar -f couchbase-azul-agrupamento.yaml -n emart --salvar-configuração conjunto de sofás.couchbase.com/verde criado |
Agora vamos dar uma olhada nos logs do operador para verificar o progresso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ kubectl obter cápsulas -n emart NOME PRONTO STATUS RESTARTS IDADE couchbase-operador-7654d844cb-58gch 1/1 Em execução 0 4m22s couchbase-operador-admissão-7ff868f54c-57rhc 1/1 Em execução 0 5m21s $ kubectl registros couchbase-operador-7654d844cb-58gch -n emart -f tempo="2020-02-22T08:52:07Z" nível=informações mensagem="┌───────────┬──────────────────┬──────────────┬────────────────┐" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="│ Servidor │ Versão │ Classe │ Status │" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="├───────────┼──────────────────┼──────────────┼────────────────┤" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="│ blue-0000 │ enterprise-6.0.3 │ data-east-1a │ managed+active │" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="└───────────┴──────────────────┴──────────────┴────────────────┘" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="Status do agendador:" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="┌──────────────┬────────────┬───────────┐" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="│ Classe │ Zona │ Servidor │" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="├──────────────┼────────────┼───────────┤" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="│ data-east-1a │ us-east-1a │ blue-0000 │" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações mensagem="└──────────────┴────────────┴───────────┘" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:07Z" nível=informações agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:52:13Z" nível=informações mensagem="Criando um pod (blue-0001) executando o Couchbase enterprise-6.0.3" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:53:27Z" nível=informações mensagem="membro adicionado (blue-0001)" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T08:53:27Z" nível=informações mensagem="Criação de um pod (blue-0002) executando o Couchbase enterprise-6.0.3" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T09:00:45Z" nível=informações mensagem="membro adicionado (blue-0002)" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T09:00:54Z" nível=informações mensagem="Progresso do reequilíbrio: 0.000000" agrupamento-nome=azul módulo=agrupamento tempo="2020-02-22T09:00:58Z" nível=informações mensagem="reconciliação concluída" agrupamento-nome=azul módulo=agrupamento |
Encaminhe o console de administração do Couchbase para a porta 8091:
1 2 3 4 |
$ kubectl porto-avançar verde-0000 8091:8091 -n emart Encaminhamento de 127.0.0.1:8091 -> 8091 Encaminhamento de [::1]:8091 -> 8091 |
Abra outra guia em seu navegador e digite: http://localhost:8091/ para se conectar ao Console da Web do Couchbase de Azul
agrupamento:

Figura 8: Cluster azul de três nós distribuído em três zonas de disponibilidade (AZs)
4.2.1 Criar um bucket de amostras de viagem
Vamos usar amostra de viagem
como os dados de origem, que serão replicados para o destino verde
cluster. Para criar um bucket de amostra, acesse Configurações > Buckets de amostra e clique na caixa de seleção ao lado de amostra de viagem
. Isso criará o compartimento necessário e preencherá vários documentos no compartimento.

Figura 9: Balde de origem com alguns dados de amostra
Vamos replicar esse conjunto de amostras de viagem para o cluster de destino na região de Green (também conhecida como Ohio).
5. Configuração de rede
A diversão começa com a seção de configuração de rede. Se você já usou o Console do AWS para configurar o emparelhamento de VPC entre duas regiões ou dois VPCs separados, esta seção será muito fácil. E se você quiser aprender a configurar o emparelhamento de VPC, esta será uma ótima experiência de aprendizado.
5.1 Configuração de emparelhamento de VPC
A primeira etapa do processo de três etapas é estabelecer o peering de VPC da VPC solicitante para a VPC aceitante. Nesta etapa, faremos login na região da Virgínia usando o console do AWS e iniciaremos a solicitação de emparelhamento. Em seguida, faremos login na região de Ohio para aceitar essa solicitação.
5.1.1 Iniciar solicitação de VPC da região Azul
Vamos começar o processo de iniciação de emparelhamento da VPC conectando-nos à região da Virgínia.

Figura 10: Console da AWS exibindo o resumo dos recursos na região da Virgínia
- Certifique-se de ter selecionado a região do solicitante no console do AWS, que, no nosso caso, é a Virgínia.
- Abra a página do painel do VPC.

Figura 11: Opção de emparelhamento de VPC no painel de controle de VPC
- Selecione o
Conexões de peering
no painel esquerdo. - Clique em
Criar conexão de peering
da página.
Depois de clicar no botão, você verá uma página de diálogo em que é necessário:
- Forneça um nome exclusivo para essa conexão de emparelhamento. Vamos usar
peering de azul para verde
porque a região da Virgínia está hospedando nosso cluster Azul e Ohio está hospedando nosso cluster Verde.

Figura 12: Configuração de solicitante e aceitador de peering VPC.
- Selecione o ID de VPC do cluster Blue, pois esse é o solicitante.
- Nosso cluster de destino está em uma região diferente, portanto, vamos selecionar
Outra região
como a opção paraRegião
. - Em seguida, selecione a região de destino, que é Ohio.
- Anotamos as IDs de VPC de ambas as VPCs na tabela 2. Portanto, usaremos o ID de VPC do cluster Green.
- Acertar
Criar conexão de peering
botão.

Figura 13: Solicitação de peering estabelecida.
Isso exibirá a página de confirmação. Basta clicar em OK
e isso lhe mostrará que a solicitação foi iniciada.
5.1.2 Aceitar solicitação de VPC da região verde
Agora, no console da AWS, altere a região para Ohio (também conhecida como região verde) e selecione VPC Dashboard.

Figura 14: Selecione a região us-east-2 (Ohio)
- O mesmo que antes de selecionar o
Conexões de peering
no painel esquerdo, para que possamos concluir a solicitação de peering aceitando-a.

Figura 15: Selecionar Conexões de peering
opções do painel de controle da VPC
- Como pode ser visto acima, há uma solicitação pendente na lista. Selecionaremos essa solicitação primeiro.

Figura 16: Aceitar solicitação de emparelhamento de VPC
- Então, a partir do
Ações
selecionaremosAceitar solicitação
.

Figura 17: Confirmar a solicitação de emparelhamento de VPC na janela pop-up
- Será exibida uma página de confirmação. Selecione
Sim, aceitar
botão.

Figura 18: A conexão de emparelhamento VPC de origem-destino é estabelecida
Isso conclui a etapa 1 do emparelhamento da VPC, pois o status do emparelhamento é Ativo
.
5.2 Atualizar tabelas de roteamento
A segunda etapa é estabelecer o canal de comunicação adicionando o bloco CIDR do cluster de destino às tabelas de rotas. Para fazer isso, precisamos descobrir em quais sub-redes cada uma das três instâncias do EC2 reside.
Quando tivermos a lista de sub-redes em cada uma das três AZs (1a, 1b, 1c) em que temos nós de trabalho do Kubernetes em execução, precisaremos descobrir a tabela de roteamento associada a cada uma das três sub-redes. Para essas tabelas de roteamento, gostaríamos de adicionar uma entrada de tabela de roteamento para permitir o tráfego proveniente de outra VPC por meio de peering de VPC. Vamos dar uma olhada passo a passo.
5.2.1 Sub-redes usadas no Blue Cluster
- Faça login no console do AWS e selecione a região da Virgínia (também conhecida como região azul). Depois disso, selecione o serviço EC2 para exibir todas as instâncias do EC2 usadas como nós do Kubernetes.

Figura 19: Sub-rede associada a cada uma das instâncias do EC2.
- Em seguida, selecione uma das instâncias do EC2. Na imagem acima, selecionei instâncias na região us-east-1a e a guia de descrição exibirá todos os detalhes sobre essa instância.
- Anote o nome da sub-rede (mencionado entre parênteses) em que essa instância está residindo. Por exemplo, a instância acima está implementada em
eksctl-blueEKS-cluster/SubnetPublicUSEAST1A
sub-rede. - Repita o mesmo processo até obter a lista de todas as sub-redes usadas em seu cluster. No nosso caso, temos essas três sub-redes usadas em nosso cluster:
Atributos | us-east-1a | us-east-1b | us-east-1c |
---|---|---|---|
Nome da sub-rede | eksctl-blueEKS-cluster/SubnetPublicUSEAST1A | eksctl-blueEKS-cluster/SubnetPublicUSEAST1B | eksctl-blueEKS-cluster/SubnetPublicUSEAST1C |
5.2.2 Tabela de roteamento associada a sub-redes
A próxima etapa seria descobrir a tabela de roteamento associada a cada uma das sub-redes, para que possamos adicionar a regra de roteamento a ela para permitir o tráfego do cluster Green.

Figura 20: Tabelas de roteamento associadas a cada sub-rede no cluster
- Para localizar a tabela de roteamento usada, clique em
Sub-redes
à esquerda. - Em seguida, selecione uma das sub-redes da lista
eksctl-blueEKS-cluster/SubnetPublicUSEAST1A
- Anote a tabela de roteamento usada procurando na seção
Descrição
guia. - Repita as três etapas acima para cada uma das sub-redes e anote a tabela de roteamento usada:
Atributos | us-east-1a | us-east-1b | us-east-1c |
---|---|---|---|
Nome da sub-rede | eksctl-blueEKS-cluster/SubnetPublicUSEAST1A | eksctl-blueEKS-cluster/SubnetPublicUSEAST1B | eksctl-blueEKS-cluster/SubnetPublicUSEAST1C |
Nome da tabela de rotas | eksctl-blueEKS-cluster/PublicRouteTable | eksctl-blueEKS-cluster/PublicRouteTable | eksctl-blueEKS-cluster/PublicRouteTable |
Como se pode notar, em nosso caso temos uma tabela de rotas eksctl-blueEKS-cluster/PublicRouteTable
associada a todas as três sub-redes, portanto, atualizaremos apenas uma tabela de rotas.
5.2.3 Adicionar regra de roteamento
Agora vamos adicionar 10.0.0.0/24
Bloco CIDR da região de destino no roteamento permitido Rotas
da tabela de roteamento de origem.

Figura 21: A guia Route Tables mostra a lista de tabelas de roteamento existentes na região azul
- Clique no botão
Tabelas de roteamento
no menu esquerdo do console do AWS. - Selecione a tabela de rotas à qual gostaríamos de adicionar a entrada de rota, ou seja
eksctl-blueEKS-cluster/PublicRouteTable
. - Em seguida, clique no botão
Rotas
ao lado da guia de resumo, onde você veria apenas duas entradas de rota. - Para permitir
10.0.0.0/24
Bloco CIDR clique no botãoEditar rotas
botão.

Figura 22: Página de diálogo Edit Routes (Editar rotas).
- Na caixa de diálogo acima, adicione o bloco CIDR do cluster GREEN e selecione VPC-Peering como o destino. Em seguida, clique em
salvar rotas
botão. - Você verá o bloco CIDR de destino
10.0.0.0/24
agora faz parte doRotas
disponíveis para a tabela de rotas selecionada:eksctl-blueEKS-cluster/PublicRouteTable

Figura 23: Tabela de rotas mostrando o bloco CIDR de destino como a rota permitida.
Observação: Repita o mesmo processo para o cluster de Ohio (também conhecido como Green) e adicione o bloco CIDR de Virginia (também conhecido como Blue) à tabela de rotas.

Figura 24: Tabela de rotas mostrando o bloco CIDR do cluster azul na tabela de rotas do cluster verde.
5.3 Atualizar o grupo de segurança
A última etapa da configuração da rede no cluster de origem e de destino é abrir um intervalo de portas nas quais os nós de trabalho do K8s se comunicarão entre si. Essas portas serão usadas para Comunicação XDCR Portanto, ou abrimos a porta que vai de 30000 a 32767 ou restringimos a uma única porta que será usada para a rede de sobreposição, conforme descrito na seção 6.0.
5.3.1 Configurações de regras de entrada
Para simplificar, permitiremos que o intervalo de portas seja aberto no NodeGroup usado como nós de trabalho do K8s. Para alterar as configurações do firewall, siga estas etapas:

Figura 25: Configure um grupo de segurança no cluster Virginia (também conhecido como Blue).
- Clique no botão
Grupos de segurança
no painel esquerdo do seu Console da AWS para a região da Virgínia. - Em seguida, localize o grupo de segurança (SG) com
-nodegroup-bluegroup
como a cadeia de caracteres. Esse SG é usado como a configuração de firewall para todos os nós de trabalho em seu nodegroup do Kubernetes. - Clique em
Regras de entrada
que exibe um intervalo de portas abertas para o respectivo recurso. - Próximo clique
Editar regras
para adicionar a nova regra à lista.

Figura 26: Adicione uma regra de firewall para que o cluster de origem e o de destino possam se comunicar entre si.
- Conforme descrito na imagem acima, adicione uma nova regra TCP para o intervalo de portas 30000-32767 e use o bloco CIDR
10.0.0.0/24
do cluster de destino, ou seja, o cluster de Ohio (também conhecido como Green). Isso conclui a configuração do tráfego de entrada.
5.3.2 Configurações de regras de saída
- Agora vamos criar uma regra semelhante para a comunicação de saída também. Para fazer isso, clique no ícone
Regras de saída
conforme descrito abaixo.

Figura 27: Configurações de regras de saída para o grupo de segurança selecionado.
- Clique no botão
Editar regras
para adicionar uma nova regra.

Figura 28: Rota de saída atualizada com regra adicional.
- Assim como antes, adicionaremos um novo
Regra TCP personalizada
e permitir portas que variam de30000-32767
para poder se comunicar com o bloco CIDR de destino10.0.0.0/24
.
Observação: Assim como adicionamos a regra de firewall no Nodegroup do cluster Blue, precisamos fazer o mesmo no Nodegroup do cluster Green.
Depois de concluir a configuração de rede da origem e do destino, os clusters devem ser capazes de se comunicar nos intervalos de portas que usamos e podemos ir para a próxima etapa de configuração real do XDCR para que os dados possam ser replicados da origem para o bucket de destino em toda a região.
6.0 Replicação de XDCR com rede de sobreposição
Dê uma olhada no diagrama abaixo, que pressupõe que dois nós em clusters separados do Kubernetes podem se comunicar entre si. O roteador descrito pode ser um switch, roteador, conexão VPN ou qualquer outra infraestrutura que permita a comunicação de camada 3.

Figura 29: XDCR para um cluster diferente do Kubernetes por meio de rede de sobreposição
No diagrama, o pod no Cluster 1 só é capaz de se conectar à porta do nó (31202) exposta no Cluster 2. Além disso, essa porta só é exposta ao nó no qual o pod está sendo executado. Para determinar a string de conexão correta no cluster de destino do XDCR, siga o procedimento:
- Listar os pods do Couchbase implantados no cluster de destino. Se quisermos configurar a replicação do XDCR no cluster Blue, execute este comando no diretório
Verde
agrupamento:
1 2 3 4 5 6 |
$ kubectl obter cápsulas -n emart NOME PRONTO STATUS RESTARTS IDADE verde-0000 1/1 Em execução 0 7m39s verde-0001 1/1 Em execução 0 6m19s verde-0002 1/1 Em execução 0 5m8s |
- Escolha um dos pods do Couchbase e obtenha o endereço IP do nó GKE subjacente:
1 2 3 |
$ kubectl obter cápsula verde-0000 -o yaml -n emart | grep hostIP hostIP: 10.0.0.5 |
- Obtenha o número da porta que mapeia a porta de administração (8091).
1 2 3 4 |
$ kubectl obter serviço verde-0000-exposto-portos -n emart NOME TIPO CLUSTER-IP EXTERNO-IP PORTO(S) IDADE verde-0000-exposto-portos NodePort 172.20.55.204 <nenhum> 11210:32262/TCP,11207:31500/TCP,8093:32209/TCP,18093:31965/TCP,8091:30964/TCP,18091:30093/TCP,8092:31555/TCP,18092:30041/TCP 7m3s |
Se você estivesse conectado ao Console da Web do Couchbase Server no cluster Blue e estabelecendo a conexão XDCR com o cluster Green, usaria a string de conexão 10.0.0.5:30964 com base no exemplo acima.
6.1. XDCR do cluster azul para o verde
Vamos configurar uma replicação unidirecional a partir do Azul
para o Verde
cluster. Você pode encontrar mais detalhes sobre o Documentação do XDCR.
Vamos primeiro nos conectar ao Console da Web do Couchbase do Azul
cluster usando o método de encaminhamento de porta.
Observação: Já temos o encaminhamento de porta em execução para o Green cluster usando a porta
8092
e o cluster Blue usando uma porta8091
.
No cluster Azul http://localhost:8091:
- Adicionar referência de cluster do verde agrupamento.

Figura 30: Conexão XDCR do cluster azul para o verde.
- Referência de cluster remoto adicionada.

Figura 31: Replicação estabelecida.
- Adicionar replicação de bucket de amostra de viagem balde para padrão no cluster Green.

Figura 32: Configuração da replicação de bucket de origem para destino.
- Seu bucket agora está replicando a partir de
Azul
paraVerde
agrupamento.

Figura 33: Replicação ativa de buckets do cluster da Virgínia para o de Ohio.
7. Conclusão
Neste artigo, desvendamos os detalhes da rede para mostrar a você como é fácil configurar Emparelhamento de VPC entre regiões no contexto do Operador Autônomo do Couchbase. Usamos uma das plataformas de nuvem para conduzir a implantação dos clusters geodistribuídos do Couchbase, mas o que queremos destacar é que, depois que você entender os conceitos, aplicá-los em qualquer outra plataforma de nuvem será uma progressão simples.