Alta disponibilidade do SAP HANA em VMs do Azure no Red Hat Enterprise Linux

Para desenvolvimento local, é possível usar a replicação de sistema do HANA ou o armazenamento compartilhado para estabelecer alta disponibilidade (HA) para SAP HANA. Em Máquinas Virtuais do Azure, a replicação de sistema do HANA no Azure é atualmente a única função de HA com suporte.

A replicação do SAP HANA consiste em um nó primário e, pelo menos, um nó secundário. As alterações nos dados do nó primário são replicadas no nó secundário de modo síncrono ou assíncrono.

Este artigo descreve como implantar e configurar VMs (máquinas virtuais), instalar a estrutura de cluster e instalar e configurar a replicação de sistema do SAP HANA.

Nas configurações de exemplo, são usados os comandos de instalação, o número da instância 03 a ID do Sistema do HANA HN1.

Pré-requisitos

Primeiro, leia os seguintes documentos e Notas SAP:

Visão geral

Para obter HA, o SAP HANA é instalado em duas VMs. Os dados são replicados usando a Replicação de Sistema do HANA.

Diagrama que mostra a visão geral de alta disponibilidade do SAP HANA.

A configuração da replicação de sistema do SAP HANA usa um nome do host virtual dedicado e endereços IP virtuais. No Azure, um balanceador de carga é necessário para usar um endereço IP virtual. A configuração apresentada mostra um balanceador de carga com:

  • Endereço IP do front-end: 10.0.0.13 para hn1-db
  • Porta de investigação: 62503

Preparar a infraestrutura

O Azure Marketplace contém imagens qualificadas para SAP HANA com o complemento de alta disponibilidade, que você pode usar para implantar novas VMs usando várias versões do Red Hat.

Implantar VMs do Linux manualmente por meio do portal do Azure

Este documento considera que você já implantou um grupo de recursos, uma Rede virtual do Azure e uma sub-rede.

Implantar VMs para SAP HANA. Escolha uma imagem RHEL adequada com suporte para o sistema HANA. Você pode implantar uma VM em qualquer uma das opções de disponibilidade: conjunto de dimensionamento de máquinas virtuais, zona de disponibilidade ou conjunto de disponibilidade.

Importante

Certifique-se de que o sistema operacional selecionado conte com a certificação SAP para o SAP HANA para os tipos de VM específicas que você planeja usar em sua implantação. Você pode pesquisar tipos de VM certificadas pelo SAP HANA e suas versões do sistema operacional nas Plataformas de IaaS Certificadas do SAP HANA. Certifique-se de clicar nos detalhes do tipo de VM para obter a lista completa de versões do sistema operacional com suporte do SAP HANA para o tipo de VM específico.

Configurar o Azure Load Balancer

Durante a configuração da VM, você tem a opção de criar ou selecionar o balanceador de carga existente na seção de rede. Siga as etapas abaixo para configurar o balanceador de carga padrão para a configuração de alta disponibilidade do banco de dados HANA.

Siga as etapas em Criar balanceador de carga para configurar um balanceador de carga padrão para um sistema SAP de alta disponibilidade usando o portal do Azure. Durante a configuração do balanceador de carga, considere os seguintes pontos:

  1. Configuração de IP front-end: Crie um IP front-end. Selecione a mesma rede virtual e nome de sub-rede das máquinas virtuais de banco de dados.
  2. Pool de back-end: Crie um pool de back-end e adicione VMs de banco de dados.
  3. Regras de entrada: Crie uma regra de balanceamento de carga. Siga as mesmas etapas para ambas as regras de balanceamento de carga.
    • Endereço IP de front-end: Selecione um IP de front-end.
    • Pool de back-end: selecione um pool de back-end.
    • Portas de alta disponibilidade: selecione essa opção.
    • Protocolo: selecione TCP.
    • Sonda de integridade: crie uma sonda de integridade com os seguintes detalhes:
      • Protocolo: selecione TCP.
      • Porta: Por exemplo, 625<instância-não.>.
      • Intervalo: Inserir 5.
      • Limite de investigação: insira 2.
    • Tempo limite de inatividade (minutos): Inserir 30.
    • Habilitar IP Flutuante: Selecione essa opção.

Observação

A propriedade de configuração da investigação de integridade numberOfProbes, também conhecida como Limite não íntegro no portal, não é respeitada. Para controlar o número de análises consecutivas bem-sucedidas ou com falha, configure a propriedade probeThreshold para 2. Atualmente não é possível definir essa propriedade utilizando o portal do Azure, por isso utilize o CLI do Azure ou o comando PowerShell.

Para obter mais informações sobre as portas necessárias para o SAP HANA, leia o capítulo Conexões aos bancos de dados de locatário no guia Bancos de dados de locatário do SAP HANA ou Nota SAP 2388694.

Importante

Não há suporte para IP flutuante em uma configuração de IP de adaptador de rede secundário em cenários de balanceamento de carga. Para obter mais informações, consulte Limitações do Azure Load Balancer. Se você precisar de um endereço IP adicional para a VM, implante um segunda NIC.

Observação

Quando VMs sem endereços IP públicos são colocados no pool de back-end de uma instância interna (sem endereço IP público) do Standard Azure Load Balancer, não há conectividade de saída com a Internet, a menos que seja realizada mais configuração para permitir o roteamento para pontos extremidade públicos. Para obter mais informações sobre como obter conectividade de saída, veja Conectividade de ponto final público para VMs usando o Azure Standard Load Balancer em cenários de alta disponibilidade SAP.

Importante

