Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise
/

Recuperação de desastres

Nesta página

  • Modos de recuperação após desastres
  • Recuperar manualmente de uma falha usando o plug-in MongoDB
  • Recupere a implantação do MongoDB do cluster multi-Kubernetes usando oplug-in kubectl do MongoDB .
  • Reequilibrar os nós de dados nos clusters Kubernetes íntegros.
  • Recuperar-se manualmente de uma falha usando fluxos de trabalho do GitOps

O Operador Kubernetes pode orquestrar a recuperação dos membros do conjunto de réplicas do MongoDB para um cluster Kubernetes íntegro quando o Operador Kubernetes identifica que o cluster Kubernetes original está inativo.

O Operador Kubernetes pode orquestrar uma correção automática ou manual dos recursos do MongoDBMultiCluster em um cenário de recuperação de desastres, utilizando um dos seguintes modos:

  • O Modo de Failover Automático permite que o Operador do Kubernetes desloque os membros do conjunto de réplicas do MongoDB afetado de um cluster do Kubernetes não íntegro para clusters do Kubernetes íntegros. Quando o Operador Kubernetes executa essa correção automática, ele distribui uniformemente os membros do conjunto de réplicas entre os clusters Kubernetes íntegros.

    Para habilitar este modo , utilize --set multiCluster.performFailover=true nos Charts MongoDB Helm para Kubernetes. No values.yaml arquivo no diretório do MongoDB Helm Charts for Kubernetes, o valor padrão da variável do ambiente é true.

    Como alternativa, você pode definir a variável de ambiente de sistema do MongoDB do cluster multi-Kubernetes PERFORM_FAILOVER como true, como no exemplo abreviado a seguir:

    spec:
    template:
    ...
    spec:
    containers:
    - name: mongodb-enterprise-operator
    ...
    env:
    ...
    - name: PERFORM_FAILOVER
    value: "true"
    ...
  • O modo failover manual (baseado em -ins)plugin permite que você use o MongoDB plug-in kubectl plugin do reconfigurar o Kubernetes Operator para usar novos Kubernetes clusters íntegros do . Neste modo, você distribui membros do conjunto de réplicas entre os novos clusters íntegros configurando o recurso MongoDBMultiCluster com base em sua configuração.

    Para habilitar este modo, utilize --set multiCluster.performFailover=true nos MongoDB Helm Charts para Kubernetes, ou defina aKubernetes MongoDB variável de ambiente deployment do cluster multi- PERFORM_FAILOVER como false, como no exemplo abreviado a seguir:

    spec:
    template:
    ...
    spec:
    containers:
    - name: mongodb-enterprise-operator
    ...
    env:
    ...
    - name: PERFORM_FAILOVER
    value: "false"
    ...

Observação

Você não pode confiar nos modos de failover automático ou manual quando um cluster Kubernetes que hospeda uma ou mais instâncias do Operador Kubernetes fica inativo ou o membro do conjunto de réplicas reside no mesmo cluster Kubernetes com falha que o Kubernetes que o gerencia.

Nesses casos, para restaurar os membros do conjunto de réplicas de clusters Kubernetes perdidos para os clusters Kubernetes íntegros restantes, você deve primeiro restaurar a instância do Kubernetes Operator que gerencia seus sistemas MongoDB do cluster multi-Kubernetes ou reimplantar o Kubernetes Operator em um dos clusters Kubernetes restantes e execute novamente o plug-in kubectl mongodb . Para saber mais, consulte Recuperar manualmente de uma falha usando o plug-in do MongoDB.

Quando um cluster Kubernetes que hospeda uma ou mais instâncias do Kubernetes Operator é desativado ou o membro do conjunto de réplicas reside no mesmo cluster Kubernetes com falha que o Kubernetes que o gerencia, você não pode confiar nos modos de failover automático ou manual e deve usar o seguinte procedimento para recuperar manualmente de um cluster Kubernetes com falha.

O procedimento a seguir usa o plug- in MongoDB Kubectl para:

  • Configure novos clusters Kubernetes íntegros.

  • Adicione estes clusters Kubernetes como novos clusters membros ao mongodb-enterprise-operator-member-list ConfigMap para seu sistema MongoDB de clusters Kubernetes múltiplos.

  • Reequilibre os nós que hospedam recursos do MongoDBMultiCluster nos nós nos clusters Kubernetes íntegros.

