Skip to main content
Uma versão mais recente deste produto está disponível.
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Replicar volumes usando SnapMirror

Trident oferece suporte a relações de espelhamento entre um volume de origem em um cluster e o volume de destino no cluster emparelhado para replicação de dados em casos de recuperação de desastres.  Você pode usar uma Definição de Recurso Personalizado (CRD) com namespace, chamada Trident Mirror Relationship (TMR), para realizar as seguintes operações:

  • Criar relações de espelhamento entre volumes (PVCs)

  • Remova relações de espelhamento entre volumes

  • Interrompa os relacionamentos espelhados

  • Promover o volume secundário em situações de desastre (falhas)

  • Realizar a transição sem perda de dados de aplicações de um cluster para outro (durante failovers ou migrações planejadas)

Pré-requisitos de replicação

Certifique-se de que os seguintes pré-requisitos sejam atendidos antes de começar:

Clusters do ONTAP
  • Trident: A versão 22.10 ou posterior do Trident deve existir em ambos os clusters Kubernetes de origem e destino que utilizam ONTAP como backend.

  • Licenças: As licenças assíncronas do ONTAP SnapMirror usando o pacote Data Protection devem estar habilitadas tanto nos clusters ONTAP de origem quanto de destino. Consulte "SnapMirror visão geral do licenciamento no ONTAP" para mais informações.

    A partir do ONTAP 9.10.1, todas as licenças são fornecidas como um arquivo de licença NetApp (NLF), que é um único arquivo que habilita vários recursos. Consulte "Licenças incluídas com o ONTAP One" para mais informações.

    Observação Apenas a proteção assíncrona SnapMirror é suportada.
Peering
  • Cluster e SVM: Os backends de armazenamento ONTAP devem estar emparelhados. Consulte "Visão geral do peering de cluster e SVM" para mais informações.

    Importante Certifique-se de que os nomes SVM usados na relação de replicação entre dois clusters ONTAP sejam únicos.
  • Trident e SVM: Os SVMs remotos emparelhados devem estar disponíveis para Trident no cluster de destino.

Drivers com suporte

NetApp Trident suporta replicação de volumes com a tecnologia NetApp SnapMirror usando classes de armazenamento com suporte dos seguintes drivers: ontap-nas: NFS ontap-san: iSCSI ontap-san: FC ontap-san: NVMe/TCP (requer versão mínima do ONTAP 9.15.1)

Observação A replicação de volume usando SnapMirror não é suportada para sistemas ASA r2. Para obter informações sobre sistemas ASA r2, consulte "Saiba mais sobre os sistemas de armazenamento ASA r2".

Crie um PVC espelhado

Siga estes passos e utilize os exemplos de CRD para criar relação de espelhamento entre os volumes primário e secundário.

Passos
  1. Execute as seguintes etapas no cluster Kubernetes primário:

    1. Crie um objeto StorageClass com o parâmetro trident.netapp.io/replication: true.

      Exemplo
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: csi-nas
      provisioner: csi.trident.netapp.io
      parameters:
        backendType: "ontap-nas"
        fsType: "nfs"
        trident.netapp.io/replication: "true"
    2. Crie um PVC com StorageClass previamente criado.

      Exemplo
      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: csi-nas
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 1Gi
        storageClassName: csi-nas
    3. Crie um MirrorRelationship CR com informações locais.

      Exemplo
      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
      spec:
        state: promoted
        volumeMappings:
        - localPVCName: csi-nas

      Trident obtém as informações internas do volume e o estado atual de proteção de dados (DP) do volume, em seguida, preenche o campo de status do MirrorRelationship.

    4. Obtenha o TridentMirrorRelationship CR para obter o nome interno e o SVM do PVC.

      kubectl get tmr csi-nas
      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
        generation: 1
      spec:
        state: promoted
        volumeMappings:
        - localPVCName: csi-nas
      status:
        conditions:
        - state: promoted
          localVolumeHandle: "datavserver:trident_pvc_3bedd23c_46a8_4384_b12b_3c38b313c1e1"
          localPVCName: csi-nas
          observedGeneration: 1
  2. Execute as seguintes etapas no cluster Kubernetes secundário:

    1. Crie um StorageClass com o parâmetro trident.netapp.io/replication: true.

      Exemplo
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: csi-nas
      provisioner: csi.trident.netapp.io
      parameters:
        trident.netapp.io/replication: true
    2. Crie um CR MirrorRelationship com informações de destino e origem.

      Exemplo
      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
      spec:
        state: established
        volumeMappings:
        - localPVCName: csi-nas
          remoteVolumeHandle: "datavserver:trident_pvc_3bedd23c_46a8_4384_b12b_3c38b313c1e1"

      Trident criará um SnapMirror relacionamento com o nome da política de relacionamento configurada (ou padrão para ONTAP) e o inicializará.

    3. Crie um PVC com o StorageClass previamente criado para atuar como secundário (SnapMirror destino).

      Exemplo
      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: csi-nas
        annotations:
          trident.netapp.io/mirrorRelationship: csi-nas
      spec:
        accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: csi-nas

      Trident verificará o CRD TridentMirrorRelationship e não conseguirá criar o volume se o relacionamento não existir. Se o relacionamento existir, Trident garantirá que o novo volume FlexVol seja colocado em uma SVM que esteja emparelhada com a SVM remota definida no MirrorRelationship.

