Replique aplicações usando o NetApp SnapMirror e o Trident Protect
Com o Trident Protect, você pode usar os recursos de replicação assíncrona da tecnologia NetApp SnapMirror para replicar alterações de dados e aplicações de um back-end de storage para outro, no mesmo cluster ou entre clusters diferentes.
Anotações e rótulos de namespace durante operações de restauração e failover
Durante as operações de restauração e failover, rótulos e anotações no namespace de destino são feitos para corresponder aos rótulos e anotações no namespace de origem. Rótulos ou anotações do namespace de origem que não existem no namespace de destino são adicionados, e quaisquer rótulos ou anotações que já existem são sobrescritos para corresponder ao valor do namespace de origem. Rótulos ou anotações que existem apenas no namespace de destino permanecem inalterados.
|
Se você usar o RedHat OpenShift, é importante observar o papel crítico das anotações de namespace em ambientes OpenShift. As anotações de namespace garantem que os pods restaurados aderem às permissões apropriadas e às configurações de segurança definidas pelas restrições de contexto de segurança OpenShift (SCCs) e possam acessar volumes sem problemas de permissão. Para obter mais informações, consulte o "Documentação de restrições de contexto de segurança OpenShift". |
Você pode impedir que anotações específicas no namespace de destino sejam sobrescritas definindo a variável de ambiente do Kubernetes RESTORE_SKIP_NAMESPACE_ANNOTATIONS
antes de executar a operação de restauração ou failover. Por exemplo:
Se instalou a aplicação de origem utilizando Helm com o --create-namespace
sinalizador, é dado um tratamento especial à name
tecla de identificação. Durante o processo de restauração ou failover, o Trident Protect copia esse rótulo para o namespace de destino, mas atualiza o valor para o valor do namespace de destino se o valor da origem corresponder ao namespace de origem. Se esse valor não corresponder ao namespace de origem, ele será copiado para o namespace de destino sem alterações.
Exemplo
O exemplo a seguir apresenta um namespace de origem e destino, cada um com anotações e rótulos diferentes. Você pode ver o estado do namespace de destino antes e depois da operação e como as anotações e rótulos são combinados ou substituídos no namespace de destino.
Antes da operação de restauração ou failover
A tabela a seguir ilustra o estado dos namespaces de origem e destino de exemplo antes da operação de restauração ou failover:
Namespace | Anotações | Etiquetas |
---|---|---|
Namespace ns-1 (fonte) |
|
|
Namespace ns-2 (destino) |
|
|
Após a operação de restauração
A tabela a seguir ilustra o estado do namespace de destino de exemplo após a operação de restauração ou failover. Algumas chaves foram adicionadas, algumas foram sobrescritas e o name
rótulo foi atualizado para corresponder ao namespace de destino:
Namespace | Anotações | Etiquetas |
---|---|---|
Namespace ns-2 (destino) |
|
|
|
Você pode configurar o Trident Protect para congelar e descongelar sistemas de arquivos durante operações de proteção de dados. "Saiba mais sobre como configurar o congelamento do sistema de arquivos com o Trident Protect". |
Configure uma relação de replicação
A configuração de uma relação de replicação envolve o seguinte:
-
Escolhendo com que frequência você deseja que o Trident Protect tire um snapshot do aplicativo (que inclui os recursos do Kubernetes do aplicativo, bem como os snapshots de volume de cada um dos volumes do aplicativo)
-
Escolha do cronograma de replicação (inclui recursos do Kubernetes e dados de volume persistente)
-
Definir o tempo para a captura instantânea
-
Crie um AppVault para o aplicativo de origem no cluster de origem. Dependendo do seu fornecedor de storage, modifique um exemplo no "Recursos personalizados do AppVault" para se adequar ao seu ambiente:
Crie um AppVault usando um CR-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
trident-protect-appvault-primary-source.yaml
). -
Configure os seguintes atributos:
-
metadata.name: (required) o nome do recurso personalizado do AppVault. Anote o nome que você escolher, porque outros arquivos CR necessários para uma relação de replicação referem-se a esse valor.
-
spec.providerConfig: (required) armazena a configuração necessária para acessar o AppVault usando o provedor especificado. Escolha um bucketName e quaisquer outros detalhes necessários para o seu provedor. Anote os valores que você escolher, porque outros arquivos CR necessários para uma relação de replicação se referem a esses valores. "Recursos personalizados do AppVault"Consulte para obter exemplos de AppVault CRS com outros provedores.
-
spec.providerCredentials: (required) armazena referências a qualquer credencial necessária para acessar o AppVault usando o provedor especificado.
-
spec.providerCredentials.valueFromSecret: (required) indica que o valor da credencial deve vir de um segredo.
-
Key: (required) a chave válida do segredo para selecionar.
-
Name: (required) Nome do segredo que contém o valor deste campo. Deve estar no mesmo namespace.
-
-
spec.providerCredentials.secretAccessKey: (required) a chave de acesso usada para acessar o provedor. O nome deve corresponder a spec.providerCredentials.valueFromSecret.name.
-
-
spec.providerType: (required) determina o que fornece o backup; por exemplo, NetApp ONTAP S3, S3 genérico, Google Cloud ou Microsoft Azure. Valores possíveis:
-
aws
-
azure
-
gcp
-
generic-s3
-
ONTAP-s3
-
StorageGRID-s3
-
-
-
Depois de preencher o
trident-protect-appvault-primary-source.yaml
ficheiro com os valores corretos, aplique o CR:
-
-
Criar a aplicação de origem CR:
Crie o aplicativo de origem usando um CR-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
trident-protect-app-source.yaml
). -
Configure os seguintes atributos:
-
metadata.name: (required) o nome do recurso personalizado do aplicativo. Anote o nome que você escolher, porque outros arquivos CR necessários para uma relação de replicação referem-se a esse valor.
-
spec.includedNamespaces: (required) um array de namespaces e rótulos associados. Use nomes de namespace e, opcionalmente, restrinja o escopo dos namespaces com rótulos para especificar recursos que existem nos namespaces listados aqui. O namespace da aplicação deve fazer parte desse array.
Exemplo YAML:
-
-
Depois de preencher o
trident-protect-app-source.yaml
ficheiro com os valores corretos, aplique o CR:
-
-
Opcionalmente, tire um snapshot do aplicativo de origem. Este instantâneo é utilizado como base para a aplicação no cluster de destino. Se você pular esta etapa, precisará esperar que o próximo snapshot agendado seja executado para que você tenha um snapshot recente.
Tire um instantâneo usando um CR-
Crie um agendamento de replicação para o aplicativo de origem:
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
trident-protect-schedule.yaml
). -
Configure os seguintes atributos:
-
metadata.name: (required) o nome do recurso personalizado de agendamento.
-
Spec.AppVaultRef: (required) este valor deve corresponder ao campo metadata.name do AppVault para o aplicativo de origem.
-
Spec.ApplicationRef: (required) este valor deve corresponder ao campo metadata.name da aplicação de origem CR.
-
Spec.backupRetention: (required) este campo é obrigatório e o valor deve ser definido como 0.
-
Spec.enabled: Deve ser definido como true.
-
spec.granularity: tem de estar definido para
Custom
. -
Spec.recurrenceRule: Defina uma data de início no horário UTC e um intervalo de recorrência.
-
Spec.snapshotRetention: Deve ser definido como 2.
Exemplo YAML:
-
-
Depois de preencher o
trident-protect-schedule.yaml
ficheiro com os valores corretos, aplique o CR:
-
-
-
Crie um aplicativo de origem AppVault CR no cluster de destino idêntico ao AppVault CR aplicado no cluster de origem e nomeie-o (por exemplo,
trident-protect-appvault-primary-destination.yaml
). -
Aplicar o CR:
-
Crie um AppVault para o aplicativo de destino no cluster de destino. Dependendo do seu fornecedor de storage, modifique um exemplo no "Recursos personalizados do AppVault" para se adequar ao seu ambiente:
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
trident-protect-appvault-secondary-destination.yaml
). -
Configure os seguintes atributos:
-
metadata.name: (required) o nome do recurso personalizado do AppVault. Anote o nome que você escolher, porque outros arquivos CR necessários para uma relação de replicação referem-se a esse valor.
-
spec.providerConfig: (required) armazena a configuração necessária para acessar o AppVault usando o provedor especificado. Escolha um
bucketName
e quaisquer outros detalhes necessários para o seu provedor. Anote os valores que você escolher, porque outros arquivos CR necessários para uma relação de replicação se referem a esses valores. "Recursos personalizados do AppVault"Consulte para obter exemplos de AppVault CRS com outros provedores. -
spec.providerCredentials: (required) armazena referências a qualquer credencial necessária para acessar o AppVault usando o provedor especificado.
-
spec.providerCredentials.valueFromSecret: (required) indica que o valor da credencial deve vir de um segredo.
-
Key: (required) a chave válida do segredo para selecionar.
-
Name: (required) Nome do segredo que contém o valor deste campo. Deve estar no mesmo namespace.
-
-
spec.providerCredentials.secretAccessKey: (required) a chave de acesso usada para acessar o provedor. O nome deve corresponder a spec.providerCredentials.valueFromSecret.name.
-
-
spec.providerType: (required) determina o que fornece o backup; por exemplo, NetApp ONTAP S3, S3 genérico, Google Cloud ou Microsoft Azure. Valores possíveis:
-
aws
-
azure
-
gcp
-
generic-s3
-
ONTAP-s3
-
StorageGRID-s3
-
-
-
Depois de preencher o
trident-protect-appvault-secondary-destination.yaml
ficheiro com os valores corretos, aplique o CR:
-
-
Crie um arquivo CR AppMirrorRelationship:
Crie um AppMirrorRelationship usando um CR-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
trident-protect-relationship.yaml
). -
Configure os seguintes atributos:
-
metadata.name: (obrigatório) o nome do recurso personalizado AppMirrorRelationship.
-
spec.destinationAppVaultRef: (required) esse valor deve corresponder ao nome do AppVault para o aplicativo de destino no cluster de destino.
-
spec.namespaceMapping: (required) os namespaces de destino e origem devem corresponder ao namespace de aplicativo definido no respetivo CR de aplicação.
-
Spec.sourceAppVaultRef: (required) este valor deve corresponder ao nome do AppVault para o aplicativo de origem.
-
Spec.sourceApplicationName: (required) esse valor deve corresponder ao nome do aplicativo de origem definido no CR do aplicativo de origem.
-
Spec.storageClassName: (required) escolha o nome de uma classe de armazenamento válida no cluster. A classe de storage deve ser vinculada a uma VM de storage do ONTAP que esteja vinculada ao ambiente de origem.
-
Spec.recurrenceRule: Defina uma data de início no horário UTC e um intervalo de recorrência.
Exemplo YAML:
-
-
Depois de preencher o
trident-protect-relationship.yaml
ficheiro com os valores corretos, aplique o CR:
-
-
(Optional) Verifique o estado e o estado da relação de replicação:
Failover para o cluster de destino
Com o Trident Protect, você pode fazer failover de aplicações replicadas para um cluster de destino. Este procedimento interrompe a relação de replicação e coloca a aplicação online no cluster de destino. O Trident Protect não interrompe o aplicativo no cluster de origem se ele estiver operacional.
-
Abra o arquivo CR do AppMirrorRelationship (por exemplo,
trident-protect-relationship.yaml
) e altere o valor de spec.desiredState paraPromoted
. -
Salve o arquivo CR.
-
Aplicar o CR:
-
(Optional) Crie todos os programas de proteção que você precisa no aplicativo com falha.
-
(Optional) Verifique o estado e o estado da relação de replicação:
Ressincronizar uma relação de replicação com falha
A operação ressincronizada restabelece a relação de replicação. Depois de executar uma operação ressincronizada, o aplicativo de origem original se torna o aplicativo em execução e quaisquer alterações feitas no aplicativo em execução no cluster de destino serão descartadas.
O processo pára o aplicativo no cluster de destino antes de restabelecer a replicação.
|
Todos os dados gravados na aplicação de destino durante o failover serão perdidos. |
-
Crie um instantâneo do aplicativo de origem.
-
Abra o arquivo CR do AppMirrorRelationship (por exemplo,
trident-protect-relationship.yaml
) e altere o valor de spec.desiredState paraEstablished
. -
Salve o arquivo CR.
-
Aplicar o CR:
-
Se você criou quaisquer programações de proteção no cluster de destino para proteger o aplicativo com falha, remova-os. Quaisquer programações restantes causam falhas de snapshot de volume.
Ressincronização reversa de uma relação de replicação com falha
Quando você faz a ressincronização reversa de uma relação de replicação com falha, o aplicativo de destino se torna o aplicativo de origem e a origem se torna o destino. As alterações feitas na aplicação de destino durante o failover são mantidas.
-
Exclua o AppMirrorRelationship CR no cluster de destino original. Isso faz com que o destino se torne a fonte. Se houver planos de proteção restantes no novo cluster de destino, remova-os.
-
Configure uma relação de replicação aplicando os arquivos CR usados originalmente para configurar a relação com os clusters opostos.
-
Certifique-se de que o AppVault CRS esteja pronto em cada cluster.
-
Configure uma relação de replicação no cluster oposto, configurando valores para a direção inversa.
Sentido de replicação da aplicação inversa
Quando você inverte a direção da replicação, o Trident Protect move o aplicativo para o back-end de storage de destino e continua replicando de volta para o back-end de storage de origem original. O Trident Protect interrompe a aplicação de origem e replica os dados para o destino antes de fazer o failover para a aplicação de destino.
Nesta situação, você está trocando a origem e o destino.
-
Criar um instantâneo de encerramento:
Crie um instantâneo de encerramento utilizando um CR-
Desative as programações de políticas de proteção para o aplicativo de origem.
-
Criar um ficheiro ShutdownSnapshot CR:
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
trident-protect-shutdownsnapshot.yaml
). -
Configure os seguintes atributos:
-
metadata.name: (required) o nome do recurso personalizado.
-
Spec.AppVaultRef: (required) este valor deve corresponder ao campo metadata.name do AppVault para o aplicativo de origem.
-
Spec.ApplicationRef: (required) este valor deve corresponder ao campo metadata.name do arquivo CR da aplicação de origem.
Exemplo YAML:
-
-
-
Depois de preencher o
trident-protect-shutdownsnapshot.yaml
ficheiro com os valores corretos, aplique o CR:
-
-
Após a conclusão do snapshot, obtenha o status do snapshot:
-
Encontre o valor de shutdownsnapshot.status.appArchivePath usando o seguinte comando, e Registre a última parte do caminho do arquivo (também chamado de basename; isso será tudo após a última barra):
-
Execute um failover do cluster de destino para o cluster de origem, com a seguinte alteração:
Na etapa 2 do procedimento de failover, inclua o spec.promotedSnapshot
campo no arquivo AppMirrorRelationship CR e defina seu valor para o nome de base registrado na etapa 3 acima. -
Execute as etapas de ressincronização reversa no Ressincronização reversa de uma relação de replicação com falha.
-
Ative programações de proteção no novo cluster de origem.
Resultado
As seguintes ações ocorrem devido à replicação reversa:
-
Um snapshot é obtido dos recursos do Kubernetes do aplicativo de origem original.
-
Os pods do aplicativo de origem original são interrompidos graciosamente ao excluir os recursos do Kubernetes do aplicativo (deixando PVCs e PVS no lugar).
-
Depois que os pods são desativados, snapshots dos volumes do aplicativo são feitos e replicados.
-
As relações do SnapMirror são quebradas, tornando os volumes de destino prontos para leitura/gravação.
-
Os recursos do Kubernetes do aplicativo são restaurados a partir do snapshot de pré-encerramento, usando os dados de volume replicados após o desligamento do aplicativo de origem original.
-
A replicação é restabelecida na direção inversa.
Falha de aplicativos para o cluster de origem original
Usando o Trident Protect, você pode obter "failback" após uma operação de failover usando a seguinte sequência de operações. Nesse fluxo de trabalho para restaurar a direção de replicação original, o Trident Protect replica (ressincrones) qualquer aplicativo é alterado de volta para o aplicativo de origem original antes de reverter a direção de replicação.
Esse processo começa a partir de um relacionamento que concluiu um failover para um destino e envolve as seguintes etapas:
-
Comece com um estado com falha em excesso.
-
Reverta a ressincronização da relação de replicação.
Não execute uma operação de ressincronização normal, pois isso descartará os dados gravados no cluster de destino durante o procedimento de failover. -
Inverta a direção da replicação.
-
Execute os Ressincronização reversa de uma relação de replicação com falha passos.
-
Execute os Sentido de replicação da aplicação inversa passos.
Excluir uma relação de replicação
Você pode excluir um relacionamento de replicação a qualquer momento. Quando você exclui a relação de replicação do aplicativo, isso resulta em dois aplicativos separados sem relação entre eles.
-
Excluir o AppMirrorRelationship CR: