As redes de dados têm evoluído significativamente nos últimos anos, abrindo portas a que novos serviços assentem nestas infraestruturas. Se há uns anos atrás as chamadas telefónicas eram efectuadas exclusivamente pelo serviço telefónico tradicional, hoje em dia os serviços de voz assentam também em redes de dados.
Depois de termos ensinado a instalar o Elastix, hoje vamos aprender a criar um cluster usando o Pacemaker.
Para a configuração de um cluster vamos criar duas máquinas virtuais com Elastix. Neste caso, vamos fazer um clone da máquina criada no primeiro tutorial, com as seguintes alterações:
- Nome da máquina, neste caso vamos utilizar Elastix node 2 e reiniciar o MAC address quando clonamos a máquina virtual, para ser atribuído um novo IP à nova máquina.
- No clone type escolhemos full clone.
Após criada a segunda máquina, iniciamos os dois nós para começarmos a configuração.
Primeiro vamos anotar os IPs dos dois nós. No nosso caso, vamos ter a seguinte configuração:
- Nó 1: 192.168.1.123
- Nó 2: 192.168.1.124
- IP virtual dos nós: 192.168.1.115 (configurado mais à frente no tutorial)
Nó 1:
Nó 2:
Nota: para todos os comandos que vamos executar a seguir deverão ter privilégios de root. Caso tenham criado um outro utilizador, necessitam do comando sudo antes de cada comando.
De seguida, vamos necessitar de editar alguns ficheiros de texto. Por omissão, esta distribuição não vem com o editor nano, mas quem quiser instalar basta executar o comando:
yum install nano
Editamos o ficheiro /etc/hosts e adicionamos as seguintes linhas:
- “IP_primeiro_nó” node1.pplware.com node1
- “IP_segundo_nó” node2.pplware.com node2
Gravamos o ficheiro e saímos. Reiniciamos ambas as máquinas para assumirem o novo nome dado anteriormente.
De seguida, vamos definir alguns parâmetros no apache editando o ficheiro /etc/httpd/conf.d/status.conf. Depois devem proceder as seguintes alterações:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
Guardamos o ficheiro e saímos do editor.
Instalar Pacemaker
Vamos então instalar o Pacemaker usando o comando:
yum install pacemaker pcs
Após a instalação estar finalizada, executamos os seguintes comandos:
systemctl start pcsd.service
systemctl enable pcsd.service
Sendo o primeiro para iniciar o pcs daemon, que é utilizado para sincronizar o Corosync e o segundo para iniciar o pcs daemon cada vez que a máquina é iniciada.
Depois de instalados estes pacotes, foi criado um novo utilizador no sistema com o nome hacluster.
Alteramos a palavra passe desse utilizador com: passwd hacluster
De seguida, verificamos se a firewall está activa usando o comando:
firewall-cmd --state
Caso não esteja, activamos com o seguinte comando:
systemctl start firewalld.service
Agora é a vez de adicionar uma excepção na firewall para o Cluster
firewall-cmd --permanent --add-service=high-availability
e reiniciamos a firewall com o comando:
firewall-cmd –reload
A partir deste momento, os dois nós já devem conseguir comunicar. Portanto vamos executar os comandos seguintes apenas no primeiro nó.
Configuramos a autenticação do cluster com o comando:
pcs cluster auth node1 node2
No campo Username colocamos “hacluster” e no campo Password a palavra passe definida anteriormente.
Se esta informação estiver correta, devemos receber a mensagem:
- node1: Authorized
- node2: Authorized
De seguida, vamos correr o comando:
pcs cluster setup --name clusterPplware node1 node2
Se tudo correr bem, devem receber uma mensagem semelhante à imagem apresentada em baixo:
Após isto, a configuração do Corosync foi criada. Podem aceder ao ficheiro criado em /etc/corosync/corosync.conf
Podemos então iniciar o cluster com: pcs cluster start –all e de seguida executar os comandos:
Para o Corosync e o Pacemaker iniciarem quando as máquinas forem iniciadas. Estes dois últimos comandos devem ser executados nos dois nós.
Podemos verificar se o Cluster está a funcionar correctamente com o comando:
pcs status
Após terminados com sucesso os passos anteriores, vamos desativar o STONITH e o Quorum. STONITH é uma sigla que significa “Shoot The Other Node In The Head”, ou seja, quando um Cluster não consegue determinar o estado de um dos seus nós, é aplicada uma técnica denominada de “Fencing” que faz o Cluster voltar ao seu estado normal.
Node Level Fencing garante que um nó não utiliza todos os recursos.
Como a configuração do Node Level Fencing varia bastante para cada ambiente(Windows, Mac OS,…), vamos desactivá-lo para este tutorial.
Um Quorum é criado quando mais de metade dos seus nós estão online. O comportamento por omissão é de parar o Cluster quando não se verifica esse estado, por isso vamos também desativá-lo.
- pcs property set stonith-enabled=false
- pcs property set no-quorum-policy=ignore
Estas alterações são necessárias nos dois nós.
Criação de IP Virtual (floating IP)
De seguida, vamos criar um IP virtual o qual será partilhado pelos dois nós e pelo qual poderemos aceder à configuração do Elastix.
Para tal, executamos o comando apenas no primeiro nó:
pcs resource create Cluster_PPLWARE ocf:heartbeat:IPaddr2 ip=192.168.1.115 cidr_netmask=24 op monitor interval=20s
- Onde atribuímos o IP virtual que desejarmos, neste caso atribuímos 192.168.1.115
- Neste caso colocamos cidr_netmask=24, mas este valor depende da rede.
- O interval=20s é o tempo de espera entre a verificação que cada nó faz para ver o estado do outro nó.
Com pcs status verificamos se o Cluster_PPLWARE foi iniciado
Reiniciamos ambos os nós para assumirem as últimas configurações
Após o reiniciarmos ambos os nós, caso o Cluster não esteja iniciado basta activá-lo com o comando:
sudo pcs resource enable Cluster_PPLWARE
E está feita a configuração do Cluster. Podemos comprovar entrando no IP virtual que atribuímos e será apresentada uma página do tipo:
E está feita esta configuração também. Como referido, com este tutorial passamos a ter um serviço de alta disponibilidade com dois nós a servir o mesmo serviço.
No terceiro e último tutorial vamos ensinar a criar extensões e configurar softphones.