Partilhar via


Implementar um sistema de escalamento horizontal do SAP HANA com um nó de espera em VMs do Azure com o 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 espera em máquinas virtuais (VMs) do Azure usando os Arquivos NetApp do Azure para os volumes de armazenamento compartilhados.

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

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

Descrição geral

Um método para alcançar a alta disponibilidade do HANA é configurar o failover automático do host. Para configurar o failover automático do host, adicione uma ou mais máquinas virtuais ao sistema HANA e configure-as como nós em espera. Quando o nó ativo falha, um nó em espera assume automaticamente o controle. Na configuração apresentada com máquinas virtuais do Azure, você obtém failover automático usando NFS nos Arquivos NetApp do Azure.

Nota

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 arquivos aprimorado no protocolo NFSv4 é usado para I/O cerca.

Importante

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

Visão geral da alta disponibilidade do SAP NetWeaver

No diagrama anterior, que segue as recomendações de rede do 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 HANA

Os volumes do Azure NetApp estão em sub-rede separada, delegada aos Arquivos NetApp do Azure.

Para este exemplo de configuração, 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.

Os Arquivos NetApp do Azure estão disponíveis em várias regiões do Azure. Verifique se a região do Azure selecionada oferece Arquivos NetApp do Azure.

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

Considerações importantes

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

Dimensionamento para banco de dados HANA em arquivos NetApp do Azure

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

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

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

Importante

Para sistemas de produção, onde o desempenho é uma chave, 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á implantou sua rede virtual do Azure. Os recursos e VMs dos Arquivos NetApp do Azure, onde os recursos dos Arquivos NetApp do Azure serão montados, devem ser implantados na mesma rede virtual do Azure ou em redes virtuais do Azure emparelhadas.

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

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

    A arquitetura HANA apresentada neste artigo usa um único pool de capacidade de Arquivos NetApp do Azure no nível Ultra Service . Para cargas de trabalho HANA no Azure, recomendamos usar um Nível de serviço Azure NetApp Files Ultra ou Premium.

  3. Delegue uma sub-rede aos Arquivos NetApp do Azure, conforme descrito nas instruções em Delegar uma sub-rede aos Arquivos NetApp do Azure.

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

    Ao implantar os volumes, certifique-se de selecionar a versão NFSv4.1 . Atualmente, o acesso ao NFSv4.1 requer ser adicionado a uma lista de permissões. Implante os volumes na sub-rede designada Arquivos NetApp do Azure. Os endereços IP dos volumes NetApp do Azure são atribuídos automaticamente.

    Lembre-se de que os recursos dos Arquivos NetApp do Azure e as VMs do Azure devem 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 volume 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 arquivo para os volumes do 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 separado de Arquivos NetApp do Azure para cada volume de dados e log HANA. Para uma configuração mais otimizada em termos de custos em sistemas menores ou não produtivos, é possível colocar todas as montagens de dados e todas as montagens de logs em um único volume.

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

Primeiro, você precisa criar os volumes de Arquivos NetApp do Azure. Em seguida, siga os seguintes passos:

  1. Crie as sub-redes de rede virtual do Azure na 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 de 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 as cargas de trabalho do SAP HANA, a baixa latência é crítica. Para alcançar a baixa latência, trabalhe com o seu representante da Microsoft para garantir que as máquinas virtuais e os volumes do Azure NetApp Files são implementados em estreita proximidade. Quando estiver a integrar um novo sistema SAP HANA que esteja a utilizar o Azure NetApp Files do SAP HANA, submeta 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: client, storage e hana. Ao implantar as VMs, selecione a sub-rede do cliente, para que a interface de rede do cliente seja a interface primária nas VMs. Você também precisará configurar uma rota explícita para a sub-rede delegada dos Arquivos NetApp do Azure por meio do gateway de sub-rede de armazenamento.

Importante

Certifique-se de que o sistema operacional selecionado é certificado SAP para SAP HANA nos tipos específicos de VM que você está usando. Para obter uma lista dos tipos de VM certificados pelo SAP HANA e das versões do sistema operacional para esses tipos, acesse o site de plataformas IaaS certificadas pelo SAP HANA. Clique nos detalhes do tipo de VM listado para obter a lista completa das versões do sistema operacional suportadas pelo SAP HANA para esse tipo.

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

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

    a. Use uma imagem SLES4SAP na galeria do Azure com suporte para SAP HANA.

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

    c. Selecione a sub-rede de rede virtual do Azure do cliente. 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 de rede virtual do Azure do cliente, como hanadb1-client, hanadb2-client e hanadb3-client.

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

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

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

    1. Vá para 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 selecione a máquina virtual.
    3. No painel Visão geral, selecione Parar para desalocar a máquina virtual.
    4. Selecione Rede e anexe a interface de rede. Na lista suspensa Anexar interface de rede, selecione as interfaces de rede já criadas para as storage hana e sub-redes.
    5. Selecione Guardar.
    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 interrompido por enquanto. Em seguida, habilitaremos a rede acelerada para todas as interfaces de rede recém-conectadas.
  6. Habilite a rede acelerada para as interfaces de rede adicionais para as storage sub-redes e hana executando as seguintes etapas:

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

    2. Execute os seguintes comandos para habilitar a rede acelerada para as interfaces de rede adicionais, que estão conectadas às storage sub-redes 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 selecione-o.
    2. No painel Visão geral, selecione Iniciar.

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

