Configuração de alta disponibilidade no SUSE usando o dispositivo de isolamento

Neste artigo, veremos as etapas necessárias para configurar a HA (alta disponibilidade) no HANA em Instâncias Grandes no sistema operacional SUSE usando o dispositivo de isolamento.

Observação

Este guia deriva do teste bem-sucedido da configuração no ambiente Microsoft HANA em Instâncias Grandes. A equipe de gerenciamento de serviços da Microsoft para instâncias grandes do HANA não dá suporte ao sistema operacional. Para solução de problemas ou esclarecimento sobre a camada do sistema operacional, contate o SUSE.

A equipe de Gerenciamento de Serviços da Microsoft configura e dá suporte completo ao dispositivo de isolamento. Isso pode ajudar a solucionar problemas do dispositivo de isolamento.

Pré-requisitos

Para configurar a alta disponibilidade usando o clustering SUSE, você precisa:

  • Provisionar o HANA em Instâncias Grandes.
  • Instalar e registrar o sistema operacional com os patches mais recentes.
  • Conectar servidores de Instância Grande do HANA para o servidor SMT para obter patches e pacotes.
  • Configurar o protocolo NTP (servidor de horário NTP).
  • Leia e compreenda a documentação mais recente do SUSE na configuração de HA.

Detalhes de configuração

Este guia usa as seguintes configurações:

  • Sistema operacional: SLES 12 SP1 para SAP
  • HANA em Instâncias Grandes: 2xS192 (quatro soquetes, 2 TB)
  • Versão do HANA: HANA 2.0 SP1
  • Nomes do servidor: sapprdhdb95 (node1) e sapprdhdb96 (node2)
  • Dispositivo de isolamento: baseado em iSCSI
  • NTP em um dos nós do HANA em Instâncias Grandes

Ao configurar o HANA em Instâncias Grandes com a replicação de sistema HANA, você pode solicitar que a equipe de Gerenciamento de Serviços da Microsoft configure o dispositivo de isolamento. Faça isso no momento do provisionamento.

Mesmo que você seja um cliente com o HANA em Instâncias Grandes já provisionado, ainda poderá configurar o dispositivo de isolamento. Forneça as informações a seguir para a equipe de Gerenciamento de Serviços da Microsoft no SRF (formulário de solicitação de serviço). Você pode obter o formulário SRF pelo gerente técnico de contas ou pelo seu contato da Microsoft para a integração do HANA em Instância Grande.

  • Nome e endereço IP do servidor (por exemplo, myhanaserver1 e 10.35.0.1)
  • Local (por exemplo, Leste dos EUA)
  • Nome do cliente (por exemplo, Microsoft)
  • Identificador do sistema HANA (SID) (por exemplo, H11)

Depois que o dispositivo de isolamento estiver configurado, a equipe de Gerenciamento de Serviços da Microsoft fornecerá o nome do SBD e o endereço IP do armazenamento iSCSI. Você pode usar essas informações para configurar a instalação do isolamento.

Siga as etapas descritas nas seções a seguir para configurar a HA usando o dispositivo de isolamento.

Identificar o dispositivo SBD

Observação

Esta seção se aplica somente a clientes existentes. Se você for um novo cliente, a equipe de Gerenciamento de Serviços da Microsoft fornecerá o nome do dispositivo SBD, portanto ignore esta seção.

  1. Modifique /etc/iscsi/initiatorname.isci para:

    iqn.1996-04.de.suse:01:<Tenant><Location><SID><NodeNumber> 
    

    O Gerenciamento de Serviços da Microsoft fornece essa cadeia de caracteres. Modifique o arquivo em ambos os nós. No entanto, o número do nó é diferente para cada nó.

    Captura de tela que mostra um arquivo iniciador com valores InitiatorName para um nó.

  2. Modifique /etc/iscsi/iscsid.conf configurando node.session.timeo.replacement_timeout=5 e node.startup = automatic. Modifique o arquivo em ambos os nós.

  3. Execute o comando a seguir nos dois nós.

    iscsiadm -m discovery -t st -p <IP address provided by Service Management>:3260
    

    Os resultados mostram quatro sessões.

    Captura de tela que mostra a janela de um console com resultados do comando de descoberta.

  4. Execute o comando a seguir nos dois nós para entrar no dispositivo iSCSI.

    iscsiadm -m node -l
    

    Os resultados mostram quatro sessões.

    Captura de tela que mostra a janela de um console com resultados do comando de nó.

  5. Use o comando a seguir para executar o script de novo exame do rescan-scsi-bus.sh. Esse script mostra os novos discos criados para você. Execute-o em ambos os nós.

    rescan-scsi-bus.sh
    

    Os resultados deverão mostrar um número LUN maior que zero (por exemplo: 1, 2 e assim por diante).

    Captura de tela que mostra a janela de um console com os resultados do script.

  6. Para obter o nome do dispositivo, execute o comando a seguir nos dois nós.

      fdisk –l
    

    Nos resultados, escolha o dispositivo com o tamanho de 178 MiB.

    Captura de tela que mostra uma janela de console com resultados do comando de disco f.

Inicializar o dispositivo SBD

  1. Use o comando a seguir para inicializar o dispositivo SBD nos dois nós.

    sbd -d <SBD Device Name> create
    

    Captura de tela que mostra uma janela de console com o resultado do comando s b d create.

  2. Use o comando a seguir nos dois nós para verificar o que foi gravado no dispositivo.

    sbd -d <SBD Device Name> dump
    

Configurar o cluster SUSE HA

  1. Use o seguinte comando para verificar se os padrões ha_sles e SAPHanaSR-doc estão instalados nos dois nós. Se não estiverem instalados, instale-os.

    zypper in -t pattern ha_sles
    zypper in SAPHanaSR SAPHanaSR-doc
    

    Captura de tela que mostra uma janela do console com o resultado do comando de padrão.

    Captura de tela que mostra uma janela do console com o resultado do comando SAPHanaSR-doc.

  2. Configure o cluster usando o comando ha-cluster-init ou o assistente do yast2. Neste exemplo, usamos o assistente do yast2. Execute esta etapa somente no nó primário.

    1. Acesse yast2>Alta Disponibilidade>Cluster.

      Captura de tela que mostra o Centro de Controle YaST com Alta Disponibilidade e Cluster selecionados.

    2. Na caixa de diálogo que aparece sobre a instalação do pacote Hawk, selecione Cancelar porque o pacote halk2 já está instalado.

      Captura de tela que mostra uma caixa de diálogo com as opções Instalar e Cancelar.

    3. Na caixa de diálogo que aparece sobre continuar, selecione Continuar.

      Captura de tela que mostra uma mensagem sobre como continuar sem instalar os pacotes necessários.

    4. O valor esperado é o número dos nós implantados (neste caso, 2). Selecione Avançar.

    5. Adicione nomes de nós e selecione Adicionar arquivos sugeridos.

      Captura de tela que mostra a janela Configurar Cluster com o host de sincronização e listas de arquivos de sincronização.

    6. Clique em Ligar csync2.

    7. Selecione Gerar Chave Pré-Compartilhada.

    8. Na mensagem pop-up que aparece, selecione OK.

      Captura de tela que mostra uma mensagem informando que a chave foi gerada.

    9. A autenticação é realizada usando os endereços IP e as chaves pré-compartilhadas em Csync2. O arquivo de chave é gerado com csync2 -k /etc/csync2/key_hagroup.

      Copie manualmente o arquivo key_hagroup a todos os membros do cluster depois de ele ser criado. Cerifique-se de copiar o arquivo de node1 para node2. Em seguida, selecione Avançar.

      Captura de tela que mostra uma caixa de diálogo Configuração de Cluster com opções necessárias para copiar a chave para todos os membros do cluster.

    10. Na opção padrão, a Inicialização estava Desativada. Altere-a para Ativada para que o pacemaker seja iniciado durante a inicialização. Você pode fazer a escolha de acordo com os requisitos de instalação.

      Captura de tela que mostra a janela do Serviço de Cluster com a Inicialização ativada.

    11. Selecione Avançar para concluir a configuração do cluster.

Configure o watchdog softdog

  1. Adicione a seguinte linha a /etc/init.d/boot.local nos dois nós.

    modprobe softdog
    

    Captura de tela que mostra um arquivo de inicialização com a linha softdog adicionada.

  2. Use o comando a seguirr para atualizar o arquivo /etc/sysconfig/sbd nos dois nós.

    SBD_DEVICE="<SBD Device Name>"
    

    Captura de tela que mostra o arquivo s b d com o valor S B D_DEVICE adicionado.

  3. Carregue o módulo kernel nos dois nós executando o seguinte comando.

    modprobe softdog
    

    Captura de tela que mostra parte de uma janela de console com o comando modprobe softdog.

  4. Use o comando a seguir para garantir que o softdog está executando nos dois nós.

    lsmod | grep dog
    

    Captura de tela que mostra parte de uma janela de console com o resultado da execução do comando l s mod.

  5. Use o comando a seguir para iniciar o dispositivo SBD nos dois nós.

    /usr/share/sbd/sbd.sh start
    

    Captura de tela que mostra parte de uma janela de console com o comando start.

  6. Use o comando a seguir para testar o daemon SBD nos dois nós.

    sbd -d <SBD Device Name> list
    

    Os resultados mostram duas entradas após a configuração nos dois nós.

    Captura de tela que mostra parte de uma janela de console exibindo duas entradas.

  7. Envie a seguinte mensagem de teste para um dos nós.

    sbd  -d <SBD Device Name> message <node2> <message>
    
  8. No segundo nó (node2), use o comando a seguir para verificar o status da mensagem.

    sbd  -d <SBD Device Name> list
    

    Captura de tela que mostra parte de uma janela de console com um dos membros exibindo um valor de teste para o outro membro.

  9. Para adotar a configuração SBD, atualize o arquivo /etc/sysconfig/sbd desta forma nos dois nós.

    SBD_DEVICE=" <SBD Device Name>" 
    SBD_WATCHDOG="yes" 
    SBD_PACEMAKER="yes" 
    SBD_STARTMODE="clean" 
    SBD_OPTS=""
    
  10. Use o comando a seguir para iniciar o serviço pacemaker no nó primário (node1).

    systemctl start pacemaker
    

    Captura de tela que mostra uma janela de console exibindo o status depois de iniciar o pacemaker.

    Se o serviço pacemaker falhar, consulte a seção Cenário 5: o serviço pacemaker falhará mais tarde neste artigo.

Unir o nó ao cluster

Execute o comando a seguir no node2 para permitir que o node esteja ingressado no cluster.

ha-cluster-join

Se você receber um erro durante a ingressão do cluster, consulte a seção Cenário 6: Node2 não pode ingressar no cluster mais adiante neste artigo.

Validar o cluster

  1. Use os comandos a seguir para verificar e, opcionalmente, iniciar o cluster pela primeira vez nos dois nós.

    systemctl status pacemaker
    systemctl start pacemaker
    

    Captura de tela que mostra uma janela de console com o status do pacemaker.

  2. Execute o comando a seguir para garantir que os dois nós estão online. Você pode executá-lo em qualquer nó do cluster.

    crm_mon
    

    Captura de tela que mostra uma janela do console com os resultados do comando c r m_mon.

    Você também pode entrar no Hawk para verificar o status do cluster: https://\<node IP>:7630. O usuário padrão hacluster e a senha é linux. Se necessário, altere a senha usando o comando passwd.

Configure as propriedades e os recursos do cluster

