Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Learn why MongoDB was selected as a leader in the 2024 Gartner® Magic Quadrant™
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Conectoreschevron-right

Dominando o MongoDB Ops Manager no Kubernetes

Arek Borucki7 min read • Published Jan 13, 2023 • Updated Jan 13, 2023
KubernetesConectores
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Este artigo faz parte de uma série de três partes sobre a implantação do MongoDB em vários clusters Kubernetes usando os operadores.
Gerenciar implantações do MongoDB pode ser uma tarefa rigorosa, principalmente quando se trabalha com um grande número de bancos de dados e servidores. Sem as ferramentas e os processos corretos, pode ser demorado garantir que essas implantações sejam executadas de forma suave e eficiente. Um problema significativo no gerenciamento de clusters MongoDB em escala é a falta de automação, o que pode levar a tarefas demoradas e propensas a erros, como backups, recuperação e atualizações. Essas tarefas são cruciais para manter a disponibilidade e o desempenho dos seus clusters.
Além disso, o monitoramento e os alertas podem ser um desafio, pois pode ser difícil identificar e resolver problemas com suas implantações. Para resolver esses problemas, é essencial usar um software que ofereça recursos de monitoramento e alerta. Otimizar o desempenho de suas implantações também requer orientação e suporte das fontes certas.
Por fim, é fundamental que suas implantações sejam seguras e compatíveis com os padrões do setor. Para conseguir isso, você precisa de recursos que possam ajudá-lo a determinar se suas implantações atendem a esses padrões.
O MongoDB Ops Manager é um aplicativo baseado na web projetado para ajudar no gerenciamento e monitoramento das implementações do MongoDB. Ele oferece uma variedade de funcionalidades que facilitam a implementação, gerenciamento e monitoramento de bancos de dados MongoDB, como:
  • Backups e recuperação automatizados: o Ops Manager pode fazer backups automatizados de suas implantações do MongoDB e fornecer opções de recuperação em caso de falha.
  • Monitoramento e alerta: o Ops Manager fornece recursos de monitoramento e alerta para ajudar a identificar e resolver problemas com suas implantações do MongoDB.
  • Otimização de desempenho: o Ops Manager oferece ferramentas e recomendações para otimizar o desempenho de suas implantações MongoDB.
  • Gerenciamento de atualizações: o MongoDB Ops Manager pode ajudá-lo a gerenciar e planejar atualizações em suas implementações do MongoDB , incluindo atualizações e backups contínuos para garantir a disponibilidade dos dados durante o processo de atualização.
  • Segurança e conformidade: o Ops Manager fornece recursos para ajudá-lo a proteger suas implementações do MongoDB e atender aos requisitos de conformidade.
No entanto, gerenciar o Ops Manager pode ser uma tarefa desafiadora que requer uma compreensão completa de seu funcionamento interno e como ele interage com os bancos de dados internos do MongoDB. É necessário ter conhecimento e expertise para realizar atualizações, monitorá-lo, auditá-lo e garantir sua segurança. Como o Ops Manager é uma parte crucial do gerenciamento da operação de seus bancos de dados MongoDB, seu gerenciamento adequado é essencial.
Felizmente, o MongoDB Enterprise Kubernetes Operator nos permite executar o Ops Manager em clusters do Kubernetes, usando recursos nativos do Kubernetes para gerenciar o Ops Manager para nós, o que o torna mais conveniente e eficiente.

Recurso personalizado do Kubernetes: MongoDBOpsManager

