fencing tem uma tradução para português como algo do tipo: cercar, isolar.
fencing protege seus dados de serem corrompidos e seu aplicativo de ficar indisponível devido ao acesso simultâneo não intencional por nós não autorizados.
Só porque um nó não responde, não significa que ele parou de acessar seus dados. A única maneira de ter 100% de certeza de que seus dados estão seguros é usar fencing para garantir que o nó esteja realmente offline antes de permitir que os dados sejam acessados de outro nó.
O isolamento(fencing) também tem um papel a desempenhar no caso de um serviço em cluster não poder ser interrompido. Nesse caso, o cluster usa fencing para colocar forçosamente todo o nó em modo offline, tornando seguro iniciar o serviço em outro lugar.
Fencing também é conhecida como STONITH, um acrônimo para “Shoot The Other Node In The Head” ou “Atire na cabeça do outro nó”, já que a forma mais popular de fencing é cortar a energia de um hospedeiro.
Para garantir a segurança de seus dados, o fencing já vem ativado por padrão.
Desativando Fencing(STONITH)
É possível dizer ao cluster para não usar fencing, definindo a opção de cluster habilitado para stonith como false:
pcs property set stonith-enabled=false
Agora verifique
crm_verify -L
No entanto, isso é completamente inadequado para um cluster de produção. Ele diz ao cluster para simplesmente fingir que os nós com falha estão desligados com segurança.
Alguns fornecedores se recusarão a oferecer suporte a clusters com isolamento desativado. Mesmo desativá-lo para um cluster de teste significa que você não poderá testar cenários reais de falha.
Escolhendo um Dispositivo de Fencing
As duas grandes categorias de dispositivos de fencing são:
- power fencing que está relacionada à aplicação de fencing usando energia, ou seja, que corta a energia do alvo. Dispositivos de cerca elétrica incluem:
- Interruptores de energia inteligentes(Intelligent power switches)
- IMPI
- Dispositivo de vigilância de hardware(Hardware watchdog device) sozinho ou em combinação com armazenamento compartilhado usado como um mecanismo de “pílula de veneno(poison pill”)”
- fabric fencing, que corta o acesso do alvo a algum recurso crítico, como um disco compartilhado ou acesso à rede local. Dispositivos de Fabric fencing incluem:
- Armazenamento compartilhado que pode ser cortado para um host de destino por outro host (por exemplo, um dispositivo de armazenamento externo compatível com reservas persistentes SCSI-3)
- Interruptores de rede inteligentes(Intelligent network switches)
Usar o IPMI como um dispositivo power fencing pode parecer uma boa escolha. No entanto, se o IPMI compartilhar energia e/ou acesso à rede com o host (como a maioria dos controladores IPMI integrados), uma falha de energia ou rede fará com que o host e seu dispositivo de isolamento falhem. O cluster não conseguirá se recuperar e deve interromper todos os recursos para evitar uma possível situação de divisão do cérebro.
Da mesma forma, qualquer dispositivo que dependa da máquina estar ativa (como “dispositivos” baseados em SSH às vezes usados durante o teste) é inapropriado, porque o isolamento será necessário quando o nó não responder completamente.
Configurando Fencing em um Cluster
- Instale o(s) agente(s) de fencing. Para ver quais pacotes estão disponíveis, execute yum search fence-. Certifique-se de instalar o(s) pacote(s) em todos os nós do cluster.
- Configure o próprio dispositivo de fencing para ser capaz de proteger seus nós e aceitar solicitações de fencing. Isso inclui qualquer configuração necessária no dispositivo e nos nós e qualquer mudança de firewall ou SELinux necessária. Teste a comunicação entre o dispositivo e seus nós.
- Encontre o nome do agente de fencing correto: pcs stonith list
- Encontre os parâmetros associados ao dispositivo: pcs stonith describe nome_agente
- Crie uma cópia local do CIB: pcs cluster cib stonith_cfg
- Crie o recurso de proteção: pcs -f stonith_cfg stonith create stonith_id stonith_device_type [stonith_device_options]
Qualquer flag que não aceite argumentos, como –ssl, deve ser passado como ssl=1. - Habilite o isolamento no cluster:
pcs -f stonith_cfg property set stonith-enabled=true
- Se o dispositivo não souber isolar(fence) nós com base em seu nome de nó de cluster, você também pode precisar definir o parâmetro especial pcmk_host_map. Consulte man pacemaker-fenced para obter detalhes.
- Se o dispositivo não suportar o comando list, você também pode precisar definir os parâmetros especiais pcmk_host_list e/ou pcmk_host_check. Consulte
man pacemaker-fenced
para obter detalhes. - Se o dispositivo não espera que a vítima seja especificada com o parâmetro port, você também pode precisar definir o parâmetro especial pcmk_host_argument. Consulte
man pacemaker-fenced
para obter detalhes. - Confirme a nova configuração: pcs cluster cib-push stonith_cfg
- Depois que o recurso do dispositivo de fencing estiver em execução, teste-o; você pode querer parar o cluster nessa máquina primeiro: stonith_admin –reboot nodename
Exemplo
Esse exemplo, assim como os demais artigos dessa série, é baseado no exemplo postado no site clusterlabs.
Para este exemplo, suponha que temos um chassi contendo quatro nós e um dispositivo IPMI alimentado separadamente ativo em 10.0.0.1. Seguindo os passos acima seria algo assim:
#1 Instale o pacote fence-agents-ipmilan em ambos os nós.
#2 Configure o endereço IP, credenciais de autenticação, etc. no próprio dispositivo IPMI.
#3 Escolha o agente fence_ipmilan STONITH.
#4 Obtenha os possíveis parâmetros do agente:
[root@pcmk-1 ~]# pcs stonith describe fence_ipmilan fence_ipmilan - Fence agent for IPMI fence_ipmilan is an I/O Fencing agentwhich can be used with machines controlled by IPMI.This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option. Stonith options: ipport: TCP/UDP port to use for connection with device hexadecimal_kg: Hexadecimal-encoded Kg key for IPMIv2 authentication port: IP address or hostname of fencing device (together with --port-as-ip) inet6_only: Forces agent to use IPv6 addresses only ipaddr: IP Address or Hostname passwd_script: Script to retrieve password method: Method to fence (onoff|cycle) inet4_only: Forces agent to use IPv4 addresses only passwd: Login password or passphrase lanplus: Use Lanplus to improve security of connection auth: IPMI Lan Auth type. cipher: Ciphersuite to use (same as ipmitool -C parameter) target: Bridge IPMI requests to the remote target address privlvl: Privilege level on IPMI device timeout: Timeout (sec) for IPMI operation login: Login Name verbose: Verbose mode debug: Write debug information to given file power_wait: Wait X seconds after issuing ON/OFF login_timeout: Wait X seconds for cmd prompt after login delay: Wait X seconds before fencing is started power_timeout: Test X seconds for status change after ON/OFF ipmitool_path: Path to ipmitool binary shell_timeout: Wait X seconds for cmd prompt after issuing command port_as_ip: Make "port/plug" to be an alias to IP address retry_on: Count of attempts to retry power on sudo: Use sudo (without password) when calling 3rd party sotfware. priority: The priority of the stonith resource. Devices are tried in order of highest priority to lowest. pcmk_host_map: A mapping of host names to ports numbers for devices that do not support host names. Eg. node1:1;node2:2,3 would tell the cluster to use port 1 for node1 and ports 2 and 3 for node2 pcmk_host_list: A list of machines controlled by this device (Optional unless pcmk_host_check=static-list). pcmk_host_check: How to determine which machines are controlled by the device. Allowed values: dynamic-list (query the device), static-list (check the pcmk_host_list attribute), none (assume every device can fence every machine) pcmk_delay_max: Enable a random delay for stonith actions and specify the maximum of random delay. This prevents double fencing when using slow devices such as sbd. Use this to enable a random delay for stonith actions. The overall delay is derived from this random delay value adding a static delay so that the sum is kept below the maximum delay. pcmk_delay_base: Enable a base delay for stonith actions and specify base delay value. This prevents double fencing when different delays are configured on the nodes. Use this to enable a static delay for stonith actions. The overall delay is derived from a random delay value adding this static delay so that the sum is kept below the maximum delay. pcmk_action_limit: The maximum number of actions can be performed in parallel on this device Pengine property concurrent-fencing=true needs to be configured first. Then use this to specify the maximum number of actions can be performed in parallel on this device. -1 is unlimited. Default operations: monitor: interval=60s
#5 execute pcs cluster cib stonith_cfg
#6 Aqui estão os parâmetros de exemplo para criar nosso recurso de dispositivo de isolamento(fencing):
[root@pcmk-1 ~]# pcs -f stonith_cfg stonith create ipmi-fencing fence_ipmilan \ pcmk_host_list="pcmk-1 pcmk-2" ipaddr=10.0.0.1 login=testuser \ passwd=acd123 op monitor interval=60s [root@pcmk-1 ~]# pcs -f stonith_cfg stonith ipmi-fencing (stonith:fence_ipmilan): Stopped
#7 Ative o isolamento no cluster:
[root@pcmk-1 ~]# pcs -f stonith_cfg property set stonith-enabled=true [root@pcmk-1 ~]# pcs -f stonith_cfg property Cluster Properties: cluster-infrastructure: corosync cluster-name: mycluster dc-version: 1.1.18-11.el7_5.3-2b07d5c5a9 have-watchdog: false stonith-enabled: true
#8 pcs cluster cib-push stonith_cfg –config
#9 Agora teste
[root@pcmk-1 ~]# pcs cluster stop pcmk-2 [root@pcmk-1 ~]# stonith_admin --reboot pcmk-2
#10 Após um teste bem-sucedido, faça login em todos os nós reinicializados e inicie o cluster(com pcs cluster start).
Comments on “Pacemaker: Configurando Fencing(STONITH) – Parte 009”