MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como implantar o MongoDB para alta disponibilidade

Introdução


O MongoDB tem um ótimo suporte para alta disponibilidade por meio de ReplicaSets. No entanto, implantar um ReplicaSet não é suficiente para um sistema pronto para produção. Este último requer um pouco de planejamento. A implantação é apenas o passo inicial, então precisamos equipar as equipes operacionais com monitoramento, alerta, segurança, detecção de anomalias ou falhas, recuperação/failover automático, gerenciamento de backup e outras ferramentas para manter o ambiente funcionando.

Pré-requisitos


Antes de iniciar a implantação do MongoDB com ClusterControl, alguns preparativos são necessários. As plataformas suportadas são RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS e Debian 7.x/8.x Os requisitos mínimos de recursos do SO são 2GB de RAM, 2CPU e 20GB de espaço em disco rodando em x86 arquitetura. O próprio ClusterControl pode ser executado em VMs regulares ou hosts barebone executados no local, atrás de um firewall ou em VMs na nuvem.

Além disso, o ClusterControl requer que as portas usadas pelos seguintes serviços sejam abertas/habilitadas:
ICMP (resposta/solicitação de eco)
SSH (o padrão é 22)
HTTP (o padrão é 80)
HTTPS (o padrão é 443)
MySQL (o padrão é 3306) (banco de dados interno)
CMON RPC (o padrão é 9500)
CMON RPC TLS (o padrão é 9501)
CMON Events (o padrão é 9510)
CMON SSH (o padrão é 9511)
CMON Cloud (o padrão é 9518)

Porta de streaming para backups via netcat (o padrão é 9999)

A maneira mais fácil e conveniente de instalar o ClusterControl é usar o script de instalação fornecido pela Variousnines. Basta baixar o script e executar como usuário root ou usuário com permissão sudo root. Se você precisar de uma abordagem mais manual, por exemplo, se seus servidores estiverem totalmente sem acesso à Internet, siga as instruções fornecidas na documentação do ClusterControl.
$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Siga o assistente de instalação onde você será guiado com a configuração de um servidor de banco de dados ClusterControl interno e suas credenciais, a senha cmon para uso do ClusterControl e assim por diante. Você deve obter a seguinte linha quando a instalação for concluída:
Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

O próximo passo é gerar uma chave SSH que usaremos para configurar o SSH sem senha mais tarde. Se você tiver um par de chaves que gostaria de usar, poderá pular a criação de um novo.

Você pode usar qualquer usuário no sistema, mas deve ter a capacidade de executar operações de superusuário (sudoer). Neste exemplo, escolhemos o usuário root:
$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Configure o SSH sem senha para todos os nós que você gostaria de monitorar/gerenciar via ClusterControl. Nesse caso, configuraremos isso em todos os nós da pilha (incluindo o próprio nó ClusterControl). No nó ClusterControl, execute os seguintes comandos para copiar as chaves ssh e especifique a senha raiz quando solicitado:
ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Você pode verificar se está funcionando executando o seguinte comando no nó ClusterControl:
$ ssh [email protected] "ls /root"

Certifique-se de poder ver o resultado do comando acima sem a necessidade de digitar uma senha.
Quando a instalação estiver concluída, você poderá fazer login na interface da web via
https://<your_vm_name>/clustercontrol/#

Após o primeiro login, você verá uma janela com opções para iniciar sua primeira implantação ou importar um cluster existente.
ClusterControl Implantar e importar cluster existente

Configurar repositórios


Antes de começarmos a implantação, vamos dar uma olhada no sistema de gerenciamento de pacotes. O processo de implantação do ClusterControl suporta todo o processo de instalação do cluster. Isso inclui ajustes do SO e download e instalação de pacotes. Se seus nós de banco de dados tiverem acesso limitado à Internet e você não puder fazer download de pacotes diretamente do nó, você poderá criar um repositório de pacotes diretamente no host ClusterControl.
Repositório de pacotes ClusterControl
Existem três maneiras de manter os pacotes do MongoDB no ClusterControl.

Usar repositórios de fornecedores


Instale o software configurando e usando o repositório de software preferido do fornecedor do banco de dados. O ClusterControl instalará a versão mais recente do que é armazenado pelo repositório do MongoDB.

Não configurar repositórios de fornecedores


Instale o software usando o repositório de software pré-existente já configurado no sistema operacional. O usuário precisa configurar o repositório de software manualmente em cada nó do banco de dados e o ClusterControl usará esse repositório para implantação de pacotes. Isso é bom se os nós do banco de dados estiverem sendo executados sem conexões com a Internet e sua empresa tiver um sistema de pacotes externo com pacotes MongoDB instalados.

Usar repositórios espelhados (criar novo repositório)