Não habilite carimbos de data/hora de TCP em VMs do Azure posicionadas de forma subjacente em relação ao Azure Load Balancer. Habilitar carimbos de data/hora TCP pode causar falha nas sondagens de integridade. Defina o parâmetro net.ipv4.tcp_timestampscomo 0. Para saber mais, confira Investigações de integridade do Load Balancer e Nota SAP 2382421.

Instalar SAP HANA

As etapas nesta seção usam os seguintes prefixos:

  • [A] : A etapa se aplica a todos os nós.
  • [1] : A etapa se aplica apenas ao nó 1.
  • [2] : A etapa se aplica ao nó 2 do cluster do Pacemaker apenas.
  1. [A] Configurar o layout de disco: discos sem formatação: Gerenciamento de volumes lógicos (LVM) .

    É recomendável que você use o LVM para volumes que armazenam dados e arquivos de log. O exemplo a seguir considera que as VMs tem quatro discos de dados anexados que são usados para criar dois volumes.

    Listar todos os discos disponíveis:

    ls /dev/disk/azure/scsi1/lun*
    

    Exemplo de saída:

    /dev/disk/azure/scsi1/lun0  /dev/disk/azure/scsi1/lun1  /dev/disk/azure/scsi1/lun2  /dev/disk/azure/scsi1/lun3
    

    Crie volumes físicos para todos os discos que você deseja usar:

    sudo pvcreate /dev/disk/azure/scsi1/lun0
    sudo pvcreate /dev/disk/azure/scsi1/lun1
    sudo pvcreate /dev/disk/azure/scsi1/lun2
    sudo pvcreate /dev/disk/azure/scsi1/lun3
    

    Crie um grupo de volumes para os arquivos de dados. Use um grupo de volumes para os arquivos de log e outro para o diretório compartilhado do SAP HANA:

    sudo vgcreate vg_hana_data_HN1 /dev/disk/azure/scsi1/lun0 /dev/disk/azure/scsi1/lun1
    sudo vgcreate vg_hana_log_HN1 /dev/disk/azure/scsi1/lun2
    sudo vgcreate vg_hana_shared_HN1 /dev/disk/azure/scsi1/lun3
    

    Criar os volumes lógicos. Um volume linear é criado quando você usa lvcreate sem a opção -i. Sugerimos que você crie um volume distribuído para melhorar o desempenho de E/S. Alinhe os tamanhos das distribuições aos valores documentados nas configurações de armazenamento de VM do SAP HANA. O argumento -i deve ser o número de volumes físicos subjacentes e o argumento -I é o tamanho da faixa.

    Neste documento, dois volumes físicos são usados para o volume de dados, portanto, o argumento da chave -i é definido com 2. O tamanho da distribuição para o volume de dados é de 256KiB. Um volume físico é usado para o volume do log, portanto, nenhuma opção -i ou -I é usada explicitamente para os comandos do volume do log.

    Importante

    Use a opção -i e defina-a para o número do volume físico subjacente quando você usar mais de um volume físico para cada volume de dados, log ou compartilhado. Use a opção -I para especificar o tamanho da distribuição na criação de um volume distribuído. Veja Configurações de armazenamento de VM do SAP HANA para ver as configurações de armazenamento recomendadas, incluindo tamanhos de distribuição e número de discos. Os exemplos de layout a seguir não atendem necessariamente às diretrizes de desempenho de um determinado tamanho do sistema. Eles servem apenas para ilustração.

    sudo lvcreate -i 2 -I 256 -l 100%FREE -n hana_data vg_hana_data_HN1
    sudo lvcreate -l 100%FREE -n hana_log vg_hana_log_HN1
    sudo lvcreate -l 100%FREE -n hana_shared vg_hana_shared_HN1
    sudo mkfs.xfs /dev/vg_hana_data_HN1/hana_data
    sudo mkfs.xfs /dev/vg_hana_log_HN1/hana_log
    sudo mkfs.xfs /dev/vg_hana_shared_HN1/hana_shared
    

    Não monte os diretórios emitindo comandos de montagem. Em vez disso, insira as configurações no fstab e emita uma final mount -a para validar a sintaxe. Comece criando os diretórios de montagem para cada volume:

    sudo mkdir -p /hana/data
    sudo mkdir -p /hana/log
    sudo mkdir -p /hana/shared
    

    Em seguida, crie entradas de fstab para os três volumes lógicos inserindo as seguintes linhas no arquivo /etc/fstab:

    /dev/mapper/vg_hana_data_HN1-hana_data /hana/data xfs defaults,nofail 0 2 /dev/mapper/vg_hana_log_HN1-hana_log /hana/log xfs defaults,nofail 0 2 /dev/mapper/vg_hana_shared_HN1-hana_shared /hana/shared xfs defaults,nofail 0 2

    Por fim, monte os novos volumes de uma só vez:

    sudo mount -a
    
  2. [A] Configure a resolução do nome do host de todos os hosts.

    Você pode usar um servidor DNS ou modificar o arquivo /etc/hosts em todos os nós criando entradas para todos os nós como este em /etc/hosts:

    10.0.0.5 hn1-db-0 10.0.0.6 hn1-db-1

  3. [A] Execute o RHEL para configuração do HANA.

    Configure o RHEL conforme descrito nas seguintes notas:

  4. [A] Instalar o SAP HANA.

    Para instalar a Replicação do Sistema do SAP HANA, consulte Automatizar a replicação de sistema de expansão do SAP HANA usando o complemento de alta disponibilidade do RHEL.

    Execute o hdblcm programa a partir do DVD do HANA. Insira os valores a seguir no prompt:

    1. Escolha instalação: Insira 1.
    2. Selecione os componentes adicionais para instalação: Insira 1.
    3. Insira o Caminho de instalação [/hana/shared]: selecionar ENTER.
    4. Insira o Nome do host local [..]: selecione ENTER.
    5. Você deseja adicionar outros hosts ao sistema? (S/N) [n]: Selecione Enter.
    6. Insira a ID do sistema do SAP HANA: insira o SID do HANA, por exemplo: HN1.
    7. Insira o Número da instância [00]: insira o número da instância do HANA. Insira 03 se você usou o modelo do Azure ou seguiu a seção de implantação manual deste artigo.
    8. Selecione modo de banco de dados/insira o índice [1]: selecione Enter.
    9. Selecione Uso do sistema / Inserir índice [4]: selecione o valor de uso do sistema.
    10. Insira o Local dos volumes de dados [/hana/data]: selecione ENTER.
    11. Insira o Local dos volumes de log [/hana/log]: selecione ENTER.
    12. Restringir a alocação máxima de memória? [n]: Selecione Enter.
    13. Insira o Nome do host do certificado para o host '...' [...]: selecione ENTER.
    14. Insira a Senha de usuário de agente de host SAP (sapadm): insira a senha de usuário de agente de host.
    15. Confirme a Senha de usuário de agente do host SAP (sapadm): insira a senha de usuário de agente do host novamente para confirmar.
    16. Insira a Senha do administrador do sistema (hdbadm): insira a senha do administrador do sistema.
    17. Confirme a Senha do administrador do sistema (hdbadm): insira a senha do administrador do sistema novamente para confirmar.
    18. Insira o Diretório base do administrador do sistema [/usr/sap/HN1/home]: selecione ENTER.
    19. Insira o Shell de logon do administrador do sistema [/bin/sh]: selecione ENTER.
    20. Insira a ID de usuário do administrador do sistema [1001]: selecione ENTER.
    21. Insira o ID do grupo de usuários (sapsys) [79]: selecione ENTER.
    22. Insira a Senha de usuário do banco de dados (SISTEMA): insira a senha do usuário do banco de dados.
    23. Confirme a Senha do usuário do banco de dados (SISTEMA): insira a senha do usuário do banco de dados novamente para confirmar.
    24. Reiniciar o sistema após a reinicialização do computador? [n]: Selecione Enter.
    25. Deseja continuar? (S/N): Valide o resumo. Insira y para continuar.
  5. [A] Atualize o Agente de Host do SAP.

    Baixe o último arquivo do Agente de Host do SAP no Centro de Software do SAP e execute o comando a seguir para atualizar o agente. Substitua o caminho do arquivo para apontar para o arquivo que você baixou:

    sudo /usr/sap/hostctrl/exe/saphostexec -upgrade -archive <path to SAP Host Agent>;
    
  6. [A] Configurar o firewall.

    Crie a regra de firewall para a porta de investigação do Azure Load Balancer.

    sudo firewall-cmd --zone=public --add-port=62503/tcp
    sudo firewall-cmd --zone=public --add-port=62503/tcp --permanent
    