Estados de replicação de volume

Um Trident Mirror Relationship (TMR) é um CRD que representa uma das extremidades de uma relação de replicação entre PVCs. O TMR de destino possui um estado, que informa ao Trident qual é o estado desejado. O TMR de destino possui os seguintes estados:

  • Estabelecido: o PVC local é o volume de destino de uma relação de espelhamento, e esta é uma nova relação.

  • Promovido: o PVC local é ReadWrite e montável, sem relação de espelhamento em vigor no momento.

  • Reestabelecido: o PVC local é o volume de destino de uma relação de espelhamento e também estava anteriormente nessa relação de espelhamento.

    • O estado restabelecido deve ser usado se o volume de destino já teve alguma relação com o volume de origem, pois ele sobrescreve o conteúdo do volume de destino.

    • O estado restabelecido falhará se o volume não estava previamente em uma relação com a origem.

Promover o PVC secundário durante uma falha não planejada

Execute a seguinte etapa no cluster Kubernetes secundário:

  • Atualize o campo spec.state de TridentMirrorRelationship para promoted.

Promover o PVC secundário durante uma falha planejada

Durante um failover (migração) planejado, execute as seguintes etapas para promover o PVC secundário:

Passos
  1. No cluster Kubernetes primário, crie um snapshot do PVC e aguarde até que o snapshot seja criado.

  2. No cluster Kubernetes primário, crie o SnapshotInfo CR para obter detalhes internos.

    Exemplo
    kind: SnapshotInfo
    apiVersion: trident.netapp.io/v1
    metadata:
      name: csi-nas
    spec:
      snapshot-name: csi-nas-snapshot
  3. No cluster Kubernetes secundário, atualize o campo spec.state do CR TridentMirrorRelationship para promoted e spec.promotedSnapshotHandle para ser o internalName do snapshot.

  4. No cluster Kubernetes secundário, confirme o status (campo status.state) de TridentMirrorRelationship para promovido.

Restaurar uma relação de espelhamento após uma falha

Antes de restaurar a relação de espelhamento, escolha o lado que deseja definir como o novo primário.

Passos
  1. No cluster Kubernetes secundário, verifique se os valores do campo spec.remoteVolumeHandle em TridentMirrorRelationship foram atualizados.

  2. No cluster Kubernetes secundário, atualize o campo spec.mirror de TridentMirrorRelationship para reestablished.

Operações adicionais

Trident suporta as seguintes operações nos volumes primário e secundário:

Replicar o PVC primário em um novo PVC secundário

Certifique-se de que você já possui um PVC primário e um PVC secundário.

Passos
  1. Exclua os CRDs PersistentVolumeClaim e TridentMirrorRelationship do cluster secundário (destino) estabelecido.

  2. Exclua o CRD TridentMirrorRelationship do cluster primário (de origem).

  3. Crie um novo TridentMirrorRelationship CRD no cluster primário (origem) para o novo PVC secundário (destino) que você deseja estabelecer.

Redimensione um PVC espelhado, primário ou secundário

O PVC pode ser redimensionado normalmente, o ONTAP expandirá automaticamente qualquer FlexVol volume de destino se a quantidade de dados exceder o tamanho atual.

Remover replicação de um PVC

Para remover a replicação, execute uma das seguintes operações no volume secundário atual:

  • Exclua o MirrorRelationship no PVC secundário. Isso interrompe a relação de replicação.

  • Ou, atualize o campo spec.state para promoted.

Excluir um PVC (que foi previamente espelhado)

Trident verifica se há PVCs replicados e libera a relação de replicação antes de tentar excluir o volume.

Excluir um TMR

A exclusão de um TMR em um dos lados de um relacionamento espelhado faz com que o TMR restante passe para o estado promovido antes que o Trident conclua a exclusão. Se o TMR selecionado para exclusão já estiver no estado promovido, não haverá um relacionamento espelhado existente e o TMR será removido e o Trident promoverá o PVC local para ReadWrite. Essa exclusão libera os metadados SnapMirror do volume local no ONTAP. Se esse volume for usado em um relacionamento espelhado no futuro, será necessário usar um novo TMR com um estado de replicação de volume estabelecido ao criar o novo relacionamento espelhado.

Atualize os relacionamentos de espelhamento quando ONTAP estiver online

As relações de espelhamento podem ser atualizadas a qualquer momento após serem estabelecidas. Você pode usar o state: promoted ou state: reestablished campos para atualizar as relações. Ao promover um volume de destino para um volume ReadWrite regular, você pode usar promotedSnapshotHandle para especificar um snapshot específico para restaurar o volume atual.

Atualizar relações de espelhamento quando ONTAP estiver offline

Você pode usar um CRD para realizar uma atualização SnapMirror sem que o Trident tenha conectividade direta com o cluster ONTAP. Consulte o seguinte exemplo de formato do TridentActionMirrorUpdate:

Exemplo
apiVersion: trident.netapp.io/v1
kind: TridentActionMirrorUpdate
metadata:
  name: update-mirror-b
spec:
  snapshotHandle: "pvc-1234/snapshot-1234"
  tridentMirrorRelationshipName: mirror-b

status.state reflete o estado do TridentActionMirrorUpdate CRD. Pode assumir um valor de Succeeded, In Progress ou Failed.