7.4. Configurar Domínios de Failover
Um domínio de failover é um sub conjunto de nós do cluster que são elegíveis para rodar um serviço de cluster em um evento de falha de um nó. Um domínio failover pode ter as seguintes características:
- Irrestrito (Unrestricted) — Permite especificar que um sub conjunto de membros são preferidos mas que um serviço de cluster atribuído a este domínio possa rodar em qualquer membro disponível.
- Restringido (Restricted) — Permite restringir os membros que podem rodar um serviço de cluster em particular. Se nenhum dos membros em um domínio de failover estiverem disponíveis, o serviço de cluster não pode ser iniciado (tanto manualmente ou pelo software de cluster).
- Desordenado (Unordered) — Quando um serviço de cluster é atribuído a um domínio de failover desordenado, o membro no qual o serviço de cluster roda é escolhido a partir dos membros do domínio de failover disponíveis sem prioridade de ordem.
- Ordenado (Ordered) — Permite especificar uma ordem de preferência entre os membros de um domínio de failover. Domínios de failover ordenados selecionam o nó com o número prioridade mais baixo primeiro. Onde o domínio failover com uma prioridade de número "1" significa a prioridade mais alta, e portanto é o nó mais preferido em um domínio de failover. Depois desse nó, o próximo nó preferido seria o nó com próximo número de prioridade e assim pode diante.
- Failback — Permite especificar se um serviço no domínio de failover deveria fazer um fail back no nó que estava originalmente rodando antes desse nó falhar. Configurar esta característica é útil em circunstâncias onde um nó falha repetidamente e é parte de um domínio de failover ordenado. Nesta circunstância, se o nó é o preferido no domínio de failover, é possível para um serviço fazer fail over e fail back repetidamente entre o nó preferido e o outro nó, causando um impacto severo no desempenho.
Nota
A característica failback é aplicável somente se o failover ordenado é configurado.
Nota
Alterar a configuração de um domínio de failover não possui efeito em serviços atualmente em execução.
Nota
Domínios failover não são requeridos para operação.
Por padrão, domínios failover são irrestritos e desordenados.
Em um cluster com diversos membros, usar um domínio failover restringido pode minimizar o trabalho de configurar o cluster para executar o serviço de cluster (tal como
httpd
), que requer que você defina identicamente a configuração em todos os membros que rodam o serviço de cluster. Em vez de definir o cluster inteiro para rodar o serviço de cluster, você pode definir somente os membros no domínio de failover restringidos que você associa com o serviço de cluster.
Nota
Para configurar um membro preferido, você pode criar um domínio de failover irrestrito compreendendo de somente um membro do cluster. Isso faz que um serviço de cluster rode naquele membro de cluster primariamente (o membro preferido) mas permite que o serviço de cluster faça um fail over em qualquer um dos outros membros.
Para configurar um domínio de failover, use os seguintes procedimentos:
- Abra o
/etc/cluster/cluster.conf
em qualquer nó do cluster. - Adicione a seguinte estrutura de seção dentro do elemento
rm
para cada domínio de failover a ser usado:<failoverdomains> <failoverdomain name="" nofailback="" ordered="" restricted=""> <failoverdomainnode name="" priority=""/> <failoverdomainnode name="" priority=""/> <failoverdomainnode name="" priority=""/> </failoverdomain> </failoverdomains>
Nota
O número de atributos defailoverdomainnode
depende do número de nós no domínio failover. A estrutura da seçãofailoverdomain
no texto anterior mostra três elementosfailoverdomainnode
(sem nomes de nós especificados), mostrando que existem três nós no domínio de failover. - Na seção
failoverdomain
, forneça os valores dos elementos e atributos. Para descriçoes dos elementos e atributos, consulte a seção failoverdomain do esquema de cluster anotados. O esquema de cluster anotado está disponível em/usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
(por exemplo/usr/share/doc/cman-3.0.12/cluster_conf.html
) em qualquer dos nós no cluster. Para um exemplo de uma seçãofailoverdomains
, consulte Exemplo 7.8, “Um Domínio de Failover Adicionado aocluster.conf
”. - Atualize o atributo
config_version
incrementando seu valor (por exemplo, mudando deconfig_version="2"
paraconfig_version="3">
). - Salve o
/etc/cluster/cluster.conf
. - (Opcional) Valide o arquivo no esquema de cluster (
cluster.rng
) rodando o comandoccs_config_validate
. Por exemplo:[root@example-01 ~]#
ccs_config_validate
Configuration validates - Rode o comando
cman_tool version -r
para propagar a configuração ao resto dos nós no cluster.
O Exemplo 7.8, “Um Domínio de Failover Adicionado ao
cluster.conf
” mostra um exemplo de configuração com um domínio de failover ordenado e irrestrito.
Exemplo 7.8. Um Domínio de Failover Adicionado ao cluster.conf
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> <failoverdomainnode name="node-03.example.com" priority="3"/> </failoverdomain> </failoverdomains> </rm> </cluster>
A seção
failoverdomains
contém uma seção failoverdomain
para cada domínio de failover no cluster. Este exemplo possui um domínio de failover. Na linha failoverdomain
, o nome (name
) é especificado como example_pri
. Além disso, ele não especifica failback (failback="0"
), este failover é ordenado (ordered="1"
), e que o domínio failover é irrestrito (restricted="0"
).