Configurar a replicação do Sistema SAP HANA 2.0

As etapas nesta seção usam os seguintes prefixos:

  • [A] : A etapa se aplica a todos os nós.
  • [1] : A etapa se aplica apenas ao nó 1.
  • [2] : A etapa se aplica ao nó 2 do cluster do Pacemaker apenas.
  1. [A] Configurar o firewall.

    Crie regras de firewall para permitir a replicação do sistema HANA e o tráfego do cliente. As portas necessárias estão listadas em Portas TCP / IP de todos os produtos SAP. Os comandos a seguir são apenas um exemplo para permitir o tráfego de replicação de sistema do HANA 2.0 e do cliente para o banco de dados SYSTEMDB, HN1 e NW1.

     sudo firewall-cmd --zone=public --add-port={40302,40301,40307,40303,40340,30340,30341,30342}/tcp --permanent
     sudo firewall-cmd --zone=public --add-port={40302,40301,40307,40303,40340,30340,30341,30342}/tcp
    
    
  2. [1] Crie o banco de dados de locatário.

    Se você estiver usando o SAP HANA 2.0 ou o MDC, crie um banco de dados de locatário para o sistema SAP NetWeaver. Substitua NW1 pelo SID do sistema SAP.

    Execute o seguinte comando como <hanasid>adm:

    hdbsql -u SYSTEM -p "[passwd]" -i 03 -d SYSTEMDB 'CREATE DATABASE NW1 SYSTEM USER PASSWORD "<passwd>"'
    
  3. [1] Configurar a replicação de sistema no primeiro nó.

    Faça backup dos bancos de dados como <hanasid>adm:

    hdbsql -d SYSTEMDB -u SYSTEM -p "<passwd>" -i 03 "BACKUP DATA USING FILE ('initialbackupSYS')"
    hdbsql -d HN1 -u SYSTEM -p "<passwd>" -i 03 "BACKUP DATA USING FILE ('initialbackupHN1')"
    hdbsql -d NW1 -u SYSTEM -p "<passwd>" -i 03 "BACKUP DATA USING FILE ('initialbackupNW1')"
    

    Copie os arquivos PKI do sistema para o site secundário:

    scp /usr/sap/HN1/SYS/global/security/rsecssfs/data/SSFS_HN1.DAT   hn1-db-1:/usr/sap/HN1/SYS/global/security/rsecssfs/data/
    scp /usr/sap/HN1/SYS/global/security/rsecssfs/key/SSFS_HN1.KEY  hn1-db-1:/usr/sap/HN1/SYS/global/security/rsecssfs/key/
    

    Crie o site primário:

    hdbnsutil -sr_enable --name=SITE1
    
  4. [2] Configurar a replicação de sistema no segundo nó.

    Registre o segundo nó para iniciar a replicação de sistema. Execute o seguinte comando como <hanasid>adm:

    sapcontrol -nr 03 -function StopWait 600 10
    hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=03 --replicationMode=sync --name=SITE2
    
  5. [1] Verificar status de replicação.

    Verifique o status de replicação e aguarde até que todos os bancos de dados estão em sincronizado. Se o status permanece desconhecido, verifique suas configurações de firewall.

    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    # | Database | Host     | Port  | Service Name | Volume ID | Site ID | Site Name | Secondary | Secondary | Secondary | Secondary | Secondary     | Replication | Replication | Replication    |
    # |          |          |       |              |           |         |           | Host      | Port      | Site ID   | Site Name | Active Status | Mode        | Status      | Status Details |
    # | -------- | -------- | ----- | ------------ | --------- | ------- | --------- | --------- | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- |
    # | SYSTEMDB | hn1-db-0 | 30301 | nameserver   |         1 |       1 | SITE1     | hn1-db-1  |     30301 |         2 | SITE2     | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hn1-db-0 | 30307 | xsengine     |         2 |       1 | SITE1     | hn1-db-1  |     30307 |         2 | SITE2     | YES           | SYNC        | ACTIVE      |                |
    # | NW1      | hn1-db-0 | 30340 | indexserver  |         2 |       1 | SITE1     | hn1-db-1  |     30340 |         2 | SITE2     | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hn1-db-0 | 30303 | indexserver  |         3 |       1 | SITE1     | hn1-db-1  |     30303 |         2 | SITE2     | YES           | SYNC        | ACTIVE      |                |
    #
    # status system replication site "2": ACTIVE
    # overall system replication status: ACTIVE
    #
    # Local System Replication State
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #
    # mode: PRIMARY
    # site id: 1
    # site name: SITE1
    

