![Como usar o Android para trazer animais 3D para sua sala de estar](/f/2b22f7e2926926c4e4624eed240f6d03.jpg?width=100&height=100)
Alta disponibilidade (HA) simplesmente se refere à qualidade de um sistema para operar continuamente sem falhas 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 de HA é o clustering.
Na computação, um cluster é composto por dois ou mais computadores (comumente conhecido como nós ou membros) que trabalham juntos para realizar uma tarefa. Em tal configuração, apenas um nó fornece o serviço com o (s) nó (s) secundário (s) assumindo o controle em caso de falha.
Os clusters se enquadram em quatro tipos principais:
Outra solução amplamente utilizada para fornecer HA é a 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:
Neste artigo, demonstraremos os fundamentos de como implantar, configurar e manter alta disponibilidade / clustering no Ubuntu 16.04 / 18.04 e CentOS 7. Demonstraremos como adicionar o serviço Nginx HTTP ao cluster.
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.example.com. 192.168.10.11 node2.example.com.
Salve as alterações e feche o arquivo.
Agora instale o servidor da web Nginx usando os seguintes comandos.
$ sudo apt install nginx [no Ubuntu] $ sudo yum install epel-release && sudo yum install nginx [no CentOS 7]
Assim que a instalação for concluída, inicie o serviço Nginx por agora e habilite-o para iniciar automaticamente no momento da inicialização e, em seguida, verifique se ele está instalado e funcionando usando o comando systemctl.
No Ubuntu, o serviço deve ser iniciado automaticamente imediatamente após a pré-configuração do pacote ser concluída, você pode simplesmente ativá-lo.
$ sudo systemctl enable nginx. $ sudo systemctl start nginx. $ sudo systemctl status nginx.
Depois de iniciar o serviço Nginx, precisamos criar páginas da web personalizadas para identificar e testar as operações em ambos os servidores. Modificaremos o conteúdo da página de índice padrão do Nginx conforme mostrado.
$ echo "Esta é a página padrão para node1.example.com" | sudo tee /usr/share/nginx/html/index.html # VPS1. $ echo "Esta é a página padrão para node2.example.com" | sudo tee /usr/share/nginx/html/index.html # VPS2.
Em seguida, temos que instalar Marca-passo, Corosync, e Pcs em cada nó da seguinte maneira.
$ sudo apt install corosync pacemaker pcs #Ubuntu $ sudo yum install corosync pacemaker pcs #CentOS
Assim que a instalação for concluída, certifique-se de que pcs daemon está sendo executado em ambos os servidores.
$ sudo systemctl enable pcsd. $ sudo systemctl start pcsd. $ sudo systemctl status pcsd.
Durante a instalação, um usuário do sistema chamou “Hacluster” é criado. Portanto, 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.
Em seguida, em um dos servidores (Nó1), execute o seguinte comando para configurar a autenticação necessária para pcs.
$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force.
Agora crie um cluster e preencha-o com alguns nós (o nome do cluster não pode exceder 15 caracteres, neste exemplo, usamos exemplo de clusters) no servidor Node1.
$ sudo pcs configuração do cluster --nome examplecluster node1.example.com node2.example.com
Agora habilite o cluster na inicialização e inicie o serviço.
$ sudo pcs cluster enable --all. $ sudo pcs cluster start --all.
Agora verifique se o serviço de cluster está ativo e em execução usando o seguinte comando.
Status de $ sudo pcs. OU. $ sudo crm_mon -1.
A partir da saída do comando acima, você pode ver que há um aviso sobre nenhum STONITH dispositivos ainda o STONITH ainda está habilitado no cluster. Além disso, nenhum recurso / serviço de cluster foi configurado.
A primeira opção é desabilitar STONITH (ou Atire no outro nó na cabeça), a implementação de esgrima em Marca-passo.
Este componente ajuda a proteger seus dados de serem corrompidos por acessos simultâneos. Para os fins deste guia, iremos desativá-lo, uma vez que não configuramos nenhum dispositivo.
Desligar STONITH, execute o seguinte comando:
Conjunto de propriedades $ sudo pcs stonith-enabled = false.
Em seguida, ignore também o Quorum política executando o seguinte comando:
propriedade $ sudo pcs definida no-quorum-policy = ignore.
Depois de definir as opções acima, execute o seguinte comando para ver a lista de propriedades e certifique-se de que as opções acima, Stonith e a política de quorum estão desativados.
Lista de propriedades de $ sudo pcs.
Nesta seção, veremos como adicionar um recurso de cluster. Vamos configurar um IP flutuante que é o endereço IP que pode ser movido instantaneamente de um servidor para outro na mesma rede ou centro de dados. Resumindo, um IP flutuante é um termo técnico comum, usado para IPs que não estão estritamente vinculados a uma única interface.
Nesse caso, ele será usado para oferecer suporte a 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 forma que apenas o membro ativo do cluster “possua” ou responda ao IP flutuante a qualquer momento.
Vamos adicionar dois recursos de cluster: o recurso de endereço IP flutuante chamado “flutuando_ip”E um recurso para o servidor da web Nginx chamado“http_server”.
Comece primeiro adicionando o floating_ip da seguinte maneira. Neste exemplo, nosso endereço IP flutuante é 192.168.10.20.
$ sudo pcs resource create floating_ip ocf: heartbeat: IPaddr2 ip = 192.168.10.20 cidr_netmask = 24 op monitor interval = 60s.
Onde:
Em seguida, adicione o segundo recurso, denominado http_server. Aqui, o agente de recurso do serviço é ocf: heartbeat: nginx.
$ sudo pcs resource create http_server ocf: heartbeat: nginx configfile = "/ etc / nginx / nginx.conf" op monitor timeout = "20s" intervalo = "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.
Olhando para a saída do comando, os dois recursos adicionados: “Floating_ip” e “Http_server” foram listados. O serviço floating_ip está desativado porque o nó primário está em operação.
Se você tem firewall habilitado em seu sistema, você precisa permitir que todo o tráfego para Nginx e todos os serviços de alta disponibilidade por meio do firewall para comunicação adequada entre os 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 permitir http $ sudo ufw permitir alta disponibilidade $ sudo ufw recarregar
A etapa final e importante é testar se 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 Nginx padrão do node2.example.com como mostrado na imagem.
Para simular uma falha, execute o seguinte comando para parar o cluster no node2.example.com.
$ sudo pcs cluster parar 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 a partir do node1.example.com.
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ê deve ser capaz de ver o cluster notar 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 man (man pcs) para uma lista de todos os comandos de uso.
Para obter mais informações sobre o Corosync e o Pacemaker, consulte: https://clusterlabs.org/
Neste guia, mostramos os princípios básicos de como implantar, configurar e manter alta disponibilidade / clustering / replicação no Ubuntu 16.04 / 18.04 e CentOS 7. Demonstramos como adicionar o serviço Nginx HTTP a um cluster. Se você tem alguma opinião ou dúvida, use o formulário de feedback abaixo.