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.
Modos de recuperação após desastres
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. Novalues.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
comotrue
, 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
comofalse
, 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.
Recuperar manualmente de uma falha usando o plug-in 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
:
Recupere a implementação do MongoDB do cluster multi-Kubernetes usando o plug- in MongoDB kubectl.plugin
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 emCLUSTER_1
.
Reequilibrar os nós de dados nos clusters Kubernetes íntegros.
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
Recuperar-se manualmente de uma falha usando fluxos de trabalho do GitOps
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.