Configurar a replicação do Sistema SAP HANA 1.0

As etapas nesta seção usam os seguintes prefixos:

  • [A] : A etapa se aplica a todos os nós.
  • [1] : A etapa se aplica apenas ao nó 1.
  • [2] : A etapa se aplica ao nó 2 do cluster do Pacemaker apenas.
  1. [A] Configurar o firewall.

    Crie regras de firewall para permitir a replicação do sistema HANA e o tráfego do cliente. As portas necessárias estão listadas em Portas TCP / IP de todos os produtos SAP. Os comandos a seguir são apenas um exemplo para permitir a replicação de sistema do HANA 2.0. Adaptá-lo à sua instalação do SAP HANA 1.0.

    sudo firewall-cmd --zone=public --add-port=40302/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=40302/tcp
    
  2. [1] Crie os usuários necessários.

    Execute o comando a seguir como raiz. Substitua os valores da ID do Sistema HANA (por exemplo, HN1), número da instância (03) e todos os nomes de usuário, pelos valores da instalação do SAP HANA:

    PATH="$PATH:/usr/sap/HN1/HDB03/exe"
    hdbsql -u system -i 03 'CREATE USER hdbhasync PASSWORD "passwd"'
    hdbsql -u system -i 03 'GRANT DATA ADMIN TO hdbhasync'
    hdbsql -u system -i 03 'ALTER USER hdbhasync DISABLE PASSWORD LIFETIME'
    
  3. [A] Crie a entrada do repositório de chaves.

    Execute o comando a seguir para criar uma nova entrada de repositório de chaves:

    PATH="$PATH:/usr/sap/HN1/HDB03/exe"
    hdbuserstore SET hdbhaloc localhost:30315 hdbhasync passwd
    
  4. [1] Faça backup do banco de dados.

    Faça backup dos bancos de dados como raiz:

    PATH="$PATH:/usr/sap/HN1/HDB03/exe"
    hdbsql -d SYSTEMDB -u system -i 03 "BACKUP DATA USING FILE ('initialbackup')"
    

    Se você usar uma instalação de multilocatário, faça também backup do banco de dados do locatário:

    hdbsql -d HN1 -u system -i 03 "BACKUP DATA USING FILE ('initialbackup')"
    
  5. [1] Configurar a replicação de sistema no primeiro nó.

    Crie o site primário como <hanasid>adm:

    su - hdbadm
    hdbnsutil -sr_enable –-name=SITE1
    
  6. [2] Configurar a replicação de sistema no nó secundário.

    Registre o site secundário como <hanasid>adm:

    HDB stop
    hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=03 --replicationMode=sync --name=SITE2
    HDB start
    

Criar um cluster do Pacemaker

Siga as etapas em Configurando o Pacemaker no Red Hat Enterprise Linux no Azure para criar um cluster básico do Pacemaker para esse servidor HANA.

Importante

Com o Estrutura de inicialização do SAP baseado em sistema, as instâncias do SAP HANA agora podem ser gerenciadas pelo systemd. A versão mínima necessária do Red Hat Enterprise Linux (RHEL) é RHEL 8 para SAP. Conforme descrito na Nota do SAP 3189534, todas as novas instalações da revisão 70 ou superior do SAP HANA SPS07 ou atualizações para sistemas HANA para a revisão 70 ou superior do HANA 2.0 SPS07, a estrutura de inicialização do SAP será registrada automaticamente com o sistema.

Ao usar soluções de HA para gerenciar a replicação do sistema SAP HANA combinadas com instâncias do SAP HANA habilitadas para sistema (consulte a Nota do SAP 3189534), etapas adicionais são necessárias para garantir que o cluster de HA possa gerenciar a instância do SAP sem interferência do systemd. Portanto, para o sistema SAP HANA integrado ao sistema, etapas adicionais descritas no KBA 7029705 do Red Hat devem ser seguidas em todos os nós de cluster.

Implementar o gancho SAPHanaSR de replicação do sistema Python

Essa importante etapa otimiza a integração com o cluster e melhora a detecção quando um failover de cluster é necessário. É altamente recomendável configurar o gancho Python do SAPHanaSR.

  1. [A] Instale os agentes de recursos do SAP HANA em todos os nós. Certifique-se de habilitar um repositório que contém o pacote. Você não precisa habilitar mais repositórios se estiver usando uma imagem habilitada para HA RHEL 8.x.

    # Enable repository that contains SAP HANA resource agents
    sudo subscription-manager repos --enable="rhel-sap-hana-for-rhel-7-server-rpms"
    
    sudo yum install -y resource-agents-sap-hana
    
  2. [A] Instalar o HANA system replication hook. O gancho precisa ser instalado em ambos os nós do banco de dados HANA.

    Dica

    O gancho do Python só pode ser implementado para HANA 2.0.

    1. Prepare o gancho como root.

       mkdir -p /hana/shared/myHooks
       cp /usr/share/SAPHanaSR/srHook/SAPHanaSR.py /hana/shared/myHooks
       chown -R hn1adm:sapsys /hana/shared/myHooks
      
    2. Pare o HANA em ambos os nós. Executar como <sid>adm.

      sapcontrol -nr 03 -function StopSystem
      
    3. Ajuste global.ini em cada nó de cluster.

      [ha_dr_provider_SAPHanaSR]
      provider = SAPHanaSR
      path = /hana/shared/myHooks
      execution_order = 1
      
      [trace]
      ha_dr_saphanasr = info
      
  3. [A] O cluster exige a configuração de sudoers em cada nó de cluster para <sid>adm. Neste exemplo, isso é obtido com a criação de um novo arquivo. Use o comando visudo para editar o arquivo suspenso 20-saphana como root.

    sudo visudo -f /etc/sudoers.d/20-saphana
    

    Insira as seguintes linhas e salve:

    Cmnd_Alias SITE1_SOK   = /usr/sbin/crm_attribute -n hana_hn1_site_srHook_SITE1 -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SITE1_SFAIL = /usr/sbin/crm_attribute -n hana_hn1_site_srHook_SITE1 -v SFAIL -t crm_config -s SAPHanaSR
    Cmnd_Alias SITE2_SOK   = /usr/sbin/crm_attribute -n hana_hn1_site_srHook_SITE2 -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SITE2_SFAIL = /usr/sbin/crm_attribute -n hana_hn1_site_srHook_SITE2 -v SFAIL -t crm_config -s SAPHanaSR
    hn1adm ALL=(ALL) NOPASSWD: SITE1_SOK, SITE1_SFAIL, SITE2_SOK, SITE2_SFAIL
    Defaults!SITE1_SOK, SITE1_SFAIL, SITE2_SOK, SITE2_SFAIL !requiretty
    
  4. [A] Iniciar o SAP HANA em ambos os nós. Executar como <sid>adm.

    sapcontrol -nr 03 -function StartSystem 
    
  5. [1] Verifique a instalação do gancho. Executar como <sid>adm no site de replicação do sistema do HANA ativo.

     cdtrace
     awk '/ha_dr_SAPHanaSR.*crm_attribute/ \
     { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_*
    
     # 2021-04-12 21:36:16.911343 ha_dr_SAPHanaSR SFAIL
     # 2021-04-12 21:36:29.147808 ha_dr_SAPHanaSR SFAIL
     # 2021-04-12 21:37:04.898680 ha_dr_SAPHanaSR SOK
    

Para obter mais informações sobre a implementação do gancho de replicação do sistema SAP HANA, confira Habilitar o gancho do provedor de HA/DR do SAP.

Crie os recursos de cluster do SAP HANA

Crie a topologia do HANA. Execute os seguintes comandos em um dos nós de cluster do Pacemaker. Ao longo dessas instruções, substitua o número da instância, a ID do sistema HANA, os endereços IP e os nomes do sistema, quando apropriado.

sudo pcs property set maintenance-mode=true

sudo pcs resource create SAPHanaTopology_HN1_03 SAPHanaTopology SID=HN1 InstanceNumber=03 \
op start timeout=600 op stop timeout=300 op monitor interval=10 timeout=600 \
clone clone-max=2 clone-node-max=1 interleave=true

Em seguida, crie os recursos HANA.

Observação

Este artigo contém referências a um termo que a Microsoft não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

Se você estiver criando um cluster no RHEL 7.x, use os seguintes comandos:

sudo pcs resource create SAPHana_HN1_03 SAPHana SID=HN1 InstanceNumber=03 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=false \
  op start timeout=3600 op stop timeout=3600 \
  op monitor interval=61 role="Slave" timeout=700 \
  op monitor interval=59 role="Master" timeout=700 \
  op promote timeout=3600 op demote timeout=3600 \
  master notify=true clone-max=2 clone-node-max=1 interleave=true

sudo pcs resource create vip_HN1_03 IPaddr2 ip="10.0.0.13"
sudo pcs resource create nc_HN1_03 azure-lb port=62503
sudo pcs resource group add g_ip_HN1_03 nc_HN1_03 vip_HN1_03

sudo pcs constraint order SAPHanaTopology_HN1_03-clone then SAPHana_HN1_03-master symmetrical=false
sudo pcs constraint colocation add g_ip_HN1_03 with master SAPHana_HN1_03-master 4000

sudo pcs resource defaults resource-stickiness=1000
sudo pcs resource defaults migration-threshold=5000

sudo pcs property set maintenance-mode=false

Se você estiver criando um cluster no RHEL 8.x/9.x, use os seguintes comandos:

sudo pcs resource create SAPHana_HN1_03 SAPHana SID=HN1 InstanceNumber=03 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=false \
  op start timeout=3600 op stop timeout=3600 \
  op monitor interval=61 role="Slave" timeout=700 \
  op monitor interval=59 role="Master" timeout=700 \
  op promote timeout=3600 op demote timeout=3600 \
  promotable notify=true clone-max=2 clone-node-max=1 interleave=true

sudo pcs resource create vip_HN1_03 IPaddr2 ip="10.0.0.13"
sudo pcs resource create nc_HN1_03 azure-lb port=62503
sudo pcs resource group add g_ip_HN1_03 nc_HN1_03 vip_HN1_03

sudo pcs constraint order SAPHanaTopology_HN1_03-clone then SAPHana_HN1_03-clone symmetrical=false
sudo pcs constraint colocation add g_ip_HN1_03 with master SAPHana_HN1_03-clone 4000

sudo pcs resource defaults update resource-stickiness=1000
sudo pcs resource defaults update migration-threshold=5000

sudo pcs property set maintenance-mode=false

Para configurar priority-fencing-delay para o SAP HANA (aplicável somente a partir do pacemaker-2.0.4-6.el8 ou superior), os comandos a seguir precisam ser executados.

Observação

Se você tiver um cluster de dois nós, é possível configurar a propriedade do clusterpriority-fencing-delay. Essa propriedade introduz um atraso no isolamento de um nó que tem uma prioridade total de recursos mais alta quando ocorre um cenário de split-brain. Para obter mais informações, confira O Pacemaker pode isolar o nó de cluster com o menor número de recursos em execução?.

A propriedade priority-fencing-delay é aplicável para a versão pacemaker-2.0.4-6.el8 ou superior. Se você estiver configurando priority-fencing-delay em um cluster existente, remova a definição da opção pcmk_delay_max no dispositivo de isolamento.

sudo pcs property set maintenance-mode=true

sudo pcs resource defaults update priority=1
sudo pcs resource update SAPHana_HN1_03-clone meta priority=10

sudo pcs property set priority-fencing-delay=15s

sudo pcs property set maintenance-mode=false

Importante

É uma boa ideia definir AUTOMATED_REGISTER como false, enquanto você está executando testes de failover, para impedir que uma instância primária com falha seja registrada automaticamente como secundária. Após o teste, como uma melhor prática, defina AUTOMATED_REGISTER como true para que após a tomada de controle, a replicação do sistema possa ser retomada automaticamente.

Verifique se o status do cluster está certo e se todos os recursos foram iniciados. Não é importante saber em qual nó os recursos estão sendo executados.

Observação

Os tempos limite na configuração anterior são exemplos apenas e podem ser adaptados à configuração específica do HANA. Por exemplo, talvez seja necessário aumentar o tempo limite de início, se o banco de dados do SAP HANA demorar mais para iniciar.

Use o comando sudo pcs status para verificar o estado dos recursos de cluster criados:

# Online: [ hn1-db-0 hn1-db-1 ]
#
# Full list of resources:
#
# azure_fence     (stonith:fence_azure_arm):      Started hn1-db-0
#  Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
#      Started: [ hn1-db-0 hn1-db-1 ]
#  Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
#      Masters: [ hn1-db-0 ]
#      Slaves: [ hn1-db-1 ]
#  Resource Group: g_ip_HN1_03
#      nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-0
#      vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-0

Configurar a replicação de sistema ativa/habilitada para leitura do HANA no cluster do Pacemaker

Começando com o SAP HANA 2.0 SPS 01, o SAP permite a configuração ativa/habilitada para leitura da replicação de sistema do SAP HANA, em que os sistemas secundários de replicação de sistema do SAP HANA podem ser usados ativamente para cargas de trabalho com uso intensivo de leitura.

Para dar suporte esse tipo de configuração em um cluster, é necessário ter um segundo endereço IP virtual. Isso permite que os clientes acessem o banco de dados secundário do SAP HANA habilitado para leitura. Para garantir que o site de replicação secundária ainda possa ser acessado após uma tomada de controle, o cluster precisa mover o endereço IP virtual com o recurso SAPHana secundário.

Esta seção descreve as outras etapas necessárias para gerenciar a replicação de sistema ativa/habilitada para leitura do HANA em um cluster de HA do Red Hat com um segundo IP virtual.

Antes de continuar, verifique se você configurou totalmente o cluster de HA do Red Hat que gerencia um banco de dados SAP HANA, conforme descrito nos segmentos anteriores da documentação.

Diagrama que mostra SAP HANA HA com secundário habilitado para leitura.

Configuração adicional no Azure Load Balancer para configuração ativa/habilitada para leitura