Crie e espelhe o repositório do fornecedor atual e, em seguida, implante usando o repositório espelhado local. Ele também permite que você “congele” as versões recentes dos pacotes de software usados ​​para provisionar um cluster de banco de dados para um fornecedor específico (ou seja, use apenas pacotes Percona).
ClusterControl automatiza a criação do repositório interno de pacotes

Implantar conjunto de réplicas


ClusterControl suporta MongoDB/Percona Server para MongoDB 3.x ReplicaSet. Para iniciar a implantação do novo cluster, acesse a opção de implantação no canto superior direito. Ao instalar seus nós de banco de dados, sempre use VMs limpas e mínimas. As dependências de pacotes existentes podem ser removidas, se necessário. Novos pacotes serão instalados e os pacotes existentes poderão ser removidos ao provisionar o nó com o software necessário.

A primeira etapa do processo de implantação é fornecer credenciais ssh apropriadas para os hosts nos quais você está implantando seu cluster. Como o ClusterControl usa ssh sem senha para se conectar e configurar seus hosts, é necessária uma chave ssh.
ClusterControl implantar assistente de cluster MongoDB
É aconselhável usar uma conta de usuário sem privilégios para fazer login nos hosts, para que uma senha sudo possa ser fornecida para facilitar as tarefas administrativas. Se a conta de usuário não solicitar uma senha sudo, isso não será necessário. Você também tem a opção de desabilitar iptables e AppArmor ou SELinux no host para evitar o problema com a implantação inicial.

Na tela a seguir, você pode optar por instalar os binários do MongoDB do MongoDB Inc ou do Percona. Aqui também, você deve especificar sua conta e senha de usuário administrativo do MongoDB, pois a segurança em nível de usuário é obrigatória.
ClusterControl deploy MongoDB wizard, ReplicaSet
Nesta tela, você também pode ver qual modelo de configuração está sendo usado. O ClusterControl usa modelos de arquivo de configuração para garantir implantações repetíveis. Os modelos são armazenados no host do ClusterControl e podem ser editados diretamente usando a linha de comando ou por meio da interface do usuário do ClusterControl. Você também pode optar por usar os repositórios do fornecedor, se desejar, ou escolher seu próprio repositório. Além disso, você pode criar automaticamente um novo repositório no host ClusterControl. Isso permite congelar a versão do MongoDB que o ClusterControl implantará na versão atual. Depois de realizar a configuração apropriada aqui, clique em Deploy para continuar.

Implantar fragmentação


O ClusterControl também pode implantar Clusters Fragmentados. Dois métodos de fazer isso são suportados. Primeiro, você pode converter um MongoDB ReplicaSet existente em um cluster fragmentado, conforme mostrado abaixo.
ClusterControl Deploy MongoDB shards
Quando “Convert to Shard” é clicado, você é solicitado a adicionar pelo menos um servidor de configuração (para ambientes de produção, você deve adicionar três) e um roteador, também conhecido como processo “mongos”. A etapa final é escolher seus modelos de configuração do MongoDB para servidor de configuração e roteador, bem como seu diretório de dados. Por fim, clique em implantar. Quando concluído, ele aparecerá na visualização Clusters de Banco de Dados. Ele mostrará a integridade do seu estilhaço em vez de instâncias individuais. Também é possível adicionar fragmentos adicionais conforme necessário.

Converter em fragmento


Se você tiver problemas de dimensionamento, poderá dimensionar este ReplicaSet adicionando mais secundários ou dimensionando horizontalmente por fragmentação. Você pode converter um ReplicaSet existente em um cluster fragmentado, mas esse é um processo longo no qual você pode cometer erros facilmente. No ClusterControl automatizamos esse processo, onde adicionamos automaticamente os servidores de configuração, roteadores de fragmentação e habilitamos o fragmentação.

Para converter um ReplicaSet em um cluster fragmentado, você pode simplesmente acioná-lo por meio da lista suspensa de ações:
ClusterControl Converter em fragmento

Programar política de backup


É essencial manter o backup de seu banco de dados e que seu banco de dados tenha um processo bom e fácil de backup. O ClusterControl tem suporte para backup e restaurações totalmente consistentes de seu conjunto de réplicas MongoDB ou cluster fragmentado.

Os backups podem ser feitos manualmente ou podem ser agendados. A centralização de backups é suportada, com backups armazenados no sistema de arquivos Controller, incluindo diretórios montados em rede ou carregados em um provedor de nuvem pré-configurado - os provedores atualmente suportados são Google Cloud Platform, Amazon Web Services e Microsoft Azure. Isso permite que você aproveite ao máximo a funcionalidade avançada de gerenciamento do ciclo de vida fornecida pela Amazon e pelo Google para recursos como agendamentos de retenção personalizados, arquivamento de longo prazo e criptografia em repouso, entre outros.

A retenção de backup é configurável; você pode optar por manter seu backup por qualquer período de tempo ou nunca excluir backups. A criptografia AES256 é empregada para proteger seus backups contra elementos invasores.