O MongoDB Enterprise Kubernetes Operator é um software que pode ser usado para implantar recursos do Ops Manager e do MongoDB em um cluster Kubernetes e é responsável por gerenciar o ciclo de vida de cada uma dessas implantações. Ele foi desenvolvido com base em anos de experiência e conhecimento e está preparado para instalar, atualizar, monitorar, gerenciar e proteger adequadamente os objetos do MongoDB no Kubernetes.
O Kubernetes Operator usa o recurso personalizado MongoDBOpsManager para gerenciar objetos do Ops Manager. Ele monitora constantemente a especificação do recurso personalizado para quaisquer alterações e, quando são detectadas alterações, o operador as valida e faz as atualizações necessárias nos recursos no cluster Kubernetes.
A especificação de recursos personalizados do MongoDBOpsManager define os seguintes componentes do Ops Manager:
A especificação de recursos personalizados do MongoDBOpsManager define os seguintes componentes do Ops Manager: o banco de dados de aplicativos, o aplicativo Ops Manager e o Backup Daemon.
Quando você usa o Operador Kubernetes para criar uma instância do Ops Manager, o banco de dados de aplicativos MongoDB do Ops Manager será implantado como um conjunto de réplicas. Não é possível configurar o banco de dados de aplicativos como um banco de dados autônomo ou um cluster sharded.
O Operador do Kubernetes configura automaticamente o Ops Manager para monitorar o aplicativo de banco de dados que alimenta o Aplicativo do Ops Manager. Ele cria um projeto denominado  <ops-manager-deployment-name>-db para permitir que você monitore a implantação do Banco de Dados do Aplicativo. Enquanto o Ops Manager monitora a implantação do aplicativo de banco de dados, ele não o gerencia.
Ao implementar o Ops Manager, você precisa configurá-lo. Isso normalmente envolve o uso do assistente de configuração. No entanto, você pode ignorar o assistente de configuração se definir determinadas configurações essenciais na especificação do objeto antes da implementação. Mostrarei isso neste post.
O Operador ativa automaticamente o backup. Ele implanta um StatefulSet, que consiste em um único pod, para hospedar o Backup Daemon Service e cria uma declaração de volume persistente e um volume persistente para o banco de dados principal do Backup Daemon. O operador usa a API do Ops Manager para habilitar o Backup Daemon e configurar o banco de dados principal.

Começar

Tudo bem, vamos começar a usar o operador e construir algo! Para este tutorial, precisaremos das seguintes ferramentas: 
Para começar, devemos primeiro criar um cluster Kubernetes e, em seguida, instalar o MongoDB Kubernetes Operator no cluster. A parte 1 desta série fornece instruções sobre como fazer isso.
Observação Para simplificar, estamos implantando o Ops Manager no mesmo namespace que o MongoDB Operator. Em um ambiente de produção, você deve implantar o Ops Manager em seu próprio namespace.

Pré-verificações do ambiente 