Esta seção descreve as etapas para configurar os recursos do cluster. Neste exemplo, você configura usa os recursos a seguir. Você pode configurar o REST (se necessário) referenciando o guia de HA do SUSE.

  • Inicialização do cluster
  • Dispositivo de isolamento
  • Endereço IP virtual

Faça a configuração somente no nó primário.

  1. Crie o arquivo de inicialização do cluster e configure-o adicionando o texto a seguir.

    sapprdhdb95:~ # vi crm-bs.txt
    # enter the following to crm-bs.txt
    property $id="cib-bootstrap-options" \
    no-quorum-policy="ignore" \
    stonith-enabled="true" \
    stonith-action="reboot" \
    stonith-timeout="150s"
    rsc_defaults $id="rsc-options" \
    resource-stickiness="1000" \
    migration-threshold="5000"
    op_defaults $id="op-options" \
    timeout="600"
    
  2. Use o comando a seguir para adicionar a configuração ao cluster.

    crm configure load update crm-bs.txt
    

    Captura de tela que mostra parte de uma janela de console executando o comando c r m.

  3. Configure o dispositivo de isolamento adicionando o recurso, criando o arquivo e adicionando o texto conforme mostrado a seguir.

    # vi crm-sbd.txt
    # enter the following to crm-sbd.txt
    primitive stonith-sbd stonith:external/sbd \
    params pcmk_delay_max="15"
    

    Use o comando a seguir para adicionar a configuração ao cluster.

    crm configure load update crm-sbd.txt
    
  4. Adicione o endereço IP virtual para o recurso criando o arquivo e adicionando o texto a seguir.

    # vi crm-vip.txt
    primitive rsc_ip_HA1_HDB10 ocf:heartbeat:IPaddr2 \
    operations $id="rsc_ip_HA1_HDB10-operations" \
    op monitor interval="10s" timeout="20s" \
    params ip="10.35.0.197"
    

    Use o comando a seguir para adicionar a configuração ao cluster.

    crm configure load update crm-vip.txt
    
  5. Use o comando crm_mon para validar os recursos.

    Os resultados mostram os dois recursos.

    Captura de tela que mostra uma janela de console com dois recursos.

    Você pode verificar o status em https://<endereço IP do nó>:7630/cib/live/state.

    Captura de tela que mostra o status dos dois recursos.

Testar o processo de failover

  1. Para testar o processo de failover, use o comando a seguir para interromper o serviço pacemaker no node1.

    Service pacemaker stop
    

    Os recursos fazem failover para node2.

  2. Pare o serviço pacemaker no node2 e os recursos farão failover no node1.

    Aqui está o status antes do failover:
    Captura de tela que mostra o status dos dois recursos antes do failover.

    Aqui está o status depois do failover:
    Captura de tela que mostra o status dos dois recursos depois do failover.

    Captura de tela que mostra uma janela de console com o status de recursos depois do failover.

Solução de problemas

Esta seção descreve os cenários de falha que você pode encontrar durante a instalação.

Cenário 1: o nó do cluster não está online

Se algum dos nós não aparecer online no Gerenciador de Cluster, você pode tentar esse procedimento para colocá-lo online.

  1. Use o comando a seguir para iniciar o serviço iSCSI.

    service iscsid start
    
  2. Use o comando a seguir para entrar nesse nó iSCSI.

    iscsiadm -m node -l
    

    A saída esperada terá essa aparência:

    sapprdhdb45:~ # iscsiadm -m node -l
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.11,3260] (multiple)
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.12,3260] (multiple)
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.22,3260] (multiple)
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.21,3260] (multiple)
    Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.11,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.12,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.22,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.21,3260] successful.
    

Cenário 2: o yast2 não mostra a exibição gráfica

A tela gráfica do yast2 é usada para configurar o cluster de alta disponibilidade neste artigo. Se o yast2 não abrir com a janela gráfica como mostrado, e gerar um erro Qt, faça as etapas a seguir para instalar os pacotes necessários. Se ele abre com a janela gráfica, você pode ignorar estas etapas.