Para uma recuperação rápida, os backups podem ser restaurados diretamente no cluster de backup - o ClusterControl lida com o processo de restauração completo desde o lançamento até a recuperação do cluster, removendo etapas manuais propensas a erros do processo.

Ativar relatórios operacionais


Com o ClusterControl, você pode agendar relatórios entre ambientes como "Relatório Diário do Sistema", "Relatório de Atualização de Pacote", "Relatório de Alteração de Esquema", bem como "Backups" e "Disponibilidade". Esses relatórios ajudarão você a manter seu ambiente seguro e operacional. Você também verá recomendações sobre como corrigir lacunas. Relatórios em formato HTML podem ser enviados por e-mail para SysOps, DevOps ou até mesmo gerentes que gostariam de receber atualizações regulares de status sobre a integridade de um determinado sistema.

Consultores de Desempenho


Os consultores fornecem conselhos específicos sobre como resolver problemas em áreas como desempenho, segurança, gerenciamento de logs, configuração, espaço de armazenamento e outros. O ClusterControl vem com uma lista de orientadores predefinidos que se destinam a rastrear o estado de diferentes métricas e o estado de seus bancos de dados. Quando necessário, um alerta é criado. Eles podem ser estendidos com scripts manuais. Para obter mais informações, siga nosso blog recente sobre “Como automatizar a análise de carga de trabalho do banco de dados com os conselheiros de desempenho do ClusterControl”.

Entre vários consultores de desempenho do sistema operacional, você pode encontrar o abaixo relacionado ao MongoDB.
MongoDB consultores de fragmentação
conexões usadas
verificação de replicação
janela de replicação

Implantar na nuvem


A partir da versão 1.6, o ClusterControl permite que você crie um ReplicaSets do MongoDB 3.4 na nuvem. As plataformas de nuvem suportadas são Amazon AWS, Google Cloud e Microsoft Azure.

O assistente o guiará pela criação da máquina VM e pelas configurações do MongoDB, tudo em um só lugar.
ClusterControl implantar MongoDB ReplicaSet na nuvem
O processo permite que você escolha os parâmetros do sistema operacional, incluindo a configuração da rede. Não há necessidade de copiar chaves SSH, elas serão adicionadas automaticamente. Após a conclusão do trabalho, você verá seu cluster no painel principal. A partir de agora, você pode gerenciar seu cluster MongoDB como qualquer outro no ClusterControl.
ClusterControl implantar MongoDb RelicaSet na nuvem, configurações de rede VM

Dicas de segurança


Neste ponto, seu novo cluster deve estar funcionando. Antes de permitir que usuários e processos de aplicativos acessem dados, você precisa definir as configurações de segurança do cluster. Em nossos blogs anteriores, levantamos preocupações sobre a configuração de segurança padrão. Aqui estão algumas das principais coisas que você precisa considerar antes de passar seu novo cluster para outras equipes.

Alterar portas padrão - por padrão, o MongoDB será vinculado a portas padrão:27017 para MongoDB ReplicaSets ou Shard Routers, 27018 para shards e 27019 para servidores de configuração. O uso de portas padrão não é recomendado, pois simplifica a possibilidade de um ataque de hackers.

Ativar autenticação - sem autenticação, os usuários podem fazer login sem senha. Habilite a autenticação em todos os seus ambientes (desenvolvimento, certificação e produção).
security:
    Authentication: on

Use senhas fortes - se necessário, use um gerador de senhas para gerar senhas complexas.

Adicionar arquivo de chave de replicação - com o keyfile habilitado, a autenticação do fluxo de replicação será criptografada.

Criptografe seus backups - ClusterControl permite criptografar seus backups.

Para leitura adicional, temos um blog sobre como proteger o MongoDB.

Ativar recuperação automática de cluster


O último, mas não menos importante, recurso a ser habilitado seria a recuperação automática de nó e cluster.

O ClusterControl pode trabalhar para você como um membro estendido da equipe de DBA 24 horas por dia, 7 dias por semana. Existem duas funções principais aqui. Recuperação automática de nós e recuperação automática de cluster.

Quando a recuperação automática de nó estiver habilitada, o ClusterControl reagirá a problemas de nó e, no caso de falhas, tentará recuperar nós individuais. Isso é para resolver coisas como um processo que é executado na memória ou serviço que requer uma inicialização após uma queda de energia, o que quer que esteja causando um problema com o serviço inativo.

A opção de recuperação de cluster é ainda mais sofisticada. Ele realizará uma transição, se necessário.

Nesse caso, reverter quaisquer alterações que não sejam replicadas para os escravos serão colocadas em uma pasta de ‘reversão’, portanto, cabe ao administrador restaurá-la.

Para configurar a recuperação automática do nó e do cluster, basta ativá-los no painel principal.