Já temos alguns artigos falando sobre pacemaker e agora que o corosync está configurado, é hora de iniciar o cluster. O comando abaixo iniciará o corosync e o pacemaker em ambos os nós do cluster.
Repita essas verificações no outro nó. Os resultados devem ser os mesmos.
Obs.: se dentro de /etc/hosts houver 127.0.1.1 debian2 comente ou exclua essa linha nos dois nós:
root@debian2:~# cat /etc/hosts
127.0.0.1 localhost
#127.0.1.1 debian2
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.100.10 debian1
192.168.100.11 debian2
Iniciando o Cluster
Se você estiver executando o comando pcs cluster start de um nó diferente daquele em que executou o comando pcs cluster auth anteriormente, deverá autenticar no nó atual ao qual está conectado antes de ter permissão para iniciar o cluster.
#1 inicie o cluster executando pcs cluster start –all
[root@oracle86 ~]# pcs cluster start --all oracle86: Starting Cluster... oracle86B: Starting Cluster...
Precisamos fazer isso em apenas um dos nós.
Outro Modo de Iniciar o Cluster
Como uma alternativa para usar o comando pcs cluster start --all podemos executar as sequências de comando abaixo em cada nó no cluster separadamente:
pcs cluster start
ou os dois comandos abaixo
systemctl start corosync.service
e depois
systemctl start pacemaker.service
Início Automático Durante o Boot
Nos exemplos acima, não habilitando os serviços corosync e pacemaker para iniciar na inicialização, ao ligarmos o servidor. Se um nó de cluster falhar ou for reinicializado, você precisará executar pcs cluster start nodename (ou –all) para iniciar o cluster nele.
Embora você possa habilitar os serviços para iniciar na inicialização, exigir um início manual dos serviços de cluster oferece a oportunidade de fazer uma investigação de uma falha de nó antes de retorná-lo ao cluster.
Mas se quiser deixar com início automático, digite nos dois nós(servidores do cluster) o seguinte comando
systemctl enable corosync.service
e em seguida esse outro
systemctl enable pacemaker.service
Verifique a instalação do Corosync
#1 use o comando corosync-cfgtool -s para verificar se a comunicação do cluster está correta:
[root@oracle86 ~]# corosync-cfgtool -s Local node ID 1, transport knet LINK ID 0 udp addr = 192.168.50.3 status: nodeid: 1: localhost nodeid: 2: connecte
Podemos ver aqui que tudo parece normal com nosso endereço IP fixo (não um endereço de loopback 127.0.0.x) listado como id e sem falhas para o status.
Se você vir algo diferente, talvez queira começar verificando as configurações de rede, firewall e SELinux do nó.
#2 verifique as APIs de associação e quorum:
[root@oracle86 ~]# corosync-cmapctl | grep members runtime.members.1.config_version (u64) = 0 runtime.members.1.ip (str) = r(0) ip(192.168.50.3) runtime.members.1.join_count (u32) = 1 runtime.members.1.status (str) = joined runtime.members.2.config_version (u64) = 0 runtime.members.2.ip (str) = r(0) ip(192.168.50.4) runtime.members.2.join_count (u32) = 1 runtime.members.2.status (str) = joined
Você deve ver que ambos os nós ingressaram no cluster.
Verificando a Instalação do Pacemaker
Agora que confirmamos que o Corosync está funcionando, podemos verificar o restante da pilha.
#1 O pacemaker já foi iniciado, portanto, verifique se os processos necessários estão em execução. Execute o comando ps axf | grep pacemaker
[root@oracle86 ~]# ps axf | grep pacemaker 80661 pts/0 S+ 0:00 \_ grep --color=auto pacemaker 79918 ? Ss 0:04 /usr/sbin/pacemakerd 79919 ? Ss 0:03 \_ /usr/libexec/pacemaker/pacemaker-based 79920 ? Ss 0:03 \_ /usr/libexec/pacemaker/pacemaker-fenced 79921 ? Ss 0:03 \_ /usr/libexec/pacemaker/pacemaker-execd 79922 ? Ss 0:03 \_ /usr/libexec/pacemaker/pacemaker-attrd 79923 ? Ss 0:03 \_ /usr/libexec/pacemaker/pacemaker-schedulerd 79924 ? Ss 0:03 \_ /usr/libexec/pacemaker/pacemaker-controld
#2 Se estiver OK, verifique a saída de status dos pcs:
[root@oracle86 ~]# pcs status Cluster name: meuCluster WARNINGS: No stonith devices and stonith-enabled is not false Status of pacemakerd: 'Pacemaker is running' (last updated 2023-02-27 11:45:55 -05:00) Cluster Summary: * Stack: corosync * Current DC: oracle86 (version 2.1.4-5.0.1.el8_7.2-dc6eb4362e) - partition with quorum * Last updated: Mon Feb 27 11:45:55 2023 * Last change: Mon Feb 27 09:56:06 2023 by hacluster via crmd on oracle86 * 2 nodes configured * 0 resource instances configured Node List: * Online: [ oracle86 oracle86B ] Full List of Resources: * No resources Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/disabled
#3 Por fim, certifique-se de que não haja erros de inicialização do corosync ou do marcapasso (além de mensagens relacionadas à não configuração do STONITH, que estão OK neste momento):
journalctl -b | grep -i errorOutros sistemas operacionais podem relatar erros de inicialização em outros locais, por exemplo /var/log/messages
Execute também crm_verify -LV
[root@oracle86 ~]# crm_verify -LV
Vendo xml da Configuração Atual
Para aqueles que não têm medo de XML, você pode ver a configuração e o status do cluster bruto usando o comando pcs cluster cib.
[root@oracle86 ~]# pcs cluster cib <cib crm_feature_set="3.15.0" validate-with="pacemaker-3.8" epoch="5" num_updates="10" admin_epoch="0" cib-last-written="Mon Feb 27 09:56:06 2023" update-origin="oracle86" update-client="crmd" update-user="hacluster" have-quorum="1" dc-uuid="1"> <configuration> <crm_config> <cluster_property_set id="cib-bootstrap-options"> <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/> <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="2.1.4-5.0.1.el8_7.2-dc6eb4362e"/> <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/> <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="meuCluster"/> </cluster_property_set> </crm_config> <nodes> <node id="1" uname="oracle86"/> <node id="2" uname="oracle86B"/> </nodes> <resources/> <constraints/> </configuration> <status> <node_state id="1" uname="oracle86" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member"> <lrm id="1"> <lrm_resources/> </lrm> </node_state> <node_state id="2" uname="oracle86B" crmd="online" crm-debug-origin="do_state_transition" in_ccm="true" join="member" expected="member"> <lrm id="2"> <lrm_resources/> </lrm> </node_state> </status> </cib>
É uma boa ideia verificar a validade da configuração antes de qualquer alteração. Para essa validação usamos o comando crm_verify -L -V
[root@oracle86 ~]# crm_verify -L -V (unpack_resources) error: Resource start-up disabled since no STONITH resources have been defined (unpack_resources) error: Either configure some or disable STONITH with the stonith-enabled option (unpack_resources) error: NOTE: Clusters with shared data need STONITH to ensure data integrity crm_verify: Errors found during check: config not valid
Como você pode ver, a ferramenta encontrou alguns erros. O cluster não iniciará nenhum recurso até configurarmos o STONITH.
Veremos isso no próximo post.