O tutorial a seguir sobre recuperação manual de desastres pressupõe que você:

  • Implementou um cluster central e três clusters de membros, seguindo o Quick Start de Multi-Kubernetes-Cluster. Nesse caso, o Kubernetes Operator é instalado com o failover automatizado desabilitado com --set multiCluster.performFailover=false.

  • Implantou um recurso MongoDBMultiCluster da seguinte forma:

    kubectl apply -n mongodb -f - <<EOF
    apiVersion: mongodb.com/v1
    kind: MongoDBMultiCluster
    metadata:
    name: multi-replica-set
    spec:
    version: 6.0.5-ent
    type: ReplicaSet
    persistent: false
    duplicateServiceObjects: true
    credentials: my-credentials
    opsManager:
    configMapRef:
    name: my-project
    security:
    tls:
    ca: custom-ca
    clusterSpecList:
    - clusterName: ${MDB_CLUSTER_1_FULL_NAME}
    members: 3
    - clusterName: ${MDB_CLUSTER_2_FULL_NAME}
    members: 2
    - clusterName: ${MDB_CLUSTER_3_FULL_NAME}
    members: 3
    EOF

O Operador Kubernetes verifica periodicamente a conectividade com os clusters no sistema MongoDB de clusters multi-Kubernetes fazendo ping nos endpoints /healthz dos servidores correspondentes. Para saber mais sobre /healthz, consulte Endpoints de integridade da API do Kubernetes.

Caso CLUSTER_3 em nosso exemplo fique indisponível, o Kubernetes Operator detecta as conexões com falha com o cluster e marca os recursos MongoDBMultiCluster com a anotação failedClusters para reconciliações subsequentes.

Os recursos com nós de dados distribuídos nesse cluster falham na reconciliação até que você execute as etapas manuais de recuperação, como no procedimento a seguir.

Para reequilibrar os nós de dados do MongoDB para que todos os volumes de trabalho sejam executados em CLUSTER_1 e CLUSTER_2:

1
kubectl mongodb multicluster recover \
--central-cluster="MDB_CENTRAL_CLUSTER_FULL_NAME" \
--member-clusters="${MDB_CLUSTER_1_FULL_NAME},${MDB_CLUSTER_2_FULL_NAME}" \
--member-cluster-namespace="mongodb" \
--central-cluster-namespace="mongodb" \
--operator-name=mongodb-enterprise-operator-multi-cluster \
--source-cluster="${MDB_CLUSTER_1_FULL_NAME}"

Este comando:

  • Reconfigura o Operador Kubernetes para gerenciar volumes de trabalho nos dois clusters Kubernetes íntegros. (Esta lista também pode incluir novos clusters Kubernetes).

  • Marca CLUSTER_1 como a origem da configuração do nó do membro para novos clusters do Kubernetes. Replica a configuração de role e conta de serviço para corresponder à configuração em CLUSTER_1.

2

Reconfigure o recurso MongoDBMultiCluster para reequilibrar os nós de dados nos clusters Kubernetes íntegros editando os recursos afetados pela alteração:

kubectl apply -n mongodb -f - <<EOF
apiVersion: mongodb.com/v1
kind: MongoDBMultiCluster
metadata:
name: multi-replica-set
spec:
version: 6.0.0-ent
type: ReplicaSet
persistent: false
duplicateServiceObjects: true
credentials: my-credentials
opsManager:
configMapRef:
name: my-project
security:
tls:
ca: custom-ca
clusterSpecList:
- clusterName: ${MDB_CLUSTER_1_FULL_NAME}
members: 4
- clusterName: ${MDB_CLUSTER_2_FULL_NAME}
members: 3
EOF

Para obter um exemplo de uso do plugin -in kubectl do MongoDB em um fluxo de trabalho GitOps com ARG CD, consulte o exemplo de plugin -in de vários clusters para GitOps.

A recuperação do GitOps requer reconfiguração manual do Controle de Acesso Baseado em Função usando .yaml arquivos de recursos . Para saber mais, consulte Noções básicas sobre funções e vinculações de funções do Kubernetes.

Voltar

Cluster fragmentado