Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Executar Sincronização Bidirecional entre Regiões no Oracle Cloud Infrastructure usando o Syncthing
Introdução
A sincronização de armazenamento de objetos entre regiões é essencial para várias cargas de trabalho na nuvem, incluindo backup de dados, recuperação de desastres e acesso multirregional. Embora a Oracle Cloud Infrastructure (OCI) forneça recursos de replicação para o OCI Object Storage, ela não oferece uma solução de sincronização bidirecional nativa. Essa limitação significa que os usuários devem confiar em implementações personalizadas para sincronizar arquivos entre regiões.
O Syncthing, uma ferramenta de sincronização de arquivos descentralizada de código aberto, fornece uma sincronização bidirecional contínua alternativamente que opera em tempo real. Ao contrário do OCI Functions, que depende de um modelo orientado a eventos para replicação de objetos, o Syncthing sincroniza estruturas de arquivos inteiras de forma eficiente entre máquinas virtuais (VMs) ao mesmo tempo em que oferece suporte a diretórios montados locais e do OCI Object Storage.
Neste tutorial, implantaremos o Syncthing em instâncias do OCI Compute em duas regiões usando uma pilha do OCI Resource Manager, permitindo a sincronização automática e bidirecional entre o armazenamento de VM local e os diretórios montados do OCI Object Storage.
Considerações
Quando você monta o Syncthing com o OCI Object Storage usando s3fs:
-
O desempenho de gravação do s3fs (OCI Object Storage) pode ser um gargalo: A gravação diretamente no OCI Object Storage usando o s3fs é mais lenta em comparação com o disco local.
-
A sincronização de arquivos grandes pode ser lenta: A gravação e a leitura de arquivos grandes diretamente do OCI Object Storage podem levar minutos em vez de segundos.
-
Vantagem de sincronização no nível do bloco perdida: Como o OCI Object Storage requer gravações de objeto completo, a eficiência de sincronização no nível do bloco do Syncthing é diminuída.
-
Melhores práticas: Sincronize localmente primeiro e, em seguida, mova arquivos para o OCI Object Storage.
Quando o Syncthing é uma boa ideia?
-
Melhor para sincronização em tempo real, especialmente para pequenas alterações de arquivos de alta frequência entre regiões.
-
Ideal para sincronização bidirecional, ao contrário do OCI Functions, que exige lógica adicional para atualizações bidirecionais.
-
Ótimo para sincronização de nuvem híbrida ou on-premises para OCI, em que a integração direta do OCI Object Storage não é viável.
-
Melhor ao sincronizar o armazenamento de VM local: Evite usar buckets montados em s3fs para sincronização direta.
-
Não é ideal para transferências de arquivos em batch grandes: o OCI Functions lida com isso de forma mais eficiente com o processamento por objeto.
Objetivos
-
Implante uma pilha do OCI Resource Manager em duas regiões para provisionar automaticamente duas instâncias do OCI Compute com o Syncthing pré-instalado.
-
Configure o Syncthing em ambas as VMs para permitir a sincronização descentralizada em tempo real de armazenamento local e diretórios montados no OCI Object Storage em várias regiões.
Pré-requisitos
-
Acesso a uma tenancy do OCI com duas regiões ativadas para sincronização entre regiões.
-
Permissões para criar e gerenciar instâncias do OCI Compute, buckets do OCI Object Storage e recursos de rede.
-
Uma VCN existente com uma sub-rede pública em cada região para implantação de VM.
-
Buckets existentes do OCI Object Storage em ambas as regiões, que serão usados para sincronização.
-
Uma chave secreta do cliente para o Sistema de Arquivos S3 (s3fs) para montar buckets do OCI Object Storage nas VMs.
Tarefa 1: Preparar as Informações Necessárias para a Implantação da VM
-
Faça download da pilha do OCI Resource Manager. Essa pilha automatiza a implantação de uma VM que executa o Oracle Linux 8 em um VM.Standard.E5. Forma flexível. Ele instala o Syncthing usando CloudInit, monta um bucket do OCI existente e configura o acesso usando s3fs. A VM é provisionada com acesso SSH, um IP público e marcado para fácil identificação. Para obter mais informações, consulte Pilha do OCI Resource Manager.
-
Crie uma VCN com uma sub-rede pública nas duas regiões de destino.
A pilha será implantada em ambos os locais para provisionar uma VM com o Syncthing para sincronização de armazenamento bidirecional entre regiões. Uma vez implantado, o Syncthing pode ser acessado no navegador usando o IP público da VM.
-
Certifique-se de que exista um bucket do OCI Object Storage em cada região em que os testes serão executados. A visibilidade do bucket pode ser Privada.
-
Crie uma chave secreta do cliente para montagem s3fs. A chave secreta do cliente será usada para acessar o OCI Object Storage.
-
Faça log-in na Console do OCI, navegue até Perfil, clique em seu nome de usuário e em Chaves Secretas do Cliente.
-
Clique em Gerar chave secreta e digite um nome, como
s3fs-access
. -
Certifique-se de copiar a chave gerada, pois a usaremos posteriormente na Tarefa 2.
-
Clique em Chave de acesso e copie o valor, pois o usaremos posteriormente na Tarefa 2.
-
Copie o Namespace da página Detalhes do bucket que usaremos posteriormente na Tarefa 2.
-
Tarefa 2: Aplicar a Pilha
-
Faça log-in na Console do OCI, acesse Developer Services, Resource Manager e clique em Pilhas.
-
Crie a pilha do Terraform OCI Resource Manager. Para obter mais informações, consulte Criando uma Pilha com Base em um Arquivo Zip.
-
Clique em Criar pilha.
-
Selecione o arquivo
.zip
e adicione a pilha. -
Informe a Chave de tag.
-
Clique em Próximo.
-
-
Na página Configurar variáveis, especifique as informações a seguir.
- Compartimento: Informe o compartimento.
- VCN e Sub-rede: Selecione uma VCN existente e uma sub-rede pública.
- Modifique o nome para exibição vm, se desejar.
- Chave SSH Pública: Informe a chave SSH pública da VM.
- Domínio de Disponibilidade: Selecione o domínio de disponibilidade.
- OCID da chave secreta do cliente e Chave de Acesso Secreta do Cliente: Informe o OCID da chave secreta do cliente e a chave de acesso secreta do cliente criada na Tarefa 1.
- Nome do Bucket: Informe o nome do bucket.
- Namespace de Armazenamento de Objetos: Selecione o namespace de armazenamento de objetos.
-
Clique em Próximo e verifique as informações. Se tudo estiver ok, selecione Executar Aplicação e clique em Criar.
Quando o job de aplicação for concluído com sucesso, ele deverá retornar os IPs públicos e privados da VM recém-criada.
-
Repita as etapas em uma região secundária para criar a segunda VM lá.
-
Confirme se os buckets do OCI Object Storage estão montados em
/home/opc/logging
no nível da VM, conectando-se por SSH usando os comandos a seguir.mount | grep s3fs
Se o bucket for montado com sucesso, você verá a saída semelhante a:
Isso confirma que s3fs montou o bucket em
/home/opc/logging
em qualquer uma das VMs.
Tarefa 3: Configurar o Syncthing
Depois que ambas as VMs forem implantadas nas duas regiões, configure o Syncthing em cada VM seguindo as etapas abaixo para sincronizar o armazenamento entre elas.
-
Copie o IP público da VM na primeira região e use-o no browser para acessar a interface do Syncthing. Informe o URL a seguir.
http://<vm1-public-ip>:8384
-
Depois de acessar a interface, você verá a interface do Syncthing, que será semelhante à imagem a seguir. Pastas e Dispositivos Remotos são as áreas que você configurará para sincronização na próxima etapa.
Observação: Você pode definir um nome de usuário e uma senha nas Configurações na seção GUI para remover as advertências.
-
Na seção Pastas, clique em Adicionar Pasta para criar ou incluir uma pasta de VM local na interface de administração do Syncthing.
-
Especifique as informações a seguir para configurar uma pasta local e clique em Salvar.
- Rótulo da Pasta: um nome amigável para identificar a pasta. Por exemplo,
local_VM1
. - Caminho da Pasta: O caminho do diretório da pasta local. Por exemplo,
~/local_VM1
.
Você pode fazer check-in no terminal da VM que a nova pasta
local_VM1
criou. - Rótulo da Pasta: um nome amigável para identificar a pasta. Por exemplo,
-
Repita as etapas de 1 a 4 na VM da região secundária e adicione a pasta
local_VM2
na interface de Sincronização VM2. -
Configure a conexão de Sincronização entre regiões entre as duas VMs, começando com VM1.
-
Na seção Dispositivos Remotos da primeira VM de Sincronização, clique em Adicionar Dispositivo Remoto para incluir uma pasta remota da segunda região.
-
Em Geral, especifique as informações a seguir.
-
ID do Dispositivo: Este é o ID do segundo dispositivo Syncthing. Em VM2, abra a interface do Syncthing, navegue até Ações, Mostrar ID, copie o valor exibido e cole-o nesse campo.
-
Nome do dispositivo: Informe um nome relevante, como
remote_VM2
.
-
-
Em Compartilhamento, selecione
local_VM1
a ser compartilhado com o dispositivo remoto. -
Em Avançado, digite
tcp://<vm2-public-ip>:22000
em Endereços,22000
é a porta TCP usada para sincronizar dados. -
Clique em Salvar.
-
-
Neste ponto, em VM1 Syncthing, a pasta local
local_VM1
deverá aparecer em verde Até a Data e o dispositivo remotoremote_VM2
mostrará Disconnected.Para concluir a conexão, execute as mesmas etapas no VM2 Syncthing, usando os dados equivalentes coletados do VM1 Syncthing, digite ID do Dispositivo,
tcp://<vm1-public-ip>:22000
como Endereços e Nome do dispositivo, comoremote_VM1
.Observação: Certifique-se de que a porta
22000
esteja aberta na lista de segurança das VCNs. -
Após as configurações equivalentes, você deve ser solicitado em cada interface do Syncthing para aceitar a adição da pasta remota. Clique em Adicionar.
-
Você será solicitado a salvá-lo localmente com detalhes específicos, por exemplo, em VM1 você será solicitado a salvar o
local_VM2
de entrada, você pode alterar o nome dele em VM1 pararemote_VM2
para uma exibição mais clara. Além disso, você tem a possibilidade de mapeá-lo para um caminho VM1 local. Pode ser qualquer caminho; uma nova pasta será criada se não existir. Você também pode selecionar~/local_VM1
, o que significa que o conteúdo das duas pastas das duas VMs será mesclado no mesmo local. Para nosso exemplo, informe o caminho~/remote_VM2
. -
Execute a mesma etapa em VM2 em relação à pasta
local_VM1
de entrada e mapeie-a comoremote_VM1
. -
Agora, as duas VMs devem estar em sincronia e pastas administradas pelo Syncthing; em VM1,
local_VM1
eremote_VM2
; em VM2,local_VM2
eremote_VM1
.
Tarefa 4: Testar Sincronização do Armazenamento Local
Para testar a sincronização do Syncthing, faça login em cada VM usando SSH. Dentro do diretório inicial do opc, você encontrará duas pastas.
-
Pasta local (
local_VM1
): Armazena arquivos nesta VM. -
Pasta remota (
remote_VM2
): Reflete arquivos sincronizados da segunda VM.
Para verificar a sincronização, adicionaremos ou modificaremos um arquivo na pasta local em uma VM e verificaremos se as alterações aparecem na pasta correspondente na VM remota. Além disso, monitoraremos a interface ou os logs do Syncthing para confirmar a sincronização bem-sucedida entre as duas regiões do OCI.
-
SSH em VM1.
ssh opc@<vm1-public-ip>
-
Execute o comando a seguir para navegar até a pasta local Syncthing compartilhada
local_VM1
.cd ~/local_VM1
-
Execute o comando a seguir para criar um arquivo de teste.
echo "testing sync" > testVM1.txt
-
Abra um novo terminal e SSH em VM2.
ssh opc@<vm2-public-ip>
-
Execute o comando a seguir para navegar até a pasta compartilhada em VM2.
cd ~/remote_VM1
-
Execute os comandos a seguir para verificar se o arquivo aparece.
ls -l cat testVM1.txt
-
Execute as mesmas etapas em VM2 e verifique se um arquivo aparece em VM1 na pasta
remote_VM2
. -
Verifique o status de sincronização na interface de Sincronização. Abra
http://<vm1-public-ip>:8384
ehttp://<vm2-public-ip>:8384
em um browser para verificar logs e status de sincronização.
Tarefa 5: Testar Sincronização do Conteúdo do Bucket do OCI Object Storage
Os buckets são montados nas VMs implantadas no diretório /home/opc/logging
. Para testar e sincronizar arquivos localizados nos buckets montados, você precisa refazer as etapas anteriores para adicionar o diretório da VM logging
como uma pasta local e compartilhá-lo dos Dispositivos Remotos. Você verá algo semelhante a este:
-
VM1:
Em seguida, crie um arquivo no diretório logging
que fará com que ele apareça no bucket do OCI, bem como sincronize com o diretório VM2 logging
se configurado corretamente, portanto, no segundo bucket da região cruzada também.
Tarefa 6: Realizar Mais Testes
Há dois pontos que você pode facilmente testar com a mesma pasta e dispositivos compartilhados, conforme configurado anteriormente.
-
Testar usando Novos Arquivos Grandes: Isso será sincronizado rapidamente. Crie um arquivo grande localmente na VM nas pastas
local_VM1
/local_VM2
e, em seguida, crie o diretóriologging
, o que significa que s3fs é usado para sincronização entre regiões do OCI Object Storage.-
Crie um arquivo grande em VM1.
cd local_VM1 dd if=/dev/urandom of=~/local_VM1/testfile1 bs=1M count=500
-
Verifique a sincronização em VM2.
ls -lh ~/local_VM2/
Verifique também na interface de Sincronização de VMs.
-
Repita para o diretório montado s3fs (
logging
).cd ~/logging dd if=/dev/urandom of=~/logging/testfile2 bs=1M count=500
-
Verifique a sincronização em VM2 no diretório
logging
, na interface do Syncthing, bem como no bucket da segunda região, para determinar a rapidez com que o arquivo aparece. -
Você pode então prosseguir para executar os mesmos testes com um arquivo de alguns GB. Considere também fazer upload de um arquivo grande diretamente para o primeiro bucket e monitorar a rapidez com que ele é sincronizado com o segundo bucket.
-
-
Testar usando Arquivos Grandes Modificados: Isso também detectará e sincronizará com eficiência as alterações. Modifique arquivos locais nos diretórios
local_VM1
/local_VM2
e arquivos existentes nos buckets do OCI Object Storage montados nas VMs no diretóriologging
.-
Modificar um arquivo existente.
echo "New content" >> ~/local_VM1/testfile1
-
Verifique a atualização em VM2.
-
Repita as etapas 1 e 2 para arquivos do OCI Object Storage.
echo "Modified content" >> ~/logging/testfile2
-
Links Relacionados
Confirmações
- Autor - Adina Nicolescu (Engenheira Sênior de Nuvem)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Perform Cross-Region Bidirectional Synchronization in Oracle Cloud Infrastructure using Syncthing
G29471-01
Copyright ©2025, Oracle and/or its affiliates.