Dominando o MongoDB Ops Manager no Kubernetes
Avalie esse Tutorial
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.
- Dominando o MongoDB Ops Manager
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.
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:
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.
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.
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.
1 gcloud container clusters list 2 3 NAME LOCATION MASTER_VERSION NUM_NODES STATUS\ 4 master-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)
.1 kubectx
Você deverá ver seu cluster listado aqui. Certifique-se de que seu contexto esteja definido como cluster mestre.
1 kubectx $(kubectx | grep "master-operator" | awk '{print $1}')
Para continuar este tutorial, certifique-se de que o operador esteja no estado
running
.1 kubectl get po -n "${NAMESPACE}" 2 3 NAME READY STATUS RESTARTS AGE\ 4 mongodb-enterprise-operator-649bbdddf5 1/1 Running 0 7m9s
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.
1 kubectl -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"
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:1 OM_VERSION=6.0.5 2 APPDB_VERSION=5.0.5-ent 3 kubectl apply -f - <<EOF 4 apiVersion: mongodb.com/v1 5 kind: MongoDBOpsManager 6 metadata: 7 name: ops-manager 8 namespace: "${NAMESPACE}" 9 spec: 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}" 29 EOF
Após alguns minutos, devemos ver nossos pods de banco de dados de aplicativos Ops Manager e MongoDB do Ops Manager em execução.
1 kubectl -n "${NAMESPACE}" get pods 2 3 NAME READY STATUS RESTARTS 4 ops-manager-0 1/1 Running 0 5 ops-manager-db-0 3/3 Running 0 6 ops-manager-db-1 3/3 Running 0 7 ops-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
1 kubectl -n "${NAMESPACE}" get pvc 2 3 NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGE CLASS AGE 4 data-ops-manager-db-0 Bound pvc-d5a1b385-6d1b 15Gi RWO standard 59m 5 data-ops-manager-db-1 Bound pvc-db0e89dc-d73a 15Gi RWO standard 58m 6 data-ops-manager-db-2 Bound pvc-c7e124a2-917 15Gi RWO standard 57m
O Kubernetes StatefulSets também foi criado pelo Operador.
1 kubectl -n "${NAMESPACE}" get sts 2 3 NAME READY AGE 4 ops-manager 1/1 29m31s 5 ops-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.
1 kubectl -n "${NAMESPACE}" get svc 2 3 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) 4 ops-manager-db-svc ClusterIP None <none> 27017/TCP 5 ops-manager-svc ClusterIP None <none 8080/TCP,25999/TCP 6 ops-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.
Para gerar o endereço URL do MongoDB Ops Manager, execute:
1 URL=http://$(kubectl -n "${NAMESPACE}" get svc ops-manager-svc-ext -o jsonpath='{.status.loadBalancer.ingress[0].ip}:{.spec.ports[0].port}') 2 echo $URL
O endereço URL será semelhante ao exemplo fornecido, mas o endereço IP pode variar dependendo do cluster Kubernetes.
1 http://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
.1 kubectl -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 pod
ops-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
.O Operador Kubernetes estava na organização Ops Manager
ops-manager-db
e no projetoops-manager-db
.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.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 objetos
om
, incluindo o banco de dados interno e o estado do Backup Daemon.1 kubectl -n "${NAMESPACE}" get om 2 3 NAME REPLICAS VERSION STATE(OPSMANAGER) STATE(APPDB) STATE (BACKUP) AGE 4 ops-manager 6.0.5 Running Running Pending 18m
Você pode usar
describe
para obter uma visão geral detalhada.1 kubectl -n "${NAMESPACE}" describe om ops-manager
É sempre uma boa ideia verificar os registros do Ops Manager
1 kubectl -n "${NAMESPACE}" logs -f po/ops-manager-0
ou
events
atual do namespace.1 kubectl -n "${NAMESPACE}" get events
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