Capítulo 2. Começando com Pacemaker
Os seguintes procedimentos fornecem uma introdução às ferramentas e processos que você utiliza para criar um cluster Pacemaker. Eles são destinados aos usuários que estão interessados em ver como é o software do cluster e como ele é administrado, sem a necessidade de configurar um cluster funcional.
Estes procedimentos não criam um cluster Red Hat suportado, que requer pelo menos dois nós e a configuração de um dispositivo de esgrima.
2.1. Aprendendo a usar o Pacemaker
Este exemplo requer um único nó rodando RHEL 8 e requer um endereço IP flutuante que reside na mesma rede que um dos endereços IP atribuídos estaticamente a um dos nós.
-
O nó utilizado neste exemplo é
z1.example.com
. - O endereço IP flutuante usado neste exemplo é 192.168.122.120.
Certifique-se de que o nome do nó em que você está rodando esteja em seu arquivo /etc/hosts
.
Trabalhando através deste procedimento, você aprenderá como usar o Pacemaker para configurar um cluster, como exibir o status do cluster, e como configurar um serviço de cluster. Este exemplo cria um servidor HTTP Apache como um recurso de cluster e mostra como o cluster responde quando o recurso falha.
Instale os pacotes de software Red Hat High Availability Add-On a partir do canal High Availability, e inicie e habilite o serviço
pcsd
.#
yum install pcs pacemaker fence-agents-all
... #systemctl start pcsd.service
#systemctl enable pcsd.service
Se você estiver rodando o daemon
firewalld
, habilite os portos que são exigidos pelo suplemento de alta disponibilidade da Red Hat.#
firewall-cmd --permanent --add-service=high-availability
#firewall-cmd --reload
Defina uma senha para o usuário
hacluster
em cada nó do cluster e autentique o usuáriohacluster
para cada nó do cluster no nó a partir do qual você executará os comandospcs
. Este exemplo está usando apenas um único nó, o nó a partir do qual você está executando os comandos, mas esta etapa está incluída aqui uma vez que é uma etapa necessária na configuração de um cluster multi-nó de alta disponibilidade compatível com a Red Hat High Availability.#
passwd hacluster
... #pcs host auth z1.example.com
Criar um agrupamento chamado
my_cluster
com um membro e verificar o status do agrupamento. Este comando cria e inicia o agrupamento em uma única etapa.#
pcs cluster setup my_cluster --start z1.example.com
... #pcs cluster status
Cluster Status: Stack: corosync Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum Last updated: Thu Oct 11 16:11:18 2018 Last change: Thu Oct 11 16:11:00 2018 by hacluster via crmd on z1.example.com 1 node configured 0 resources configured PCSD Status: z1.example.com: OnlineUm aglomerado Red Hat High Availability requer que você configure a vedação para o aglomerado. As razões para esta exigência estão descritas em Esgrima em um Aglomerado de Alta Disponibilidade da Red Hat. Para esta introdução, entretanto, que se destina a mostrar apenas como usar os comandos básicos do Marcapasso, desabilite o cercado definindo a opção de cercado do
stonith-enabled
parafalse
.AtençãoO uso do
stonith-enabled=false
é completamente inadequado para um cluster de produção. Ele diz ao aglomerado para simplesmente fingir que os nós falhados estão cercados com segurança.#
pcs property set stonith-enabled=false
Configure um navegador web em seu sistema e crie uma página web para exibir uma simples mensagem de texto. Se você estiver executando o daemon
firewalld
, habilite as portas que são exigidas porhttpd
.NotaNão utilize
systemctl enable
para permitir que quaisquer serviços que serão gerenciados pelo cluster comecem na inicialização do sistema.#
yum install -y httpd wget
... #firewall-cmd --permanent --add-service=http
#firewall-cmd --reload
#cat <<-END >/var/www/html/index.html
<html>
<body>My Test Site - $(hostname)</body>
</html>
END
Para que o agente de recursos Apache obtenha o status do Apache, crie a seguinte adição à configuração existente para habilitar a URL do servidor de status.
#
cat <<-END > /etc/httpd/conf.d/status.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</Location>
END
Crie recursos para o cluster
IPaddr2
eapache
para gerenciá-lo. O recurso 'IPaddr2' é um endereço IP flutuante que não deve ser um já associado a um nó físico. Se o dispositivo NIC do recurso 'IPaddr2' não for especificado, o IP flutuante deve residir na mesma rede que o endereço IP estaticamente atribuído usado pelo nó.Você pode exibir uma lista de todos os tipos de recursos disponíveis com o comando
pcs resource list
. Você pode usar o comandopcs resource describe resourcetype
para exibir os parâmetros que você pode definir para o tipo de recurso especificado. Por exemplo, o seguinte comando exibe os parâmetros que você pode definir para um recurso do tipoapache
:#
pcs resource describe apache
...Neste exemplo, o recurso de endereço IP e o recurso apache são ambos configurados como parte de um grupo chamado
apachegroup
, o que garante que os recursos sejam mantidos juntos para funcionar no mesmo nó quando você estiver configurando um cluster de vários nós em funcionamento.#
pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.122.120 --group apachegroup
#pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" --group apachegroup
#pcs status
Cluster name: my_cluster Stack: corosync Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum Last updated: Fri Oct 12 09:54:33 2018 Last change: Fri Oct 12 09:54:30 2018 by root via cibadmin on z1.example.com 1 node configured 2 resources configured Online: [ z1.example.com ] Full list of resources: Resource Group: apachegroup ClusterIP (ocf::heartbeat:IPaddr2): Started z1.example.com WebSite (ocf::heartbeat:apache): Started z1.example.com PCSD Status: z1.example.com: Online ...Após ter configurado um recurso de cluster, você pode usar o comando
pcs resource config
para exibir as opções que estão configuradas para aquele recurso.#
pcs resource config WebSite
Resource: WebSite (class=ocf provider=heartbeat type=apache) Attributes: configfile=/etc/httpd/conf/httpd.conf statusurl=http://localhost/server-status Operations: start interval=0s timeout=40s (WebSite-start-interval-0s) stop interval=0s timeout=60s (WebSite-stop-interval-0s) monitor interval=1min (WebSite-monitor-interval-1min)- Aponte seu navegador para o site que você criou usando o endereço IP flutuante que você configurou. Isto deve exibir a mensagem de texto que você definiu.
Pare o serviço web apache e verifique o status do cluster. O uso do
killall -9
simula uma falha em nível de aplicação.#
killall -9 httpd
Verifique o status do agrupamento. Você deve ver que parar o serviço web causou uma ação fracassada, mas que o software de cluster reiniciou o serviço e você ainda deve ser capaz de acessar o site.
#
pcs status
Cluster name: my_cluster ... Current DC: z1.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum 1 node and 2 resources configured Online: [ z1.example.com ] Full list of resources: Resource Group: apachegroup ClusterIP (ocf::heartbeat:IPaddr2): Started z1.example.com WebSite (ocf::heartbeat:apache): Started z1.example.com Failed Resource Actions: * WebSite_monitor_60000 on z1.example.com 'not running' (7): call=13, status=complete, exitreason='none', last-rc-change='Thu Oct 11 23:45:50 2016', queued=0ms, exec=0ms PCSD Status: z1.example.com: OnlineVocê pode limpar o status de falha no recurso que falhou uma vez que o serviço esteja funcionando novamente e o aviso de falha de ação não aparecerá mais quando você visualizar o status do cluster.
#
pcs resource cleanup WebSite
Quando terminar de olhar o agrupamento e o status do agrupamento, pare os serviços de agrupamento no nó. Embora você só tenha iniciado os serviços em um nó para esta introdução, o parâmetro
--all
está incluído, pois pararia os serviços de cluster em todos os nós de um cluster real de vários nós.#
pcs cluster stop --all