37.5 Configuração do Cluster

Você deve configurar o software do cluster para registrar cada nó do cluster como um membro do cluster. Como parte dessa configuração, você também pode configurar proteção e os recursos STONITH (Shoot The Other Node In The Head) para garantir a consistência do cluster.

IMPORTANTE:Os procedimentos nesta seção usam os comandos rcopenais e openais, que funcionam somente com o SLES 11 SP4. Para o SLES 12 SP2 e posterior, use o comando systemctl pacemaker.service.

Por exemplo, para o comando /etc/rc.d/openais start , use o comando systemctl start pacemaker.service.

Use o procedimento a seguir para configuração de cluster:

Para esta solução, você deve usar endereços IP particulares para comunicações internas de cluster e usar unicast para minimizar a necessidade de solicitar um endereço multicast usando um administrador de rede. Você também deve usar um Destino iSCI configurado na mesma máquina virtual SLES que hospeda o armazenamento compartilhado para funcionar como um dispositivo SBD (Split Brain Detector) para fins de proteção.

Configuração do SBD

  1. Conecte-se ao storage03 e inicie uma sessão de console. Execute o comando a seguir para criar um arquivo em branco de qualquer tamanho desejado:

    dd if=/dev/zero of=/sbd count=<tamanho do arquivo> bs=<tamanho de bit>

    Por exemplo, execute o comando a seguir para criar um arquivo de 1 MB preenchido com zeros copiado do pseudodispositivo /dev/zero:

    dd if=/dev/zero of=/sbd count=1024 bs=1024
  2. Execute o YaST da linha de comando ou da Interface Gráfica do Usuário: /sbin/yast

  3. Selecione Network Services (Serviços de Rede) > iSCSI Target (Destino iSCSI).

  4. Clique em Targets (Destinos) e selecione o destino existente.

  5. Selecione Edit (Editar). A IU apresentará uma lista de LUNs (unidades) que estão disponíveis.

  6. Selecione Add (Adicionar) para incluir uma nova LUN.

  7. Deixe o número da LUN como 2. Navegue na caixa de diálogo Path (Caminho) e selecione o arquivo /sbd que você criou.

  8. Deixe as outras opções com as configurações padrão e selecione OK e Next (Próximo) e clique em Next (Próximo) novamente para selecionar as opções de autenticação padrão.

  9. Clique em Finish (Terminar) para sair da configuração. Reinicie os serviços, se necessário. Saia do YaST.

NOTA:As etapas a seguir requerem que cada nó do cluster possa resolver o nome do host de todos os outros nós do cluster (o serviço de sincronização de arquivo csync2 falhará se esse não for o caso). Se o DND não estiver configurado ou disponível, adicione entradas para cada host ao arquivo /etc/hosts que lista cada endereço IP em seu nome de host (como relatado pelo comando de nome de host). Além disso, verifique se não foi atribuído um nome de host a um endereço IP de loopback.

Execute as etapas a seguir para expor um Destino iSCSI ao dispositivo SBD no servidor no endereço IP 10.0.0.3 (storage03).

Node Configuration (Configuração do nó)

Conecte a um nó do cluster (node01) e abra um console:

  1. Execute o YaST.

  2. Abra Network Services (Serviços de Rede) > iSCSI Initiator (Iniciador iSCSI).

  3. Selecione Connected Targets(Destinos Conectados) e, em seguida, o iSCSI Target (Destino iSCSI) que você configurou acima.

  4. Selecione a opção Log Out (Efetuar logout) e efetue logout do Destino.

  5. Alterne para a guia Destinos Descobertos, selecione o Destino e efetue login novamente para atualizar a lista de dispositivos (deixe a opção de inicialização automática e anule a seleção Nenhuma Autenticação).

  6. Selecione OK para sair da ferramenta Iniciador iSCSI.

  7. Abra System (Sistema) > Partitioner (Particionador) e identifique o dispositivo SBD como o IET-VIRTUAL-DISK de 1 MB. Ele será listado como /dev/sdd ou similar - anote qual.

  8. Saia do YaST.

  9. Execute o comando ls -l /dev/disk/by-id/ e anote o ID do dispositivo que está vinculado ao nome do dispositivo localizado acima.

  10. (Condicional) Execute um dos seguintes comandos:

    • Se você estiver usando SLES 11 SP4:

      sleha-init

    • Se você estiver usando SLES 12 SP1 ou posterior:

      ha-cluster-init

  11. Quando solicitado o endereço de rede ao qual vincular, especifique o endereço IP externo do NIC (172.16.0.1).

  12. Aceite o endereço e a porta padrão do multicast. Nós os anularemos mais tarde.

  13. Digite s para habilitar o SBD e especifique o /dev/disk/by-id/<id de dispositivo>, no qual <id de dispositivo> é o ID que você localizou acima (é possível usar Tab para preencher automaticamente o caminho).

  14. (Condicional) Digite N quando for solicitado com o seguinte:

    Do you wish to configure an administration IP? [y/N]

    Para configurar um endereço IP de administração, forneça o endereço IP virtual duranteConfiguração do recurso

  15. Conclua o assistente e certifique-se de que nenhum erro seja informado.

  16. Inicie o YaST.

  17. Selecione High Availability (Alta Disponibilidade) > Cluster (ou apenas Cluster em alguns sistemas).

  18. Na caixa à esquerda, certifique-se de que Communication Channels (Canais de Comunicação) esteja selecionado.

  19. Pressione Tab até a linha superior da configuração e mude a seleção udp para udpu (isso desativa o multicast e seleciona o unicast).

  20. Selecione Add a Member Address (Adicionar um Endereço de Membro) e especifique esse nó (172.16.0.1), em seguida, repita e adicione o(s) outro(s) nó(s) do cluster: 172.16.0.2.

  21. Selecione Finish (Terminar) para completar a configuração.

  22. Saia do YaST.

  23. Execute o comando de reiniciação /etc/rc.d/openais para reiniciar os serviços do cluster com o novo protocolo de sincronização.