Após a criação bem-sucedida de um cluster e a instalação do operador (descrito na parte 1), é essencial validar sua prontidão para uso.
1gcloud container clusters list
2
3NAME                LOCATION       MASTER_VERSION    NUM_NODES  STATUS\
4master-operator     us-south1-a    1.23.14-gke.1800      4      RUNNING
Exiba nosso novo nome de cluster completo Kubernetes usando [kubectx](https://github.com/ahmetb/kubectx).
1kubectx
Você deverá ver seu cluster listado aqui. Certifique-se de que seu contexto esteja definido como cluster mestre.
1kubectx $(kubectx | grep "master-operator" | awk '{print $1}')
Para continuar este tutorial, certifique-se de que o operador esteja no estadorunning.
1kubectl get po -n "${NAMESPACE}"
2
3NAME                                    READY   STATUS   RESTARTS   AGE\
4mongodb-enterprise-operator-649bbdddf5   1/1    Running   0         7m9s

Usando o CRD MongoDBOpsManager

Crie um segredo contendo o nome de usuário e a senha no cluster mestre do Kubernetes para acessar a interface de usuário do Ops Manager após a instalação.
1kubectl -n "${NAMESPACE}" create secret generic om-admin-secret \
2 --from-literal=Username="opsmanager@example.com" \
3 --from-literal=Password="p@ssword123" \
4 --from-literal=FirstName="Ops" \
5 --from-literal=LastName="Manager"
​​

Implantando o Ops Manager 

Em seguida, podemos implantar o Ops Manager no cluster mestre do Kubernetes com a ajuda de opsmanagers Recurso Personalizado, criando MongoDBOpsManager objeto, usando o seguinte manifesto:
1OM_VERSION=6.0.5
2APPDB_VERSION=5.0.5-ent
3kubectl apply -f - <<EOF
4apiVersion: mongodb.com/v1
5kind: MongoDBOpsManager
6metadata:
7 name: ops-manager
8 namespace: "${NAMESPACE}"
9spec:
10 version: "${OM_VERSION}"
11 # the name of the secret containing admin user credentials.
12 adminCredentials: om-admin-secret
13 externalConnectivity:
14 type: LoadBalancer
15 configuration:
16 mms.ignoreInitialUiSetup: "true"
17 automation.versions.source: mongodb
18 mms.adminEmailAddr: support@example.com
19 mms.fromEmailAddr: support@example.com
20 mms.replyToEmailAddr: support@example.com
21 mms.mail.hostname: example.com
22 mms.mail.port: "465"
23 mms.mail.ssl: "false"
24 mms.mail.transport: smtp
25 # the Replica Set backing Ops Manager.
26 applicationDatabase:
27 members: 3
28 version: "${APPDB_VERSION}"
29EOF
Após alguns minutos, devemos ver nossos pods de banco de dados de aplicativos Ops Manager e MongoDB do Ops Manager em execução.
1kubectl -n "${NAMESPACE}" get pods
2
3NAME                                       READY      STATUS     RESTARTS
4ops-manager-0                           1/1      Running      0
5ops-manager-db-0                        3/3      Running      0
6ops-manager-db-1                        3/3      Running      0
7ops-manager-db-2                        3/3      Running      0
A criação de peças de armazenamento foi orquestrada pelo operador. Volumes persistentes As declarações  são criadas e podem ser exibidas por meio de
1kubectl -n "${NAMESPACE}" get pvc
2
3NAME       STATUS   VOLUME     CAPACITY  ACCESS MODES   STORAGE CLASS   AGE
4data-ops-manager-db-0 Bound pvc-d5a1b385-6d1b  15Gi  RWO  standard  59m
5data-ops-manager-db-1 Bound pvc-db0e89dc-d73a  15Gi  RWO  standard  58m
6data-ops-manager-db-2 Bound pvc-c7e124a2-917   15Gi  RWO  standard  57m
O Kubernetes StatefulSets também foi criado pelo Operador.
1kubectl -n "${NAMESPACE}" get sts
2
3NAME             READY   AGE
4ops-manager      1/1     29m31s
5ops-manager-db   3/3     30m29s
O operador criou todos os serviços de rede necessários, incluindo um tipo de serviço Load Balancer para o acesso do Ops Manager, então agora temos um endereço IP externo e podemos fazer login no Ops Manager de fora do cluster Kubernetes. Você pode verificar IPs visualizando os serviços.
1kubectl -n "${NAMESPACE}" get svc
2
3NAME                  TYPE    CLUSTER-IP    EXTERNAL-IP  PORT(S)
4ops-manager-db-svc  ClusterIP    None        <none>      27017/TCP
5ops-manager-svc     ClusterIP    None        <none       8080/TCP,25999/TCP
6ops-manager-svc-ext LoadBalancer 10.76.10.231 34.174.54.103 8080:32078/TCP ,25999:31961/TCP    
O diagrama a seguir descreve como o Kubernetes Operator reconcilia as alterações na definição de recurso personalizado do MongoDBOpsManager.
Diagrama que descreve como o operador do MongoDB Enterprise Kubernetes reconcilia as alterações na definição de recurso personalizado do MongoDBOpsManager
Para gerar o endereço URL do MongoDB Ops Manager, execute:
1URL=http://$(kubectl -n "${NAMESPACE}" get svc ops-manager-svc-ext -o jsonpath='{.status.loadBalancer.ingress[0].ip}:{.spec.ports[0].port}')
2echo $URL
O endereço URL será semelhante ao exemplo fornecido, mas o endereço IP pode variar dependendo do cluster Kubernetes.
1http://34.174.54.105:8080
A etapa final é atualizar o manifesto do Ops Manager Kubernetes para incluir um endereço IP externo criado pelo Balanceador de carga no spec.configuration.mms.centralUrl via kubectl patch.
1kubectl -n "${NAMESPACE}" patch om ops-manager --type=merge -p "{\"spec\":{\"configuration\":{\"mms.centralUrl\":\"${URL}\"}}}"
Devemos esperar alguns minutos. O pod do Ops Manager deve ser reiniciado, então aguarde até que o podops-manager-0 esteja no estado running novamente.
Usando o nome de usuário e a senha armazenados no om-admin-secret (opsmanager@example.com : p@ssword123), podemos nos conectar à interface de usuário do Ops Manager usando o endereço na variável$URL .
Insira seu nome de usuário e senha e clique em Login
O Operador Kubernetes estava na organização Ops Manager ops-manager-db e no projetoops-manager-db.
Selecione a organização do Ops Manager
Se clicarmos no projeto ops-manager-db, seremos redirecionados para o painel em que podemos ver os pods de banco de dados do aplicativo Ops Manager. O Ops Manager monitora esse banco de dados.
Gerencie seu cluster MongoDB a partir do Ops Manager

Solução de problemas básicos

Se você tiver problemas durante a instalação, aqui estão algumas dicas para ajudá-lo a investigar o que deu errado.
Se você quiser exibir um cluster do Ops Manager, use este comando. Ele mostrará uma visão geral dos objetosom, incluindo o banco de dados interno e o estado do Backup Daemon.
1kubectl -n "${NAMESPACE}" get om
2
3NAME REPLICAS VERSION STATE(OPSMANAGER) STATE(APPDB) STATE (BACKUP)   AGE
4ops-manager     6.0.5     Running        Running     Pending          18m  
Você pode usar describe para obter uma visão geral detalhada.
1kubectl -n "${NAMESPACE}" describe om ops-manager
É sempre uma boa ideia verificar os registros do Ops Manager
1kubectl -n "${NAMESPACE}" logs -f po/ops-manager-0
ou eventsatual do namespace.
1kubectl -n "${NAMESPACE}" get events

Resumo

Acabamos de instalar o Ops Manager em nosso cluster Kubernetes. Isso nos traz muitos benefícios. A operadora instalou e configurou corretamente a instância do Ops Manager com o banco de dados interno, cuidou da parte de armazenamento e criou serviços de rede, incluindo um Load Balancer. Agora podemos usar o MongoDB Ops Manager e criar facilmente qualquer tipo de MongoDB database no cluster Kubernetes seguindo as melhores práticas, monitorar instâncias de nossos bancos de dados, introduzir otimizações de consulta com a ajuda do consultor de desempenho do MongoDB Ops Manager e fornecer backup, restauração ou rolamento. atualizações por meio da automação.
Na próxima parte, demonstrarei como executar o tipo mais recente de Recurso Personalizado do Kubernetes MongoDB, um Conjunto de Réplicas de Multicluster. Esse conjunto de réplicas será implantado em três clusters Kubernetes separados localizados em regiões diferentes, fornecendo a solução ideal para aplicativos críticos que exigem disponibilidade contínua, mesmo no caso de falha de um cluster Kubernetes. Quer começar a usar o MongoDB Ops Manager em seu próprio cluster Kubernetes? Instale-o agora e veja por si mesmo como ele pode simplificar suas operações. Certifique-se de visitar o fórum da comunidade MongoDB para obter as discussões e recursos mais recentes

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
{Parte de uma série
Implantação do MongoDB em vários clusters do Kubernetes
Próximo
Continuar

Mais nesta série
Relacionado
Tutorial

Ajustando o MongoDB Connector para Apache Kafka


Sep 17, 2024 | 10 min read
Tutorial

Vá para o MongoDB usando conectores Kafka - Guia final do agente


Sep 17, 2024 | 7 min read
Tutorial

Como começar a usar o MongoDB Atlas Stream Processing e o provedor HashiCorp Terraform MongoDB Atlas


May 20, 2024 | 5 min read
Tutorial

Ative seu MongoDB e BigQuery usando procedimentos armazenados do BigQuery Spark


Aug 12, 2024 | 5 min read
Sumário