As instruções nas próximas seções são prefixadas com uma das seguintes opções:

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

Configure e prepare seu sistema operacional executando as seguintes etapas:

  1. [A] Mantenha os arquivos host nas máquinas virtuais. Inclua entradas para todas as sub-redes. As seguintes entradas foram adicionadas para /etc/hosts este 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 nuvem para a interface de rede para armazenamento para evitar alterações não intencionais de nome de host.

    As instruções a seguir pressupõem que a interface de rede de 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 os Arquivos NetApp do Azure passe pela interface da rede de armazenamento.

    As instruções a seguir pressupõem que a interface de rede de 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 SO para executar o SAP HANA em sistemas NetApp com NFS, conforme descrito na nota 3024346 SAP - Linux Kernel Settings for NetApp NFS. Crie o arquivo de configuração /etc/sysctl.d/91-NetApp-HANA.conf para as definições de configuração da 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 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 do sysctl para permitir que o SAP Host Agent gerencie os intervalos de portas. Para obter mais detalhes, consulte a nota 2382421 SAP.

  6. [A] Ajuste as configurações sunrpc para volumes NFSv3, conforme recomendado na nota SAP 3024346 - Configurações do kernel Linux para NFS NetApp.

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

Monte os volumes de Arquivos NetApp do Azure

  1. [A] Crie pontos de montagem para os volumes do banco de dados 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 padrão do Azure NetApp Files, ou seja defaultv4iddomain.com , e se o mapeamento está definido como ninguém.

    Importante

    Certifique-se de definir o domínio NFS na /etc/idmapd.conf VM para corresponder à configuração de domínio padrão nos Arquivos NetApp do Azure: 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 do Azure NetApp, as permissões para arquivos nos volumes NetApp do Azure 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] Verificar nfs4_disable_idmapping. Deve ser definido como Y. Para criar a estrutura de diretórios onde nfs4_disable_idmapping está localizado, execute o comando mount. Você não poderá criar manualmente o diretório em /sys/modules, porque o acesso é reservado para o kernel / 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 SAP HANA e o usuário manualmente. Os IDs para sapsys de grupo e usuário hn1adm devem ser definidos para os mesmos IDs, que são fornecidos durante a integração. (Neste exemplo, as IDs são definidas como 1001.) Se os IDs não estiverem definidos corretamente, você não poderá acessar os volumes. Os IDs para sapsys de grupo e contas de usuário hn1adm e sapadm devem ser os mesmos 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 compartilhados do Azure NetApp Files.

    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 uma taxa de transferência mais alta, considere usar a nconnect opção mount, conforme descrito em Volumes NFS v4.1 no Azure NetApp Files for SAP HANA. Verifique se nconnect é suportado pelos Arquivos NetApp do Azure na sua versão do Linux.

  7. [1] Monte os volumes específicos do nó no 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ó no 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ó no 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 HANA estão montados com a versão NFSv4.1 do protocolo NFS.

    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ó de 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 de root. Você pode desativar a senha de root após a conclusão da instalação. Executar como root comando passwd.

  2. [1] Verifique se você pode fazer login via SSH para hanadb2 e hanadb3, sem ser 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 SAP Note 2593824.

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

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

