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
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install pcs pacemaker fence-agents-all systemctl start pcsd.service systemctl enable pcsd.service
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow passwd hacluster pcs host auth z1.example.com
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs cluster setup my_cluster --start z1.example.com pcs cluster status
# 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: Online
Um 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs property set stonith-enabled=false
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y httpd wget firewall-cmd --permanent --add-service=http firewall-cmd --reload cat <<-END >/var/www/html/index.html
# 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.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs resource describe apache
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs resource config WebSite
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow killall -9 httpd
# 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.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs status
# 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: Online
Você 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.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs resource cleanup WebSite
# 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.Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs cluster stop --all
# pcs cluster stop --all