Aqui está um exemplo de erro Qt:

Captura de tela que mostra parte de uma janela de console com uma mensagem de erro.

Aqui está um exemplo da saída esperada:

Captura de tela que mostra o centro de controle YaST com alta disponibilidade e cluster realçado.

  1. Certifique-se de estar conectado como usuário “raiz” e ter o SMT configurado para baixar e instalar os pacotes.

  2. Acesse o Software>yast>Software de gerenciamento>Dependências e selecione Instalar pacotes recomendados.

    Observação

    Execute os dois nós para poder acessar o modo de exibição gráfico do yast2 em ambos os nós.

    A captura de tela a seguir mostra a tela esperada.

    Captura de tela que mostra uma janela de console exibindo o Centro de Controle YaST.

  3. Em Dependências, selecione Instalar Pacotes Recomendados.

    Captura de tela que mostra uma janela de console com a opção Instalar Pacotes Recomendados selecionada.

  4. Examine as alterações e selecione OK.

    Captura de tela que mostra uma janela de console com uma lista de pacotes que foram selecionados para instalação.

    A instalação do pacote continua.

    Captura de tela que mostra uma janela de console exibindo o progresso da instalação.

  5. Selecione Avançar.

  6. Quando a tela Instalação concluída com êxito for exibida, selecione Concluir.

    Captura de tela mostra uma janela de console com uma mensagem de êxito.

  7. Use os comandos a seguir para instalar os pacotes libqt4 and libyui-qt.

    zypper -n install libqt4
    

    Captura de tela que mostra uma janela de console instalando o primeiro pacote.

    zypper -n install libyui-qt
    

    Captura de tela que mostra uma janela de console instalando o segundo pacote.

    Captura de tela que mostra uma janela de console instalando a continuação do segundo pacote.

    Agora o Yast2 deverá ser capaz de abrir a exibição gráfica.

    Captura de tela que mostra o centro de controle YaST com Software e atualização online selecionada.

Cenário 3: o yast2 não mostra a opção de alta disponibilidade

Para a opção de alta disponibilidade ficar visível no centro de controle do yast2, você precisará instalar os outros pacotes.

  1. Vá para software>yast2>Gerenciamento de software. Em seguida, selecione Atualização Online>do Software.

    Captura de tela que mostra o centro de controle YaST com Software e atualização online selecionada.

  2. Selecione padrões para os itens a seguir. Em seguida, selecione Aceitar.

    • Base do servidor do SAP HANA
    • Compilador e ferramentas C/C++
    • Alta disponibilidade
    • Base do servidor de aplicativos SAP

    Captura de tela que mostra a seleção do primeiro padrão no item do compilador e das ferramentas.

    Captura de tela que mostra a seleção do segundo padrão no item do compilador e das ferramentas.

  3. Na lista de pacotes que foram alterados para resolver dependências, selecione Continuar.

    Captura de tela que mostra a caixa de diálogo Pacotes Alterados com pacotes alterados para resolver dependências.

  4. Na página de status Executando a Instalação, selecione Avançar.

    Captura de tela que mostra a página de status Executando a Instalação.

  5. Quando a instalação for concluída, um relatório de instalação será exibido. Selecione Concluir.

    Captura de tela que mostra o relatório de instalação.

Cenário 4: a instalação do HANA falha com erro de assemblies gcc

Se a instalação do HANA falhar, você poderá receber o erro a seguir.

Captura de tela que mostra uma mensagem de erro informando que o sistema operacional não está pronto para executar assemblies g c c 5.

Para corrigir o problema, instale as bibliotecas libgcc_sl e libstdc++6, conforme mostrado na captura de tela a seguir.

Captura de tela que mostra uma janela de console instalando as bibliotecas necessárias.

Cenário 5: falha do serviço Pacemaker

As informações a seguir aparecerão se o serviço pacemaker não puder iniciar.