Instalação 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 o scale-out do SAP HANA com um nó mestre, um trabalhador e um nó em espera.

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

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

      • Para Escolha uma ação: digite 1 (para instalar)
      • Para componentes adicionais para instalação: insira 2, 3
      • Para o caminho de instalação: pressione Enter (o padrão é /hana/shared)
      • Para Nome do Host Local: pressione Enter para aceitar o padrão
      • Em Deseja adicionar hosts ao sistema?: digite y
      • Para adicionar nomes de host separados por vírgula: digite hanadb2, hanadb3
      • Para Root User Name [root]: pressione Enter para aceitar o padrão
      • Para Senha de Usuário Root: digite a senha do usuário root
      • Para funções para host hanadb2: digite 1 (para trabalhador)
      • Para Host Failover Group for host hanadb2 [default]: pressione Enter para aceitar o padrão
      • Para Número de partição de armazenamento para host hanadb2 [<<atribuir automaticamente>>]: pressione Enter para aceitar o padrão
      • Para Grupo de Trabalho para host hanadb2 [padrão]: pressione Enter para aceitar o padrão
      • Para Selecionar funções para host hanadb3: digite 2 (para espera)
      • Para Host Failover Group for host hanadb3 [default]: pressione Enter para aceitar o padrão
      • Para Grupo de Trabalho para host hanadb3 [padrão]: pressione Enter para aceitar o padrão
      • Para SAP HANA System ID: insira HN1
      • Para o número da instância [00]: digite 03
      • Para Grupo de Trabalho de Host Local [padrão]: pressione Enter para aceitar o padrão
      • Para Selecionar Uso do Sistema / Inserir índice [4]: digite 4 (para personalizado)
      • Para Localização de Volumes de Dados [/hana/data/HN1]: pressione Enter para aceitar o padrão
      • Para Localização dos Volumes de Log [/hana/log/HN1]: pressione Enter para aceitar o padrão
      • Para Restringir alocação máxima de memória? [n]: digite n
      • Para Nome do Host do Certificado Para Host hanadb1 [hanadb1]: pressione Enter para aceitar o padrão
      • Para Nome do Host do Certificado Para Host hanadb2 [hanadb2]: pressione Enter para aceitar o padrão
      • Para Nome do Host do Certificado Para Host hanadb3 [hanadb3]: pressione Enter para aceitar o padrão
      • Para a palavra-passe do administrador do sistema (hn1adm): introduza a palavra-passe
      • Para Senha do Usuário do Banco de Dados do Sistema (sistema): digite a senha do sistema
      • Para Confirmar Senha do Usuário do Banco de Dados do Sistema (sistema): digite a senha do sistema
      • Para Reiniciar o sistema após a reinicialização da máquina? [n]: digite n
      • Para Deseja continuar (s/n): valide o resumo e, se tudo parecer bom, digite y
  2. [1] Verifique global.ini.

    Exiba global.ini e verifique se a configuração para a comunicação interna entre nós do SAP HANA está em vigor. Verifique a seção de comunicação . Ele deve ter o espaço de endereço para a hana sub-rede 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 à hana sub-rede.

    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 mapeamento de host para garantir que os endereços IP do cliente sejam usados para comunicação com o cliente. Adicione a seção public_host_resolutione 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 utilizará os endereços IP da client sub-rede 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 SAP Note 2183363 - Configuration of SAP HANA internal network.

  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_submitsobre
    • async_write_submit_activesobre
    • async_write_submit_blockstudo

    Para obter mais informações, consulte Configuração de pilha de E/S para SAP HANA.

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

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

  7. O armazenamento usado pelos Arquivos NetApp do Azure tem uma limitação de tamanho de arquivo de 16 terabytes (TB). O SAP HANA não está implicitamente ciente 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. Como o SAP HANA tenta aumentar o arquivo além de 16 TB, essa tentativa resultará em erros e, eventualmente, em uma falha do servidor de indexação.

    Importante

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

    • datavolume_striping = verdadeiro
    • datavolume_striping_size_gb = 15000 Para obter mais informações, consulte SAP Note 2400005. Esteja atento ao SAP Note 2631285.

Testar failover do SAP HANA

Nota

Este artigo contém referências a termos que a Microsoft já não utiliza. Quando estes termos forem removidos do software, iremos removê-los deste artigo.

  1. Simule uma falha de nó em um nó de trabalho do SAP HANA. Efetue o seguinte procedimento:

    1. Antes de simular a falha do 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 root 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 ter a seguinte aparência:

      # 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ó entrar em pânico no kernel, evite atrasos com o failover do SAP HANA definindo kernel.panic como 20 segundos em todas as máquinas virtuais 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 pode levar 10 ou mais minutos quando um nó estiver enfrentando pânico no kernel.

  2. Mate 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 seguintes comandos como hn1adm no nó mestre ativo, que é hanadb1 neste caso:

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

      O nó de espera hanadb3 assumirá como nó mestre. Aqui está 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 HANA no hanadb1 (ou seja, na mesma máquina virtual, onde o servidor de nomes foi morto). O nó hanadb1 voltará ao ambiente e manterá seu papel de espera.

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

      Depois que o SAP HANA for iniciado no 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, mate o servidor de nomes no nó mestre atualmente ativo (ou seja, no nó hanadb3).

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

      O nó hanadb1 retomará a 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 terá a seguinte 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 | -       |
      

Próximos passos