Implementar um sistema de escalamento horizontal do SAP HANA com um nó de espera em VMs do Azure com o Azure NetApp Files no Red Hat Enterprise Linux
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 Red Hat Enterprise Linux, 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 Red Hat Enterprise Linux for SAP 7.6.
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.
Antes de começar, consulte as seguintes notas e documentos do SAP:
- Documentação dos Arquivos NetApp do Azure
- O SAP Note 1928533 inclui:
- Uma lista de tamanhos de VM do Azure com suporte para a implantação do software SAP
- Informações de capacidade importantes para tamanhos de VM do Azure
- Software SAP suportado, sistema operacional (SO) e combinações de banco de dados
- A versão necessária do kernel SAP para Windows e Linux no Microsoft Azure
- SAP Nota 2015553: Lista os pré-requisitos para implantações de software SAP suportadas pelo SAP no Azure
- O SAP Note [2002167] recomendou as configurações do sistema operacional para o Red Hat Enterprise Linux
- O SAP Note 2009879 tem as diretrizes do SAP HANA para o Red Hat Enterprise Linux
- O SAP Note 3108302 tem as diretrizes do SAP HANA para o Red Hat Enterprise Linux 9.x
- SAP Nota 2178632: Contém informações detalhadas sobre todas as métricas de monitoramento relatadas para SAP no Azure
- SAP Nota 2191498: Contém a versão necessária do SAP Host Agent para Linux no Azure
- SAP Nota 2243692: Contém informações sobre o licenciamento SAP no Linux no Azure
- SAP Nota 1999351: Contém informações adicionais de solução de problemas para a Extensão de Monitoramento Avançado do Azure para SAP
- SAP Note 1900823: Contém informações sobre os requisitos de armazenamento do SAP HANA
- SAP Community Wiki: Contém todas as notas SAP necessárias para Linux
- Planejamento e implementação de Máquinas Virtuais do Azure para SAP no Linux
- Implantação de Máquinas Virtuais do Azure para SAP no Linux
- Implantação de DBMS de Máquinas Virtuais do Azure para SAP no Linux
- Documentação geral do RHEL
- Documentação RHEL específica do Azure:
- Volumes NFS v4.1 no Azure NetApp Files para SAP HANA
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.
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.9.1.0/26storage
10.9.3.0/26hana
10.9.2.0/26anf
10.9.0.0/26 (sub-rede delegada aos Arquivos NetApp do Azure)
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 volumes de arquivos NetApp do Azure para o cenário de expansão do SAP HANA com nós em espera, 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.
Crie uma conta NetApp na região do Azure selecionada seguindo as instruções em Criar uma conta NetApp.
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.
Delegue uma sub-rede aos Arquivos NetApp do Azure, conforme descrito nas instruções em Delegar uma sub-rede aos Arquivos NetApp do Azure.
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 . 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.9.0.4/ HN1-data-mnt00001, nfs://10.9.0.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.9.0.4/ HN1-data-mnt00001)
- volume HN1-data-mnt00002 (nfs://10.9.0.4/ HN1-data-mnt00002)
- volume HN1-log-mnt00001 (nfs://10.9.0.4/ HN1-log-mnt00001)
- volume HN1-log-mnt00002 (nfs://10.9.0.4/ HN1-log-mnt00002)
- volume HN1-shared (nfs://10.9.0.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 em um único volume e todas as montagens de logs em um único volume diferente.
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:
Crie as sub-redes de rede virtual do Azure na sua rede virtual do Azure.
Implante as VMs.
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
ehana
).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.
Crie um conjunto de disponibilidade para o SAP HANA. Certifique-se de definir o domínio de atualização máxima.
Crie três máquinas virtuais (hanadb1, hanadb2, hanadb3) executando as seguintes etapas:
a. Use uma imagem do Red Hat Enterprise Linux na galeria do Azure com suporte para SAP HANA. Usamos uma imagem RHEL-SAP-HA 7.6 neste exemplo.
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.
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).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).Anexe as interfaces de rede virtual recém-criadas às máquinas virtuais correspondentes executando as seguintes etapas:
a. Vá para a máquina virtual no portal do Azure.
b. No painel esquerdo, selecione Máquinas Virtuais. Filtre o nome da máquina virtual (por exemplo, hanadb1) e selecione a máquina virtual.
c. No painel Visão geral, selecione Parar para desalocar a máquina virtual.
d. 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.e. Selecione Guardar.
f. Repita as etapas b a e para as máquinas virtuais restantes (em nosso exemplo, hanadb2 e hanadb3).
g. 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.
Habilite a rede acelerada para as interfaces de rede adicionais para as
storage
sub-redes ehana
executando as seguintes etapas:a. Abra o Azure Cloud Shell no portal do Azure.
b. Execute os seguintes comandos para habilitar a rede acelerada para as interfaces de rede adicionais, que estão conectadas às
storage
sub-redes ehana
.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
Inicie as máquinas virtuais executando as seguintes etapas:
a. No painel esquerdo, selecione Máquinas Virtuais. Filtre o nome da máquina virtual (por exemplo, hanadb1) e selecione-o.
b. 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:
[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.9.3.4 hanadb1-storage 10.9.3.5 hanadb2-storage 10.9.3.6 hanadb3-storage # Client 10.9.1.5 hanadb1 10.9.1.6 hanadb2 10.9.1.7 hanadb3 # Hana 10.9.2.4 hanadb1-hana 10.9.2.5 hanadb2-hana 10.9.2.6 hanadb3-hana
[A] Adicione uma rota de rede, para que a comunicação com os Arquivos NetApp do Azure passe pela interface da rede de armazenamento.
Neste exemplo será usado
Networkmanager
para configurar a rota de rede adicional. As instruções a seguir pressupõem que a interface de rede de armazenamento éeth1
.
Primeiro, determine o nome da conexão para o dispositivoeth1
. Neste exemplo, o nome da conexão para o dispositivoeth1
éWired connection 1
.# Execute as root nmcli connection # Result #NAME UUID TYPE DEVICE #System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0 #Wired connection 1 4b0789d1-6146-32eb-83a1-94d61f8d60a7 ethernet eth1
Em seguida, configure a rota adicional para a rede delegada dos Arquivos NetApp do Azure por meio do
eth1
.# Add the following route # ANFDelegatedSubnet/cidr via StorageSubnetGW dev StorageNetworkInterfaceDevice nmcli connection modify "Wired connection 1" +ipv4.routes "10.9.0.0/26 10.9.3.1"
Reinicialize a VM para ativar as alterações.
[A] Instale o pacote do cliente NFS.
yum install nfs-utils
[A] Prepare o SO para executar o SAP HANA no Azure 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
[A] Crie o arquivo de configuração /etc/sysctl.d/ms-az.conf com configurações de otimização adicionais.
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
Gorjeta
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.
[A] Ajuste as configurações sunrpc, conforme recomendado na nota 3024346 SAP - Configurações do kernel Linux para NetApp NFS.
vi /etc/modprobe.d/sunrpc.conf # Insert the following line options sunrpc tcp_max_slot_table_entries=128
[A] Configuração do Red Hat para HANA.
Configure o RHEL conforme descrito no SAP Note 2292690, 2455582, 2593824 e Red Hat note 2447641.
Nota
Se estiver instalando o HANA 2.0 SP04, será necessário instalar o pacote
compat-sap-c++-7
conforme descrito na nota 2593824 do SAP, antes de instalar o SAP HANA.
Monte os volumes de Arquivos NetApp do Azure
[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
[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.9.0.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.9.0.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
[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 comonobody
.sudo cat /etc/idmapd.conf # Example [General] Domain = defaultv4iddomain.com [Mapping] Nobody-User = nobody Nobody-Group = nobody
[A] Verificar
nfs4_disable_idmapping
. Deve ser definido como Y. Para criar a estrutura de diretórios ondenfs4_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.9.0.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
Para obter mais detalhes sobre como alterar
nfs4_disable_idmapping
parâmetros, consulte https://access.redhat.com/solutions/1749883.[A] Monte os volumes compartilhados do Azure NetApp Files.
sudo vi /etc/fstab # Add the following entries 10.9.0.4:/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.9.0.4:/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.9.0.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.9.0.4:/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.9.0.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 senconnect
é suportado pelos Arquivos NetApp do Azure na sua versão do Linux.[1] Monte os volumes específicos do nó no hanadb1.
sudo vi /etc/fstab # Add the following entries 10.9.0.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
[2] Monte os volumes específicos do nó no hanadb2.
sudo vi /etc/fstab # Add the following entries 10.9.0.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
[3] Monte os volumes específicos do nó no hanadb3.
sudo vi /etc/fstab # Add the following entries 10.9.0.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
[A] Verifique se todos os volumes HANA estão montados com a versão NFSv4 do protocolo NFSv4.
sudo nfsstat -m # Verify that flag vers is set to 4.1 # Example from hanadb1 /hana/data/HN1/mnt00001 from 10.9.0.4:/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.9.3.4,local_lock=none,addr=10.9.0.4 /hana/log/HN1/mnt00002 from 10.9.0.4:/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.9.3.4,local_lock=none,addr=10.9.0.4 /hana/data/HN1/mnt00002 from 10.9.0.4:/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.9.3.4,local_lock=none,addr=10.9.0.4 /hana/log/HN1/mnt00001 from 10.9.0.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.9.3.4,local_lock=none,addr=10.9.0.4 /usr/sap/HN1 from 10.9.0.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.9.3.4,local_lock=none,addr=10.9.0.4 /hana/shared from 10.9.0.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.9.3.4,local_lock=none,addr=10.9.0.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
[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
comandopasswd
.[1] Verifique se você pode fazer login via SSH para hanadb2 e hanadb3, sem ser solicitada uma senha.
ssh root@hanadb2 ssh root@hanadb3
[A] Instale pacotes adicionais, que são necessários para o HANA 2.0 SP4. Para obter mais informações, consulte SAP Note 2593824.
yum install libgcc_s1 libstdc++6 compat-sap-c++-7 libatomic1
[2], [3] Alterar a propriedade do SAP HANA
data
elog
diretórios para hn1adm.# Execute as root sudo chown hn1adm:sapsys /hana/data/HN1 sudo chown hn1adm:sapsys /hana/log/HN1
[A] Desative o firewall temporariamente, para que ele não interfira com a instalação do HANA. Você pode reativá-lo, depois que a instalação do HANA for concluída.
# Execute as root systemctl stop firewalld systemctl disable firewalld
Instalação HANA
[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.
a. 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.9.2.0/26
b. 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 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
[1] Verificar 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 elisteninterface
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.9.2.0/26 listeninterface = .internal [internal_hostname_resolution] 10.9.2.4 = hanadb1 10.9.2.5 = hanadb2 10.9.2.6 = hanadb3
[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_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.9.1.5 map_hanadb2 = 10.9.1.6 map_hanadb3 = 10.9.1.7
[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
[1] Verifique se a interface do cliente utilizará os endereços IP da
client
sub-rede para comunicação.# Execute as 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.9.1.7" "hanadb2","net_publicname","10.9.1.6" "hanadb1","net_publicname","10.9.1.5"
Para obter informações sobre como verificar a configuração, consulte SAP Note 2183363 - Configuration of SAP HANA internal network.
[A] Reative o firewall.
Pare HANA
sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB
Reativar o firewall
# Execute as root systemctl start firewalld systemctl enable firewalld
Abra as portas de firewall necessárias
Importante
Crie regras de firewall para permitir a comunicação entre nós HANA e o tráfego do cliente. As portas necessárias estão listadas nas portas TCP/IP de todos os produtos SAP. Os comandos a seguir são apenas um exemplo. Neste cenário com o número de sistema usado 03.
# Execute as root sudo firewall-cmd --zone=public --add-port={30301,30303,30306,30307,30313,30315,30317,30340,30341,30342,1128,1129,40302,40301,40307,40303,40340,50313,50314,30310,30302}/tcp --permanent sudo firewall-cmd --zone=public --add-port={30301,30303,30306,30307,30313,30315,30317,30340,30341,30342,1128,1129,40302,40301,40307,40303,40340,50313,50314,30310,30302}/tcp
Iniciar HANA
sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem HDB
Para otimizar o SAP HANA para o armazenamento subjacente do Azure NetApp Files, defina os seguintes parâmetros do SAP HANA:
max_parallel_io_requests
128ºasync_read_submit
sobreasync_write_submit_active
sobreasync_write_submit_blocks
tudo
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.
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
.
Testar failover do SAP HANA
Simule uma falha de nó em um nó de trabalho do SAP HANA. Efetue o seguinte procedimento:
a. 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
b. 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
c. 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 hanadb2, 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 | 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.Mate o servidor de nomes fazendo o seguinte:
a. 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 | 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 hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
b. 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 hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, 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 | 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 |
c. 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 hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, 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 |
d. 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 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GRAY hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, 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 | 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 | - |
e. 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 hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, 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 | 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
- Planejamento e implementação de Máquinas Virtuais do Azure para SAP
- Implantação de Máquinas Virtuais do Azure para SAP
- Implantação de DBMS de Máquinas Virtuais do Azure para SAP
- Volumes NFS v4.1 no Azure NetApp Files para SAP HANA
- Para saber como estabelecer alta disponibilidade e planejar a recuperação de desastres do SAP HANA em VMs do Azure, consulte Alta disponibilidade do SAP HANA em máquinas virtuais (VMs) do Azure.