Conecte-se a cada nó de cluster adicional (node02) e abra um console:

  1. Execute o YaST.

  2. Abra Network Services (Serviços de Rede) > iSCSI Initiator (Iniciador iSCSI).

  3. Selecione Connected Targets(Destinos Conectados) e, em seguida, o iSCSI Target (Destino iSCSI) que você configurou acima.

  4. Selecione a opção Log Out (Efetuar logout) e efetue logout do Destino.

  5. Alterne para a guia Destinos Descobertos, selecione o Destino e efetue login novamente para atualizar a lista de dispositivos (deixe a opção de inicialização automática e anule a seleção Nenhuma Autenticação).

  6. Selecione OK para sair da ferramenta Iniciador iSCSI.

  7. (Condicional) Execute um dos seguintes comandos:

    • Se você estiver usando SLES 11 SP4:

      sleha-join

    • Se você estiver usando SLES 12 SP1 ou posterior:

      ha-cluster-join

  8. Insira o endereço IP do primeiro nó do cluster.

(Condicional) Se o cluster não for iniciado corretamente, execute as seguintes etapas:

  1. Execute o comando crm status para verificar se os nós estão unidos. Se os nós não estiverem unidos, reinicie todos os nós no cluster.

  2. Copie, manualmente, o arquivo /etc/corosync/corosync.conf de node01 para node02, ou execute o csync2 -x -v em node01, ou defina manualmente o cluster no node02 pelo YaST.

  3. (Condicional) Se o comando csync2 -x -v executado na Etapa 1 falhar ao sincronizar todos os arquivos, realize o procedimento a seguir:

    1. Limpe o banco de dados csync2 no diretório /var/lib/csync2 em todos os nós.

    2. Em todos os nós, atualize o banco de dados do csync2 para que ele corresponda ao sistema de arquivos sem marcar nada que precise ser sincronizado com outros servidores:

      csync2 -cIr /

    3. No nó ativo, execute o seguinte:

      1. Encontre todas as diferenças entre nós ativos e passivos e marque essas diferenças para sincronização:

        csync2 -TUXI

      2. Redefina o banco de dados para forçar o nó ativo a anular qualquer conflito:

        csync2 -fr /

      3. Inicie a sincronização para todos os outros nós:

        csync2 -xr /

    4. Em todos os nós, verifique se todos os arquivos estão sincronizados:

      csync2 -T

      Este comando listará apenas os arquivos que não estão sincronizados.

  4. Execute o seguinte comando em node02:

    Para SLES 11 SP4:

    /etc/rc.d/openais start

    Para SLES 12 SP1 e posterior:

    systemctl start pacemaker.service

    (Condicional) Se o serviço xinetd não adicionar corretamente o novo serviço csync2, o script não funcionará corretamente. O serviço xinetd é necessário para que o outro nó possa sincronizar os arquivos de configuração do cluster para este nó. Se você vir erros comocsync2 run failed (execução de csync2 com falha), talvez haja um problema.

    Para resolver esse problema, execute o comando kill -HUP `cat /var/run/xinetd.init.pid e, em seguida, execute novamente o script sleha-join.

  5. Execute crm_mon em cada nó de cluster para verificar se o cluster está funcionando corretamente. Você também pode usar "hawk", o console da web, para verificar o cluster. O nome de login padrão é hacluster, e a senha é linux.

(Condicional) Dependendo do seu ambiente, realize as seguintes tarefas para modificar os parâmetros adicionais:

  1. Para garantir que todo o cluster não seja parado inesperadamente em caso de falha em um nó único no cluster de dois nós, defina a opção global de clusterno-quorum-policy para ignore:

    crm configure property no-quorum-policy=ignore

    NOTA:Se o cluster contiver mais de dois nós, não defina esta opção.

  2. Para garantir que o gerenciador de recursos permita que os recursos sejam executados no local e em movimento, defina a opção global de cluster default-resource-stickiness como 1:

    crm configure property default-resource-stickiness=1.