sapprdhdb95:/ # systemctl start pacemaker
A dependency job for pacemaker.service failed. See 'journalctl -xn' for details.
sapprdhdb95:/ # journalctl -xn
-- Logs begin at Thu 2017-09-28 09:28:14 EDT, end at Thu 2017-09-28 21:48:27 EDT. --
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV  ] Service engine unloaded: corosync configuration map
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [QB    ] withdrawing server sockets
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV  ] Service engine unloaded: corosync configuration ser
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [QB    ] withdrawing server sockets
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV  ] Service engine unloaded: corosync cluster closed pr
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [QB    ] withdrawing server sockets
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV  ] Service engine unloaded: corosync cluster quorum se
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV  ] Service engine unloaded: corosync profile loading s
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [MAIN  ] Corosync Cluster Engine exiting normally
Sep 28 21:48:27 sapprdhdb95 systemd[1]: Dependency failed for Pacemaker High Availability Cluster Manager
-- Subject: Unit pacemaker.service has failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit pacemaker.service has failed.
--
-- The result is dependency.
sapprdhdb95:/ # tail -f /var/log/messages
2017-09-28T18:44:29.675814-04:00 sapprdhdb95 corosync[57600]:   [QB    ] withdrawing server sockets
2017-09-28T18:44:29.676023-04:00 sapprdhdb95 corosync[57600]:   [SERV  ] Service engine unloaded: corosync cluster closed process group service v1.01
2017-09-28T18:44:29.725885-04:00 sapprdhdb95 corosync[57600]:   [QB    ] withdrawing server sockets
2017-09-28T18:44:29.726069-04:00 sapprdhdb95 corosync[57600]:   [SERV  ] Service engine unloaded: corosync cluster quorum service v0.1
2017-09-28T18:44:29.726164-04:00 sapprdhdb95 corosync[57600]:   [SERV  ] Service engine unloaded: corosync profile loading service
2017-09-28T18:44:29.776349-04:00 sapprdhdb95 corosync[57600]:   [MAIN  ] Corosync Cluster Engine exiting normally
2017-09-28T18:44:29.778177-04:00 sapprdhdb95 systemd[1]: Dependency failed for Pacemaker High Availability Cluster Manager.
2017-09-28T18:44:40.141030-04:00 sapprdhdb95 systemd[1]: [/usr/lib/systemd/system/fstrim.timer:8] Unknown lvalue 'Persistent' in section 'Timer'
2017-09-28T18:45:01.275038-04:00 sapprdhdb95 cron[57995]: pam_unix(crond:session): session opened for user root by (uid=0)
2017-09-28T18:45:01.308066-04:00 sapprdhdb95 CRON[57995]: pam_unix(crond:session): session closed for user root

Para corrigi-lo, exclua a linha a seguir do arquivo /usr/lib/systemd/system/fstrim.timer:

Persistent=true

Captura de tela que mostra o arquivo de corte f s com o valor de Persistent=true a ser excluído.

Cenário 6: o node2 não pode ingressar no cluster

O erro a seguir será exibido se houver um problema com a junção do node2 ao cluster existente por meio do comando ha-cluster-join.

ERROR: Can’t retrieve SSH keys from <Primary Node>

Captura de tela que mostra uma janela do console com uma mensagem de erro informando que as chaves SS H não podem ser recuperadas de um endereço IP específico.

Para corrigir isso:

  1. Execute os comandos a seguir nos dois nós.

    ssh-keygen -q -f /root/.ssh/id_rsa -C 'Cluster Internal' -N ''
    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    

    Captura de tela que mostra parte de uma janela de console executando o comando no primeiro nó.

    Captura de tela que mostra parte de uma janela de console executando o comando no segundo nó.

  2. Confirme se node2 foi adicionado ao cluster.

    Captura de tela que mostra uma janela de console com um comando ha-cluster-join bem-sucedido.

Próximas etapas

Você pode encontrar mais informações sobre a configuração de HA do SUSE nos seguintes artigos: