Implantar um sistema de expansão SAP HANA com o nó em espera em VMs do Azure usando Azure NetApp Files no SUSE Linux Enterprise Server

Este artigo descreve como implantar um sistema SAP HANA altamente disponível em uma configuração de expansão com modo de espera em VMs (máquinas virtuais) do Azure usando o Azure NetApp Files para os volumes de armazenamento compartilhado.

Nos exemplos de configurações, comandos de instalação e assim por diante, a instância do HANA é 03 e a ID do sistema HANA é HN1. Os exemplos são baseados no HANA 2.0 SP4 e no SUSE Linux Enterprise Server para SAP 12 SP4.

Antes de começar, consulte as seguintes notas e documentos do SAP:

Visão geral

Um método para obter alta disponibilidade com o HANA é configurando o failover automático do host. Para configurar o failover automático do host, você adiciona uma ou mais máquinas virtuais ao sistema HANA e as configura como nós em espera. Quando o nó ativo falha, um nó em espera assume automaticamente. Na configuração apresentada com as máquinas virtuais do Azure, você consegue failover automático usando NFS no Azure NetApp Files.

Observação

O nó em espera precisa de acesso a todos os volumes de banco de dados. Os volumes HANA devem ser montados como volumes NFSv4. O mecanismo de bloqueio baseado em concessão de arquivo que foi aprimorado no protocolo NFSv4 é usado para isolamento de I/O.

Importante

Para criar a configuração com suporte, você deve implantar os volumes de dados e de log do HANA como volumes NFSv4.1 e montá-los usando o protocolo NFSv4.1. A configuração de failover automático do host HANA com o nó em espera não tem suporte no NFSv3.

SAP NetWeaver High Availability overview

No diagrama anterior, que segue as recomendações de rede SAP HANA, três sub-redes são representadas em uma rede virtual do Azure:

  • Para comunicação com o cliente
  • Para comunicação com o sistema de armazenamento
  • Para comunicação interna entre nós do HANA

Os volumes do Azure NetApp estão em uma sub-rede separada, delegados ao Azure NetApp Files.

Para esta configuração de exemplo, as sub-redes são:

  • client 10.23.0.0/24
  • storage 10.23.2.0/24
  • hana 10.23.3.0/24
  • anf 10.23.1.0/26

Configurar a infraestrutura do Azure NetApp Files

Antes de prosseguir com a configuração da infraestrutura do Azure NetApp Files, familiarize-se com a documentação do Azure NetApp Files.

O Azure NetApp Files está disponível em várias regiões do Azure. Verifique se a região do Azure selecionada oferece o Azure NetApp Files.

Para obter informações sobre a disponibilidade do Azure NetApp Files por região do Azure, consulte Disponibilidade do Azure NetApp Files por região do Azure.

Considerações importantes

Ao criar seus Arquivos NetApp do Azure para SAP NetWeaver na arquitetura de Alta Disponibilidade do SUSE, esteja ciente das considerações importantes documentadas nos volumes NFS v4.1 no Azure NetApp Files for SAP HANA.

Dimensionar o banco de dados do HANA no Azure NetApp Files

A taxa de transferência de um volume do Azure NetApp Files é uma função do tamanho do volume e do nível de serviço, conforme documentado no Nível de serviço para o Azure NetApp Files.

Ao projetar a infraestrutura do SAP HANA no Azure com os Arquivos do Azure NetApp, esteja ciente das recomendações nos volumes NFS v4.1 nos Arquivos do Azure NetApp para SAP HANA.

A configuração neste artigo é apresentada com volumes do Azure NetApp Files simples.

Importante

Para sistemas de produção, em que o desempenho é fundamental, recomendamos avaliar e considerar o uso do grupo de volumes de aplicativos do Azure NetApp Files para SAP HANA.

Implantar recursos do Azure NetApp Files

As instruções a seguir pressupõem que você já tenha implantado a Rede virtual do Azure. Os recursos do Azure NetApp Files e as VMs nas quais os recursos do Azure NetApp Files serão montados precisam ser implantados na mesma rede virtual do Azure ou em redes virtuais do Azure emparelhadas.

  1. Crie uma conta do NetApp na região do Azure selecionada, seguindo as instruções em Criar uma conta do NetApp.

  2. Configure um pool de capacidade do Azure NetApp Files seguindo as instruções em Configurar um pool de capacidade do Azure NetApp Files.

    A arquitetura do HANA apresentada neste artigo usa um único pool de capacidade do Azure NetApp Files no nível Ultrasserviço. Para cargas de trabalho do HANA no Azure, é recomendável usar um nível de serviçoUltra ou Premium do Azure NetApp Files.

  3. Delegue uma sub-rede para o Azure NetApp Files, conforme descrito nas instruções em Delegar uma sub-rede ao Azure NetApp Files.

  4. Implante volumes do Azure NetApp Files seguindo as instruções em Criar um volume NFS para o Azure NetApp Files.

    Enquanto estiver implantando os volumes, certifique-se de selecionar a versão NFSv4.1. Atualmente, o acesso ao NFSv4.1 requer a adição a uma lista de permitidos. Implante os volumes na sub-rede designada do Azure NetApp Files. Os endereços IP dos volumes do Azure NetApp são atribuídos automaticamente.

    Lembre-se de que os recursos do Azure NetApp Files e as VMs do Azure precisam estar na mesma rede virtual do Azure ou em redes virtuais do Azure emparelhadas. Por exemplo, HN1-data-Mnt00001, HN1-log-mnt00001 e assim por diante são os nomes de volumes e nfs://10.23.1.5/HN1-data-mnt00001, nfs://10.23.1.4/HN1-log-mnt00001 e assim por diante são os caminhos de arquivos para os volumes de Azure NetApp Files.

    • volume HN1-data-mnt00001 (nfs://10.23.1.5/HN1-data-mnt00001)
    • volume HN1-data-mnt00002 (nfs://10.23.1.6/HN1-data-mnt00002)
    • volume HN1-log-mnt00001 (nfs://10.23.1.4/HN1-log-mnt00001)
    • volume HN1-log-mnt00002 (nfs://10.23.1.6/HN1-log-mnt00002)
    • volume HN1-shared (nfs://10.23.1.4/HN1-shared)

    Neste exemplo, usamos um volume do Azure NetApp Files separado para cada volume de dados e de log do HANA. Para uma configuração com custo mais otimizado em sistemas menores ou não produtivos, é possível posicionar todas as montagens de dados e de logs em um único volume.

Implantar máquinas virtuais do Linux por meio do portal do Azure

Primeiro, você precisa criar os volumes do Azure NetApp Files. Depois, execute as etapas a seguir:

  1. Crie as Sub-redes da rede virtual do Azure em sua Rede virtual do Azure.

  2. Implante as VMs.

  3. Crie as interfaces de rede adicionais e anexe as interfaces de rede às VMs correspondentes.

    Cada máquina virtual tem três interfaces de rede, que correspondem às três sub-redes da rede virtual do Azure (client, storage e hana).

    Para obter mais informações, consulte Criar uma máquina virtual Linux no Azure com várias placas de interface de rede.

Importante

Para cargas de trabalho do SAP HANA, baixa latência é fundamental. Para alcançar uma latência baixa, trabalhe com seu representante da Microsoft para garantir que as máquinas virtuais e os volumes do Azure NetApp Files foram implantados bem próximos. Quando estiver integrando o novo sistema SAP HANA que está usando o SAP HANA Azure NetApp Files, envie as informações necessárias.

As próximas instruções pressupõem que você já criou o grupo de recursos, a rede virtual do Azure e as três sub-redes da rede virtual do Azure: clientstorage e hana. Ao implantar as VMs, selecione a sub-rede do cliente para que a interface de rede do cliente seja a interface principal nas VMs. Você também precisará configurar uma rota explícita para a sub-rede delegada do Azure NetApp Files por meio do gateway da sub-rede de armazenamento.

Importante

Certifique-se de que o sistema operacional que você selecionar tenha certificação SAP para o SAP HANA nos tipos de VM específicos que você está usando. Para obter uma lista de tipos de VMs certificadas do SAP HANA e das versões de sistemas operacionais para esses tipos, acesse o site de Plataformas de IaaS certificadas do SAP HANA. Clique nos detalhes do tipo de VM listado para obter a lista completa de versões do sistema operacional com suporte do SAP HANA para esse tipo de VM.

  1. Crie um conjunto de disponibilidade para o SAP HANA. Certifique-se de definir o domínio de atualização máximo.

  2. Crie três máquinas virtuais (hanadb1, hanadb2 e hanadb3) executando as seguintes etapas:

    a. Use uma imagem SLES4SAP na galeria do Azure que tem suporte para o SAP HANA.

    b. Selecione o conjunto de disponibilidade criado anteriormente para o SAP HANA.

    c. Selecione a sub-rede da rede virtual cliente do Azure. Selecione Rede Acelerada.

    Quando você implanta as máquinas virtuais, o nome da interface de rede é gerado automaticamente. Nestas instruções, para simplificar, vamos nos referir às interfaces de rede geradas automaticamente, que são anexadas à sub-rede da rede virtual cliente do Azure, como hanadb1-client, hanadb2-client e hanadb3-client.

  3. Crie três interfaces de rede, uma para cada máquina virtual, para a sub-rede storage da rede virtual (neste exemplo, hanadb1-storage, hanadb2-storagee hanadb3-storage).

  4. Crie três adaptadores de rede, uma para cada máquina virtual, para a sub-rede da rede virtual hana (neste exemplo, hanadb1-hana, hanadb2-hana e hanadb3-hana).

  5. Anexe as interfaces da rede virtual recém-criadas às máquinas virtuais correspondentes executando as seguintes etapas:

    1. Acesse a máquina virtual no portal do Azure.
    2. No painel esquerdo, selecione Máquinas Virtuais. Filtre o nome da máquina virtual (por exemplo, hanadb1) e, em seguida, selecione a máquina virtual.
    3. No painel Visão geral, escolha Parar para desalocar a máquina virtual.
    4. Escolha Rede e, em seguida, anexe a interface de rede. Na lista suspensa Anexar interface de rede, selecione as interfaces de rede já criadas para as sub-redes storage e hana.
    5. Selecione Salvar.
    6. Repita as etapas “b” a “e” para as máquinas virtuais restantes (em nosso exemplo, hanadb2 e hanadb3).
    7. Deixe as máquinas virtuais no estado parado por enquanto. Em seguida, vamos habilitar a rede acelerada para todas as interfaces de rede recém-anexadas.
  6. Habilite a rede acelerada para as interfaces de rede adicionais das sub-redes storage e hana seguindo estas etapas:

    1. Abra o Azure Cloud Shell no portal do Azure.

    2. Execute os comandos a seguir para habilitar a rede acelerada para as interfaces de rede adicionais, que estão anexadas às sub-redes storage e hana.

      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb1-storage --accelerated-networking true
       az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb2-storage --accelerated-networking true
       az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb3-storage --accelerated-networking true
      
       az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb1-hana --accelerated-networking true
       az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb2-hana --accelerated-networking true
       az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb3-hana --accelerated-networking true
      
  7. Inicie as máquinas virtuais, executando as seguintes etapas:

    1. No painel esquerdo, selecione Máquinas Virtuais. Filtre o nome da máquina virtual (por exemplo, hanadb1) e, em seguida, selecione-a.
    2. No painel Visão geral, selecione Iniciar.

Configuração e preparação do sistema operacional

As instruções nas próximas seções têm um dos seguintes prefixos:

  • [A] : Aplicável a todos os nós
  • [1] : Aplicável somente ao nó 1
  • [2] : aplicável somente ao nó 2
  • [3] : Aplicável somente ao nó 3

Configure e prepare seu sistema operacional executando as seguintes etapas:

  1. [A] Mantenha os arquivos do host nas máquinas virtuais. Inclua entradas para todas as sub-redes. As entradas a seguir foram adicionadas a /etc/hosts neste exemplo.

    # Storage
     10.23.2.4   hanadb1-storage
     10.23.2.5   hanadb2-storage
     10.23.2.6   hanadb3-storage
     # Client
     10.23.0.5   hanadb1
     10.23.0.6   hanadb2
     10.23.0.7   hanadb3
     # Hana
     10.23.3.4   hanadb1-hana
     10.23.3.5   hanadb2-hana
     10.23.3.6   hanadb3-hana
    
  2. [A] Altere as configurações de DHCP e de nuvem do adaptador de rede para que sejam evitadas alterações de nome de host não intencionais no armazenamento.

    As instruções a seguir pressupõem que a interface de rede do armazenamento é eth1.

    vi /etc/sysconfig/network/dhcp 
    # Change the following DHCP setting to "no"
    DHCLIENT_SET_HOSTNAME="no"
    
    vi /etc/sysconfig/network/ifcfg-eth1
    # Edit ifcfg-eth1 
    #Change CLOUD_NETCONFIG_MANAGE='yes' to "no"
    CLOUD_NETCONFIG_MANAGE='no'
    
  3. [A] Adicione uma rota de rede para que a comunicação com o Azure NetApp Files ocorra por meio da interface de rede do armazenamento.

    As instruções a seguir pressupõem que a interface de rede do armazenamento é eth1.

    vi /etc/sysconfig/network/ifroute-eth1
    
    # Add the following routes 
    # RouterIPforStorageNetwork - - -
    # ANFNetwork/cidr RouterIPforStorageNetwork - -
    10.23.2.1 - - -
    10.23.1.0/26 10.23.2.1 - -
    

    Reinicialize a VM para ativar as alterações.

  4. [A] Prepare o sistema operacional para executar o SAP HANA nos sistemas NetApp com o NFS, conforme descrito na observação do SAP 3024346 – Configurações do kernel do Linux para NetApp com o NFS. Crie o arquivo de configuração /etc/sysctl.d/91-NetApp-HANA.conf para as definições de configuração do NetApp.

    vi /etc/sysctl.d/91-NetApp-HANA.conf
    
    # Add the following entries in the configuration file
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 131072 16777216
    net.ipv4.tcp_wmem = 4096 16384 16777216
    net.core.netdev_max_backlog = 300000
    net.ipv4.tcp_slow_start_after_idle=0
    net.ipv4.tcp_no_metrics_save = 1
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_timestamps = 1
    net.ipv4.tcp_sack = 1
    
  5. [A] Crie o arquivo de configuração /etc/sysctl.d/ms-az.conf com a Microsoft para as definições de configuração do Azure.

    vi /etc/sysctl.d/ms-az.conf
    
    # Add the following entries in the configuration file
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv4.tcp_max_syn_backlog = 16348
    net.ipv4.conf.all.rp_filter = 0
    sunrpc.tcp_slot_table_entries = 128
    vm.swappiness=10
    

    [! DICA] Evite definir net.ipv4.ip_local_port_range e net.ipv4.ip_local_reserved_ports explicitamente nos arquivos de configuração sysctl para permitir que o SAP Host Agent gerencie os intervalos de portas. Para obter mais detalhes, consulte a Nota do SAP 2382421.

  6. [A] Ajuste as configurações de sunrpc para volumes NFSv3, conforme recomendado na observação do SAP 3024346 – Configurações do kernel do Linux para NetApp com o NFS.

    vi /etc/modprobe.d/sunrpc.conf
    
    # Insert the following line
    options sunrpc tcp_max_slot_table_entries=128
    

Monte os volumes do Azure NetApp Files

  1. [A] Crie pontos de montagem para os volumes de banco de dados do HANA.

    mkdir -p /hana/data/HN1/mnt00001
    mkdir -p /hana/data/HN1/mnt00002
    mkdir -p /hana/log/HN1/mnt00001
    mkdir -p /hana/log/HN1/mnt00002
    mkdir -p /hana/shared
    mkdir -p /usr/sap/HN1
    
  2. [1] Crie diretórios específicos do nó para /usr/sap em HN1-shared.

    # Create a temporary directory to mount HN1-shared
    mkdir /mnt/tmp
    
    # if using NFSv3 for this volume, mount with the following command
    mount 10.23.1.4:/HN1-shared /mnt/tmp
    
    # if using NFSv4.1 for this volume, mount with the following command
    mount -t nfs -o sec=sys,nfsvers=4.1 10.23.1.4:/HN1-shared /mnt/tmp
    
    cd /mnt/tmp
    mkdir shared usr-sap-hanadb1 usr-sap-hanadb2 usr-sap-hanadb3
    
    # unmount /hana/shared
    cd
    umount /mnt/tmp
    
  3. [A] Verifique a configuração do domínio NFS. Verifique se o domínio está configurado como o domínio do Azure NetApp Files padrão, ou seja, defaultv4iddomain.com, e o mapeamento está definido como nobody.

    Importante

    É preciso que você defina o domínio NFS em /etc/idmapd.conf na VM para corresponder à configuração de domínio padrão no Azure NetApp Files: defaultv4iddomain.com . Se houver uma incompatibilidade entre a configuração de domínio no cliente NFS (ou seja, a VM) e o servidor NFS, ou seja, a configuração da Azure NetApp, as permissões para arquivos nos volumes do Azure NetApp que forem montados nas VMs serão exibidas como nobody.

    sudo cat /etc/idmapd.conf
    
    # Example
    [General]
    Verbosity = 0
    Pipefs-Directory = /var/lib/nfs/rpc_pipefs
    Domain = defaultv4iddomain.com
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody
    
  4. [A] Verifique nfs4_disable_idmapping. Ele deve ser definido como Y. Para criar a estrutura de diretório em que nfs4_disable_idmapping está localizado, execute o comando mount. Você não poderá criar o diretório manualmente em /sys/modules, pois o acesso é reservado para o kernel e os drivers.

    # Check nfs4_disable_idmapping 
    cat /sys/module/nfs/parameters/nfs4_disable_idmapping
    
    # If you need to set nfs4_disable_idmapping to Y
    mkdir /mnt/tmp
    mount 10.23.1.4:/HN1-shared /mnt/tmp
    umount  /mnt/tmp
    echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
    # Make the configuration permanent
    echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
    
  5. [A] Crie o grupo do SAP HANA e o usuário manualmente. As IDs para o grupo sapsys e o usuário hn1adm devem ser definidas como as mesmas IDs que são fornecidas durante a integração. (Neste exemplo, as IDs são definidas como 1001.) Se as IDs não estiverem definidas corretamente, você não poderá acessar os volumes. As IDs para o grupo sapsys e as conta de usuário hn1adm e sapadm devem ser as mesmas em todas as máquinas virtuais.

    # Create user group 
    sudo groupadd -g 1001 sapsys
    
    # Create  users 
    sudo useradd hn1adm -u 1001 -g 1001 -d /usr/sap/HN1/home -c "SAP HANA Database System" -s /bin/sh
    sudo useradd sapadm -u 1002 -g 1001 -d /home/sapadm -c "SAP Local Administrator" -s /bin/sh
    
    # Set the password  for both user ids
    sudo passwd hn1adm
    sudo passwd sapadm
    
  6. [A] Monte os volumes de Azure NetApp Files compartilhados.

    sudo vi /etc/fstab
    
    # Add the following entries
    10.23.1.5:/HN1-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.23.1.6:/HN1-data-mnt00002 /hana/data/HN1/mnt00002  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.23.1.4:/HN1-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.23.1.6:/HN1-log-mnt00002 /hana/log/HN1/mnt00002  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.23.1.4:/HN1-shared/shared /hana/shared  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    
    # Mount all volumes
    sudo mount -a
    

    Para cargas de trabalho que exigem maior taxa de transferência, considere usar a opção de montagem nconnect, conforme a descrição em Volumes NFS v4.1 no Azure NetApp Files para SAP HANA. Verifique se nconnect é compatível com o Azure NetApp Files em sua versão do Linux.

  7. [1] Monte os volumes específicos do nó em hanadb1.

    sudo vi /etc/fstab
    
    # Add the following entries
    10.23.1.4:/HN1-shared/usr-sap-hanadb1 /usr/sap/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    
    # Mount the volume
    sudo mount -a
    
  8. [2] Monte os volumes específicos do nó em hanadb2.

    sudo vi /etc/fstab
    
    # Add the following entries
    10.23.1.4:/HN1-shared/usr-sap-hanadb2 /usr/sap/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    
    # Mount the volume
    sudo mount -a
    
  9. [3] Monte os volumes específicos do nó em hanadb3.

    sudo vi /etc/fstab
    
    # Add the following entries
    10.23.1.4:/HN1-shared/usr-sap-hanadb3 /usr/sap/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    
    # Mount the volume
    sudo mount -a
    
  10. [A] Verifique se todos os volumes do HANA estão montados com o protocolo NFS versão NFSv4.1.

    sudo nfsstat -m
    
    # Verify that flag vers is set to 4.1 
    # Example from hanadb1
    /hana/data/HN1/mnt00001 from 10.23.1.5:/HN1-data-mnt00001
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.2.4,local_lock=none,addr=10.23.1.5
    /hana/log/HN1/mnt00002 from 10.23.1.6:/HN1-log-mnt00002
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.2.4,local_lock=none,addr=10.23.1.6
    /hana/data/HN1/mnt00002 from 10.23.1.6:/HN1-data-mnt00002
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.2.4,local_lock=none,addr=10.23.1.6
    /hana/log/HN1/mnt00001 from 10.23.1.4:/HN1-log-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.2.4,local_lock=none,addr=10.23.1.4
    /usr/sap/HN1 from 10.23.1.4:/HN1-shared/usr-sap-hanadb1
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.2.4,local_lock=none,addr=10.23.1.4
    /hana/shared from 10.23.1.4:/HN1-shared/shared
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.2.4,local_lock=none,addr=10.23.1.4
    

Instalação

Neste exemplo, para implantar o SAP HANA na configuração de expansão com nó em espera com o Azure, usamos o HANA 2.0 SP4.

Preparar para a instalação do HANA

  1. [A] Antes da instalação do HANA, defina a senha raiz. Você pode desabilitar a senha raiz após a conclusão da instalação. Execute como root o comando passwd.

  2. [1] Verifique se você pode fazer logon via SSH em hanadb2 e hanadb3 sem que seja solicitada uma senha.

    ssh root@hanadb2
    ssh root@hanadb3
    
  3. [A] Instale pacotes adicionais que são necessários para o HANA 2.0 SP4. Para obter mais informações, consulte a Nota do SAP 2593824.

    sudo zypper install libgcc_s1 libstdc++6 libatomic1
    
  4. [2], [3] Altere a propriedade dos diretórios data e log do SAP HANA para o hn1adm.

    # Execute as root
    sudo chown hn1adm:sapsys /hana/data/HN1
    sudo chown hn1adm:sapsys /hana/log/HN1
    

Instalação do HANA

  1. [1] Instale o SAP HANA seguindo as instruções no Guia de instalação e atualização do SAP HANA 2.0. Neste exemplo, instalamos a expansão do SAP HANA com um nó mestre, um nó de trabalho e um nó em espera.

    1. Inicie o programa hdblcm a partir do diretório do software de instalação do HANA. Use o parâmetro internal_network e passe o espaço de endereço para a sub-rede que é usada para a comunicação interna entre nós do HANA.

      ./hdblcm --internal_network=10.23.3.0/24
      
    2. No prompt, insira os valores a seguir:

      • Em Escolher uma ação: insira 1 (para instalar)
      • Em Componentes adicionais para a instalação: insira 2, 3
      • Em caminho de instalação: pressione Enter (o padrão é /hana/shared)
      • Em Nome do Host Local: pressione Enter para aceitar o padrão
      • Em Você deseja adicionar hosts ao sistema? : digite s
      • Em Adicionar nomes de host separados por vírgulas: insira hanadb2, hanadb3
      • Em Nome do Usuário Root [root]: pressione Enter para aceitar o padrão
      • Em Senha do Usuário Root: Insira a senha do usuário root
      • Em funções para o host hanadb2: insira 1 (de trabalho)
      • Em Grupo de Failover de Host para o host hanadb2 [padrão]: pressione Enter para aceitar o padrão
      • Em Número de Partição de Armazenamento para o host hanadb2 [<<atribuir automaticamente>>]: pressione Enter para aceitar o padrão
      • Em Grupo de Trabalho para o host hanadb2 [padrão]: pressione Enter para aceitar o padrão
      • Em Selecionar funções para o host hanadb3: insira 2 (em espera)
      • Em Grupo de Failover de Host para o host hanadb3 [padrão]: pressione Enter para aceitar o padrão
      • Em Grupo de Trabalho para o host hanadb3 [padrão]: pressione Enter para aceitar o padrão
      • Em ID do sistema do SAP HANA: insira HN1
      • Em Número de instância [00]: insira 03
      • Em Grupo de Trabalho do Host Local [padrão]: pressione Enter para aceitar o padrão
      • Em Selecionar Uso do Sistema / Inserir Índice [4] : insira 4 (personalizado)
      • Em Local dos Volumes de Dados [/hana/data/HN1]: pressione Enter para aceitar o padrão
      • Em Local dos Volumes do Log [/hana/log/HN1]: pressione Enter para aceitar o padrão
      • Para restringir a alocação máxima de memória? [n]: insira n
      • Em Nome do Host do Certificado para o Host hanadb1 [hanadb1]: pressione Enter para aceitar o padrão
      • Em Nome do Host do Certificado para o Host hanadb2 [hanadb2]: pressione Enter para aceitar o padrão
      • Em Nome do Host do Certificado para o Host hanadb3 [hanadb3]: pressione Enter para aceitar o padrão
      • Em Senha do Administrador do Sistema (hn1adm) : insira a senha
      • Em Senha do Usuário do Banco de Dados do Sistema (sistema) : insira a senha do sistema
      • Em Confirmar Senha do Usuário do Banco de Dados do Sistema (sistema) : insira a senha do sistema
      • Para Reiniciar sistema após a reinicialização do computador? [n]: insira n
      • Em Você deseja continuar (s/n) : valide o resumo e, se tudo estiver correto, digite y
  2. [1] Verificar global.ini.

    Abra o global.ini e verifique se a configuração da comunicação interna entre nós do SAP HANA está funcionando. Verifique a seção Comunicação. Ele deve ter o espaço de endereço para a sub-rede hana e listeninterface deve ser definido como .internal. Verifique a seção internal_hostname_resolution. Ele deve ter os endereços IP para as máquinas virtuais HANA que pertencem à sub-rede hana.

    sudo cat /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
    
    # Example 
    #global.ini last modified 2019-09-10 00:12:45.192808 by hdbnameserve
    [communication]
    internal_network = 10.23.3/24
    listeninterface = .internal
    [internal_hostname_resolution]
    10.23.3.4 = hanadb1
    10.23.3.5 = hanadb2
    10.23.3.6 = hanadb3
    
  3. [1] Adicione o mapeamento de host para garantir que os endereços IP do cliente sejam usados para comunicação do cliente. Adicione a seção public_host_resolution e adicione os endereços IP correspondentes da sub-rede do cliente.

    sudo vi /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
    
    #Add the section
    [public_hostname_resolution]
    map_hanadb1 = 10.23.0.5
    map_hanadb2 = 10.23.0.6
    map_hanadb3 = 10.23.0.7
    
  4. [1] Reinicie o SAP HANA para ativar as alterações.

    sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB
    sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem HDB
    
  5. [1] Verifique se a interface do cliente usará os endereços IP da sub-rede client para comunicação.

    sudo -u hn1adm /usr/sap/HN1/HDB03/exe/hdbsql -u SYSTEM -p "password" -i 03 -d SYSTEMDB 'select * from SYS.M_HOST_INFORMATION'|grep net_publicname
    
    # Expected result
    "hanadb3","net_publicname","10.23.0.7"
    "hanadb2","net_publicname","10.23.0.6"
    "hanadb1","net_publicname","10.23.0.5"
    

    Para obter informações sobre como verificar a configuração, consulte a Nota SAP 2183363 – Configuração da rede interna do SAP HANA.

  6. Para otimizar o SAP HANA para o armazenamento subjacente do Azure NetApp Files, defina os seguintes parâmetros do SAP HANA:

    • max_parallel_io_requests128
    • async_read_submiton
    • async_write_submit_activeon
    • async_write_submit_blocksall

    Para saber mais, confira a Configuração da pilha de E/S para o SAP HANA.

    A partir dos sistemas SAP HANA 2.0, você pode definir os parâmetros no global.ini. Para obter mais informações, consulte a Nota do SAP 1999930.

    Para versões SPS12 ou anteriores do sistema SAP HANA 1.0, esses parâmetros podem ser definidos durante a instalação, conforme descrito na Nota do SAP 2267798.

  7. O armazenamento usado pelo Azure NetApp Files tem uma limitação de tamanho de arquivo de 16 terabytes (TB). O SAP HANA não está ciente implicitamente da limitação de armazenamento e não criará automaticamente um novo arquivo de dados quando o limite de tamanho de arquivo de 16 TB for atingido. Se o SAP HANA tentar aumentar o arquivo para além de 16 TB, essa tentativa resultará em erros e, eventualmente, em uma falha do servidor de índice.

    Importante

    Para impedir que o SAP HANA tente aumentar os arquivos de dados para além do limite de 16 TB do subsistema de armazenamento, defina os parâmetros a seguir em global.ini.

    • datavolume_striping = true
    • datavolume_striping_size_gb = 15000 Para obter mais informações, consulte a Nota do SAP 2400005. Lembre-se da Nota do SAP 2631285.

Testar failover do SAP HANA

Observação

Este artigo contém referências a termos que a Microsoft não usa mais. Quando esses termos forem removidos do software, nós os removeremos deste artigo.

  1. Simular uma falha de nó em um nó de trabalho do SAP HANA. Faça o seguinte:

    1. Antes de simular a falha de nó, execute os seguintes comandos como hn1adm para capturar o status do ambiente:

      # Check the landscape status
      python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker  | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | yes    | ok     |          |        |         1 |         1 | default  | default  | master 1   | master     | worker      | master      | worker  | worker  | default | default |
      | hanadb2 | yes    | ok     |          |        |         2 |         2 | default  | default  | master 2   | slave      | worker      | slave       | worker  | worker  | default | default |
      | hanadb3 | yes    | ignore |          |        |         0 |         0 | default  | default  | master 3   | slave      | standby     | standby     | standby | standby | default | -       |
      
      # Check the instance status
      sapcontrol -nr 03  -function GetSystemInstanceList
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN
      
    2. Para simular uma falha de nó, execute o seguinte comando como raiz no nó de trabalho, que, neste caso, é hanadb2:

      echo b > /proc/sysrq-trigger
      
    3. Monitore o sistema para a conclusão do failover. Quando o failover for concluído, capture o status, que deve ser semelhante ao seguinte:

      # Check the instance status
      sapcontrol -nr 03  -function GetSystemInstanceList
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GRAY
      
      # Check the landscape status
      /usr/sap/HN1/HDB03/exe/python_support> python landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker  | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | yes    | ok     |          |        |         1 |         1 | default  | default  | master 1   | master     | worker      | master      | worker  | worker  | default | default |
      | hanadb2 | no     | info   |          |        |         2 |         0 | default  | default  | master 2   | slave      | worker      | standby     | worker  | standby | default | -       |
      | hanadb3 | yes    | info   |          |        |         0 |         2 | default  | default  | master 3   | slave      | standby     | slave       | standby | worker  | default | default |
      

      Importante

      Quando um nó experimenta um pânico de kernel, evite atrasos com o failover do SAP HANA definindo kernel.panic como 20 segundos em todas as máquinas virtuais do HANA. A configuração é feita em /etc/sysctl. Reinicialize as máquinas virtuais para ativar a alteração. Se essa alteração não for executada, o failover poderá levar 10 ou mais minutos quando um nó estiver experimentando um pânico de kernel.

  2. Encerre o servidor de nomes fazendo o seguinte:

    1. Antes do teste, verifique o status do ambiente executando os seguintes comandos como hn1adm:

      #Landscape status 
      python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | yes    | ok     |          |        |         1 |         1 | default  | default  | master 1   | master     | worker      | master      | worker  | worker  | default | default |
      | hanadb2 | yes    | ok     |          |        |         2 |         2 | default  | default  | master 2   | slave      | worker      | slave       | worker  | worker  | default | default |
      | hanadb3 | no     | ignore |          |        |         0 |         0 | default  | default  | master 3   | slave      | standby     | standby     | standby | standby | default | -       |
      
      # Check the instance status
      sapcontrol -nr 03  -function GetSystemInstanceList
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GRAY
      
    2. Execute os comandos a seguir como hn1adm no nó mestre ativo, que, neste caso, é hanadb1:

      hn1adm@hanadb1:/usr/sap/HN1/HDB03> HDB kill
      

      O nó em espera hanadb3 assumirá como nó mestre. Este é o estado do recurso após a conclusão do teste de failover:

      # Check the instance status
      sapcontrol -nr 03 -function GetSystemInstanceList
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GRAY
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN
      
      # Check the landscape status
      python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker  | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | no     | info   |          |        |         1 |         0 | default  | default  | master 1   | slave      | worker      | standby     | worker  | standby | default | -       |
      | hanadb2 | yes    | ok     |          |        |         2 |         2 | default  | default  | master 2   | slave      | worker      | slave       | worker  | worker  | default | default |
      | hanadb3 | yes    | info   |          |        |         0 |         1 | default  | default  | master 3   | master     | standby     | master      | standby | worker  | default | default |
      
    3. Reinicie a instância do HANA no hanadb1 (ou seja, na mesma máquina virtual, na qual o servidor de nomes foi eliminado). O nó hanadb1 se reassociará ao ambiente e manterá sua função em espera.

      hn1adm@hanadb1:/usr/sap/HN1/HDB03> HDB start
      

      Depois que o SAP HANA for iniciado em hanadb1, espere o seguinte status:

      # Check the instance status
      sapcontrol -nr 03 -function GetSystemInstanceList
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN
      # Check the landscape status
      python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker  | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | yes    | info   |          |        |         1 |         0 | default  | default  | master 1   | slave      | worker      | standby     | worker  | standby | default | -       |
      | hanadb2 | yes    | ok     |          |        |         2 |         2 | default  | default  | master 2   | slave      | worker      | slave       | worker  | worker  | default | default |
      | hanadb3 | yes    | info   |          |        |         0 |         1 | default  | default  | master 3   | master     | standby     | master      | standby | worker  | default | default |
      
    4. Novamente, encerre o servidor de nomes no nó mestre ativo no momento (ou seja, no nó hanadb3).

      hn1adm@hanadb3:/usr/sap/HN1/HDB03> HDB kill
      

      O nó hanadb1 voltará a exercer função de nó mestre. Após a conclusão do teste de failover, o status terá esta aparência:

      # Check the instance status
      sapcontrol -nr 03  -function GetSystemInstanceList & python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GRAY
      
      # Check the landscape status
      python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker  | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | yes    | ok     |          |        |         1 |         1 | default  | default  | master 1   | master     | worker      | master      | worker  | worker  | default | default |
      | hanadb2 | yes    | ok     |          |        |         2 |         2 | default  | default  | master 2   | slave      | worker      | slave       | worker  | worker  | default | default |
      | hanadb3 | no     | ignore |          |        |         0 |         0 | default  | default  | master 3   | slave      | standby     | standby     | standby | standby | default | -       |
      
    5. Inicie o SAP HANA no hanadb3, que estará pronto para servir como um nó em espera.

      hn1adm@hanadb3:/usr/sap/HN1/HDB03> HDB start
      

      Depois que o SAP HANA for iniciado no hanadb3, o status será o seguinte:

      # Check the instance status
      sapcontrol -nr 03  -function GetSystemInstanceList & python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      GetSystemInstanceList
      OK
      hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
      hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
      hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GRAY
      # Check the landscape status
      python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py
      | Host    | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host    | Host    | Worker  | Worker  |
      |         | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config  | Actual  | Config  | Actual  |
      |         |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles   | Roles   | Groups  | Groups  |
      | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- |
      | hanadb1 | yes    | ok     |          |        |         1 |         1 | default  | default  | master 1   | master     | worker      | master      | worker  | worker  | default | default |
      | hanadb2 | yes    | ok     |          |        |         2 |         2 | default  | default  | master 2   | slave      | worker      | slave       | worker  | worker  | default | default |
      | hanadb3 | no     | ignore |          |        |         0 |         0 | default  | default  | master 3   | slave      | standby     | standby     | standby | standby | default | -       |
      

Próximas etapas