Para continuar com mais etapas sobre o provisionamento de um segundo IP virtual, verifique se você configurou o Azure Load Balancer conforme descrito na seção Implantar VMs do Linux manualmente por meio do portal do Azure.

  1. Para o balanceador de carga padrão, siga estas etapas no mesmo balanceador de carga que você criou em uma seção anterior.

    a. Crie um segundo pool de IPs de front-end:

    • Abra o balanceador de carga, selecione pool de front-end e selecione Adicionar.
    • Insira o nome do segundo pool de IPs de front-end (por exemplo, hana-secondaryIP).
    • Defina a Atribuição como Estática e insira o endereço IP (por exemplo, 10.0.0.14).
    • Selecione OK.
    • Depois que o novo pool de IP de front-end for criado, anote o endereço IP do pool.

    b. Crie uma investigação de integridade:

    • Abra o balanceador de carga, selecione investigações de integridade e selecione Adicionar.
    • Insira o nome da nova investigação de integridade (por exemplo, hana-secondaryhp).
    • Selecione TCP como o protocolo e a porta 62603. Mantenha o valor do Intervalo definido como 5 e o valor Limite não íntegro definido como 2.
    • Selecione OK.

    c. Crie as regras de balanceamento de carga:

    • Abra o balanceador de carga, selecione Regras de balanceamento de carga e selecione Adicionar.
    • Insira o nome da nova regra do balanceador de carga (por exemplo hana-secondarylb).
    • Selecione o endereço IP de front-end, o pool de back-end e a investigação de integridade que você criou anteriormente (por exemplo, hana-secondaryIP, hana-backend e hana-secondaryhp).
    • Selecione Portas de HA.
    • Certifique-se de habilitar IP Flutuante.
    • Selecione OK.

Configurar a replicação de sistema ativa/habilitada para leitura do HANA

As etapas para configurar a replicação do sistema HANA são descritas na seção Configurar a replicação do sistema SAP HANA 2.0. Se você estiver implantando um cenário secundário habilitado para leitura durante a configuração da replicação do sistema no segundo nó, execute o seguinte comando como hanasidadm:

sapcontrol -nr 03 -function StopWait 600 10 

hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=03 --replicationMode=sync --name=SITE2 --operationMode=logreplay_readaccess 

Adicionar um recurso de endereço IP virtual secundário para uma configuração ativa/habilitada para leitura

O segundo IP virtual e a restrição de colocação apropriada podem ser configurados com os seguintes comandos:

pcs property set maintenance-mode=true

pcs resource create secvip_HN1_03 ocf:heartbeat:IPaddr2 ip="10.40.0.16"

pcs resource create secnc_HN1_03 ocf:heartbeat:azure-lb port=62603

pcs resource group add g_secip_HN1_03 secnc_HN1_03 secvip_HN1_03

pcs constraint location g_secip_HN1_03 rule score=INFINITY hana_hn1_sync_state eq SOK and hana_hn1_roles eq 4:S:master1:master:worker:master

pcs constraint location g_secip_HN1_03 rule score=4000 hana_hn1_sync_state eq PRIM and hana_hn1_roles eq 4:P:master1:master:worker:master

pcs property set maintenance-mode=false

Verifique se o status do cluster está certo e se todos os recursos foram iniciados. O segundo IP virtual é executado no site secundário com o recurso secundário do SAPHana.

sudo pcs status

# Online: [ hn1-db-0 hn1-db-1 ]
#
# Full List of Resources:
#   rsc_hdb_azr_agt     (stonith:fence_azure_arm):      Started hn1-db-0
#   Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]:
#     Started: [ hn1-db-0 hn1-db-1 ]
#   Clone Set: SAPHana_HN1_03-clone [SAPHana_HN1_03] (promotable):
#     Masters: [ hn1-db-0 ]
#     Slaves: [ hn1-db-1 ]
#   Resource Group: g_ip_HN1_03:
#     nc_HN1_03         (ocf::heartbeat:azure-lb):      Started hn1-db-0
#     vip_HN1_03        (ocf::heartbeat:IPaddr2):       Started hn1-db-0
#   Resource Group: g_secip_HN1_03:
#     secnc_HN1_03      (ocf::heartbeat:azure-lb):      Started hn1-db-1
#     secvip_HN1_03     (ocf::heartbeat:IPaddr2):       Started hn1-db-1

Na próxima seção, você pode encontrar o conjunto típico de testes de failover para executar.

Cuidado com o comportamento do segundo IP virtual ao testar um cluster HANA configurado com um secundário habilitado para leitura:

  1. Ao migrar o recurso de cluster SAPHana_HN1_03 para o site secundário hn1-db-1, o segundo IP virtual continua sendo executado no mesmo site hn1-db-1. Se você tiver definido AUTOMATED_REGISTER="true" para o recurso e a replicação de sistema HANA for registrada automaticamente no hn1-db-0, seu segundo IP virtual também passará para hn1-db-0.

  2. Ao testar uma falha do servidor, os recursos do segundo IP virtual (secvip_HN1_03) e o recurso de porta do Azure Load Balancer (secnc_HN1_03) executam no servidor primário com os recursos de IP virtual primários. Portanto, até que o servidor secundário esteja inativo, os aplicativos que estão conectados ao banco de dados HANA habilitado para leitura estão conectados ao banco de dados HANA primário. O comportamento é esperado porque você não deseja que os aplicativos conectados ao banco de dados HANA habilitado para leitura fiquem inacessíveis até que o servidor secundário não esteja disponível.

  3. Durante o failover e fallback do segundo endereço IP virtual, as conexões existentes em aplicativos que usam o segundo IP virtual para se conectar ao banco de dados HANA podem ser interrompidas.

A configuração maximiza o tempo em que o segundo recurso de IP virtual é atribuído a um nó em que uma instância SAP HANA íntegra está em execução.

Testar a configuração do cluster

Esta seção descreve como é possível testar a configuração. Antes de iniciar um teste, verifique se o Pacemaker não possui nenhuma ação com falha (via status de pcs), não há restrições de local inesperadas (por exemplo, sobras de um teste de migração) e que o HANA é o estado de sincronização, por exemplo com systemReplicationStatus.

sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"

Testar a migração

Estado do recurso antes de iniciar o teste:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-0 ]
    Slaves: [ hn1-db-1 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-0
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-0

É possível migrar o nó mestre do SAP HANA executando o comando a seguir como raiz:

# On RHEL 7.x
pcs resource move SAPHana_HN1_03-master
# On RHEL 8.x
pcs resource move SAPHana_HN1_03-clone --master

O cluster migraria o nó mestre SAP HANA e o grupo que contém o endereço IP virtual para hn1-db-1.

Depois que a migração for concluída, a saída sudo pcs status terá a seguinte semelhança:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-1 ]
    Stopped: [ hn1-db-0 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-1
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-1

Com AUTOMATED_REGISTER="false", o cluster não reiniciaria o banco de dados HANA com falha nem o registraria no novo primário emhn1-db-0. Nesse caso, configure a instância do HANA como secundária executando esses comandos, como hn1adm:

sapcontrol -nr 03 -function StopWait 600 10
hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=03 --replicationMode=sync --name=SITE1

A migração cria restrições de local que precisam ser excluídas novamente. Execute o comando a seguir como raiz ou via sudo:

pcs resource clear SAPHana_HN1_03-master

Monitore o estado do recurso do HANA usando pcs status. Depois que o HANA é inicializado em hn1-db-0, a saída deve ser semelhante a:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-1 ]
    Slaves: [ hn1-db-0 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-1
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-1

Bloquear comunicação de rede

Estado do recurso antes de iniciar o teste:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-1 ]
    Slaves: [ hn1-db-0 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-1
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-1

Execute a regra de firewall para bloquear a comunicação em um dos nós.

# Execute iptable rule on hn1-db-1 (10.0.0.6) to block the incoming and outgoing traffic to hn1-db-0 (10.0.0.5)
iptables -A INPUT -s 10.0.0.5 -j DROP; iptables -A OUTPUT -d 10.0.0.5 -j DROP

Quando nós de cluster não podem se comunicar entre si, há o risco de obter um cenário de split-brain. Nessas situações, nós de cluster tentam se isolar simultaneamente, resultando em uma disputa por limites. Para evitar tal situação, recomendamos que definir a propriedade priority-fencing-delay na configuração do cluster (aplicável somente para pacemaker-2.0.4-6.el8 ou superior).

Ao habilitar a propriedade priority-fencing-delay, o cluster insere um atraso na ação de isolamento especificamente no nó que hospeda o recurso mestre do HANA, permitindo que o nó ganhe a disputa por limites.

Execute o seguinte comando para excluir a regra de firewall:

# If the iptables rule set on the server gets reset after a reboot, the rules will be cleared out. In case they have not been reset, please proceed to remove the iptables rule using the following command.
iptables -D INPUT -s 10.0.0.5 -j DROP; iptables -D OUTPUT -d 10.0.0.5 -j DROP

Testar o agente de isolamento do Azure

Observação

Este artigo contém referências a um termo que a Microsoft não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

Estado do recurso antes de iniciar o teste:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-1 ]
    Slaves: [ hn1-db-0 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-1
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-1

Você pode testar a configuração do agente de fence do Azure desativando a interface de rede no nó em que o SAP HANA está sendo executado como mestre. Para obter uma descrição sobre como simular uma falha de rede, confira o Artigo 79523 da base de dados de conhecimento do Red Hat.

Neste exemplo, usamos o script net_breaker para bloquear todo o acesso à rede:

sh ./net_breaker.sh BreakCommCmd 10.0.0.6

A VM agora deverá reiniciar ou parar, dependendo da configuração do cluster. Se você definir a configuração stonith-action como off, a VM será interrompida e os recursos serão migrados para a VM em execução.

Após iniciar a VM novamente, o recurso SAP HANA não será iniciado como secundário se você definir AUTOMATED_REGISTER="false". Nesse caso, configure a instância do HANA como secundária executando este comando como o usuário hn1adm:

sapcontrol -nr 03 -function StopWait 600 10
hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=03 --replicationMode=sync --name=SITE2

Retorne para a raiz e limpe o estado com falha:

# On RHEL 7.x
pcs resource cleanup SAPHana_HN1_03-master
# On RHEL 8.x
pcs resource cleanup SAPHana_HN1_03 node=<hostname on which the resource needs to be cleaned>

Estado do recurso após o teste:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-0 ]
    Slaves: [ hn1-db-1 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-0
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-0

Testar um failover manual

Estado do recurso antes de iniciar o teste:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-0 ]
    Slaves: [ hn1-db-1 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-0
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-0

Você pode testar um failover manual interrompendo o cluster no nó hn1-db-0, como raiz:

pcs cluster stop

Após o failover, você pode iniciar o cluster novamente. Se você definir AUTOMATED_REGISTER="false", o recurso do SAP HANA no nó hn1-db-0 não será iniciado como secundário. Nesse caso, configure a instância do HANA como secundária executando este comando como raiz:

pcs cluster start

Execute o seguinte como hn1adm:

sapcontrol -nr 03 -function StopWait 600 10
hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=03 --replicationMode=sync --name=SITE1

Em seguida, como raiz:

# On RHEL 7.x
pcs resource cleanup SAPHana_HN1_03-master
# On RHEL 8.x
pcs resource cleanup SAPHana_HN1_03 node=<hostname on which the resource needs to be cleaned>

Estado do recurso após o teste:

Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hn1-db-0 hn1-db-1 ]
Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hn1-db-1 ]
     Slaves: [ hn1-db-0 ]
Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hn1-db-1
    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hn1-db-1

Próximas etapas