Como configurar e manter alta disponibilidade/agrupamento no Linux

Como configurar e manter alta disponibilidade/agrupamento no Linux

Alta disponibilidade (Ha) simplesmente refere -se à qualidade de um sistema para operar continuamente sem falha por um longo período de tempo. As soluções de HA podem ser implementadas usando hardware e/ou software, e uma das soluções comuns para a implementação do HA é o agrupamento.

Na computação, um cluster é composto de dois ou mais computadores (comumente conhecidos como nós ou membros) que trabalham juntos para executar uma tarefa. Em tal configuração, apenas um nó fornece ao serviço o (s) nó (s) secundário (s) assumindo o controle se falhar.

Clusters se enquadram em quatro tipos principais:

  • Armazenar: Forneça uma imagem consistente do sistema de arquivos entre servidores em um cluster, permitindo que os servidores leiam e grave simultaneamente em um único sistema de arquivos compartilhado.
  • Alta disponibilidade: Elimine pontos únicos de falha e, ao falhar com os serviços de um nó de cluster para outro, caso um nó se torne inoperante.
  • Balanceamento de carga: Despachar solicitações de serviço de rede para vários nós de cluster para equilibrar a carga de solicitação entre os nós do cluster.
  • Alta performance: realizar processamento paralelo ou simultâneo, ajudando assim a melhorar o desempenho dos aplicativos.

Outra solução amplamente usada para fornecer Ha é replicação (especificamente replicações de dados). A replicação é o processo pelo qual um ou mais bancos de dados (secundários) podem ser mantidos em sincronia com um único banco de dados primário (ou mestre).

Para configurar um cluster, precisamos de pelo menos dois servidores. Para os fins deste guia, usaremos dois servidores Linux:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

Neste artigo, demonstraremos o básico de como implantar, configurar e manter alta disponibilidade/agrupamento no Ubuntu 16.04/18.04 e CentOS 7. Demonstraremos como adicionar o serviço HTTP nginx ao cluster.

Configurando configurações de DNS locais em cada servidor

Para que os dois servidores se comuniquem, precisamos definir as configurações de DNS locais apropriadas no /etc/hosts Arquivo em ambos os servidores.

Abra e edite o arquivo usando seu editor de linha de comando favorito.

$ sudo vim /etc /hosts 

Adicione as seguintes entradas com endereços IP reais de seus servidores.

192.168.10.10 Node1.exemplo.com 192.168.10.11 Node2.exemplo.com 

Salve as alterações e feche o arquivo.

Instalando o Nginx Web Server

Agora instale o servidor da web nginx usando os seguintes comandos.

$ sudo apt install nginx [no ubuntu] $ sudo yum install elease-lançamento && sudo yum install nginx [no CentOS 7] 

Depois que a instalação estiver concluída, inicie o serviço Nginx por enquanto e permita que ele seja iniciado automaticamente na hora da inicialização e verifique se está em funcionamento usando o comando SystemCTL.
No Ubuntu, o serviço deve ser iniciado automaticamente imediatamente após a conclusão da pré-configuração do pacote, você pode simplesmente habilitá-lo.

$ sudo systemctl atability nginx $ sudo systemctl start nginx $ sudo systatusctl status nginx 

Depois de iniciar o serviço Nginx, precisamos criar páginas da web personalizadas para identificar e testar operações em ambos os servidores. Modificaremos o conteúdo da página de índice nginx padrão, como mostrado.

$ echo "Esta é a página padrão para node1.exemplo.com "| sudo tee/usr/share/nginx/html/index.html #vps1 $ echo "Esta é a página padrão para node2.exemplo.com "| sudo tee/usr/share/nginx/html/index.HTML #VPS2 

Instalação e configuração de Corosync e marcapasso

Em seguida, temos que instalar Pacemaker, Corosync, e PCs em cada nó da seguinte forma.

$ sudo apt install Corosync Pacemaker PCs #UBUNTU $ SUDO YUM Instale o Corosync Pacemaker PCs #CENTOS 

Depois que a instalação estiver concluída, verifique se isso PCs Daemon está em execução nos dois servidores.

$ sudo systemctl atability pcsd $ sudo systemctl start pcsd $ sudo systationctl status pcsd 

Criando o cluster

Durante a instalação, um usuário do sistema chamou “Hacluster” é criado. Então, precisamos configurar a autenticação necessária para PCs. Vamos começar criando uma nova senha para o “Hacluster” Usuário, precisamos usar a mesma senha em todos os servidores:

$ sudo passwd hacluster 
Crie senha de usuário do cluster

Em seguida, em um dos servidores (node1), execute o seguinte comando para configurar a autenticação necessária para PCs.

$ sudo pcs cluster auth node1.exemplo.com node2.exemplo.com -u hacluster -p senha_here -force 
Autenticação de configuração para PCs

Agora crie um cluster e preencha -o com alguns nós (o nome do cluster não pode exceder 15 caracteres, neste exemplo, usamos ExamplePLEPLUSTER) no servidor Node1.

$ sudo pcs cluster configuração -Nome Examplecluster node1.exemplo.com node2.exemplo.com 
Crie cluster no Node1

Agora ative o cluster na inicialização e inicie o serviço.

$ sudo pcs cluster atabilable --l $ sudo pcs cluster start --l 
Ativar e iniciar o cluster

Agora verifique se o serviço de cluster está em funcionamento usando o seguinte comando.

$ sudo pcs status ou $ sudo crm_mon -1 
Verifique o status do cluster

A partir da saída do comando acima, você pode ver que há um aviso sobre não Stonith dispositivos ainda o Stonith ainda está ativado no cluster. Além disso, nenhum recurso/serviço de cluster foi configurado.

Configurando opções de cluster

A primeira opção é desativar Stonith (ou Atire no outro nó na cabeça), a implementação de esgrima em Pacemaker.

Este componente ajuda a proteger seus dados de serem corrompidos pelo acesso simultâneo. Para os fins deste guia, vamos desativá -lo, pois não configuramos nenhum dispositivo.

Desligar Stonith, Execute o seguinte comando:

$ sudo pcs imobiliário conjunto stonith-inabled = false 

Em seguida, ignore também o Quorum Política executando o seguinte comando:

$ sudo pcs imobiliário conjunto sem quadro-policy = ignorar 

Depois de definir as opções acima, execute o seguinte comando para ver a lista de propriedades e verifique se as opções acima, Stonith e a Política de Quorum estão desativados.

Lista de propriedades de $ sudo pcs 
Visualizar propriedades de cluster

Adicionando um serviço de recurso/cluster

Nesta seção, veremos como adicionar um recurso de cluster. Configuraremos um IP flutuante, que é o endereço IP que pode ser movido instantaneamente de um servidor para outro dentro da mesma rede ou data center. Em suma, um IP flutuante é um termo comum, usado para IPS que não estão presos estritamente a uma única interface.

Nesse caso, ele será usado para apoiar o failover em um cluster de alta disponibilidade. Lembre -se de que os IPs flutuantes não são apenas para situações de failover, eles têm alguns outros casos de uso. Precisamos configurar o cluster de tal maneira que apenas o membro ativo do cluster "possui" ou responda ao IP flutuante a qualquer momento.

Adicionaremos dois recursos de cluster: o recurso de endereço IP flutuante chamado “FLOATING_IP”E um recurso para o servidor da web nginx chamado“http_server”.

Primeiro começo adicionando o FLOATING_IP da seguinte maneira. Neste exemplo, nosso endereço IP flutuante é 192.168.10.20.

$ sudo pcs recurso criar flutuante_ip ocf: batimentos cardíacos: ipaddr2 ip = 192.168.10.20 CIDR_NETMASK = 24 OP MONITOR INTERVAL = 60S 

onde:

  • FLOATING_IP: é o nome do serviço.
  • “OCF: batimento cardíaco: ipaddr2”:.
  • ““intervalo do monitor de op = 60s”: Instrui o marcapasso a verificar a saúde deste serviço a cada um minutos, chamando a ação do monitor do agente.

Em seguida, adicione o segundo recurso, nomeado http_server. Aqui, o agente de recursos do serviço é OCF: batimento cardíaco: nginx.

$ sudo pcs recurso Criar http_server ocf: Heartbeat: nginx configfile = "/etc/nginx/nginx.Conf "Op Monitor Timeout =" 20S "interval =" 60s " 

Depois de adicionar os serviços de cluster, emita o seguinte comando para verificar o status dos recursos.

Recursos de status de $ sudo pcs 
Verifique os recursos do cluster

Olhando para a saída do comando, os dois recursos adicionados: "FLOATING_IP" e “Http_server” foram listados. O serviço flutuante_ip está desligado porque o nó principal está em operação.

Se você tem firewall ativado em seu sistema, você precisa permitir que todo o tráfego Nginx e todos os serviços de alta disponibilidade através do firewall para uma comunicação adequada entre nós:

-------------- CENTOS 7 -------------- $ sudo firewall-cmd --permanent --add-service = http $ sudo firewall-cmd --permanent --add-service = alta disponibilidade $ sudo Firewall-CMD--Reload -------------- Ubuntu ---------------- $ sudo ufw permite http $ sudo ufw permitir alta disponibilidade $ sudo ufw recarregar 

Testando alta disponibilidade/agrupamento

A etapa final e importante é testar que nossa configuração de alta disponibilidade funciona. Abra um navegador da web e navegue até o endereço 192.168.10.20 você deve ver a página padrão nginx do node2.exemplo.com como mostrado na captura de tela.

Cluster de teste antes da falha

Para simular uma falha, execute o seguinte comando para parar o cluster no node2.exemplo.com.

$ sudo pcs cluster Stop http_server 

Em seguida, recarregue a página em 192.168.10.20, Agora você deve acessar a página da web nginx padrão do node1.exemplo.com.

Cluster de teste após falha

Como alternativa, você pode simular um erro dizendo ao serviço para parar diretamente, sem interromper o cluster em nenhum nó, usando o seguinte comando em um dos nós:

 $ sudo crm_resource-Resource http_server-force-stop 

Então você precisa correr CRM_MON No modo interativo (o padrão), dentro do intervalo do monitor de 2 minutos, você poderá ver o cluster aviso que http_server falhou e mova -o para outro nó.

Para que seus serviços de cluster sejam executados com eficiência, pode ser necessário definir algumas restrições. Você pode ver o PCs Página do homem (PCs Man) para uma lista de todos os comandos de uso.

Para mais informações sobre Corosync e Pacemaker, consulte: https: // clusterLabs.org/

Resumo

Neste guia, mostramos o básico de como implantar, configurar e manter alta disponibilidade/agrupamento/replicação no Ubuntu 16.04/18.04 e CentOS 7. Demonstramos como adicionar o serviço HTTP nginx a um cluster. Se você tiver algum pensamento para compartilhar ou perguntas, use o formulário de feedback abaixo.