Alta disponibilidade do NFSVMs do Azure no SUSE Linux Enterprise Server
Observação
É recomendável implantar um dos serviços primários de NFS do Azure: NFS nos Arquivos do Azure ou Volumes do ANF no NFS para armazenar dados compartilhados em um sistema SAP altamente disponível. Lembre-se de que estamos deixando de enfatizar as arquiteturas de referência do SAP, utilizando clusters de NFS.
Este artigo descreve como implantar as máquinas virtuais, configurar as máquinas virtuais, instalar a estrutura de cluster e instalar um servidor NFS com alta disponibilidade que pode ser usado para armazenar dados compartilhados de um sistema SAP altamente disponível. Este guia descreve como configurar um servidor NFS altamente disponível que é usado pelos dois sistemas SAP, NW1 e NW2. Os nomes dos recursos (por exemplo, máquinas virtuais, redes virtuais) no exemplo pressupõem que você tenha usado o modelo de servidor de arquivo SAP com o prod de prefixo de recurso.
Observação
Esse artigo contém referências a termos que a Microsoft não utiliza mais. Quando os termos forem removidos do software, nós os removeremos deste artigo.
Primeiro, leia os seguintes documentos e Notas SAP
A Nota SAP 1928533, que tem:
- Lista de tamanhos de VM do Azure que têm suporte para a implantação de software SAP
- Informações importantes sobre capacidade para tamanhos de VM do Azure
- Software SAP e combinações de SO (sistema operacional) e banco de dados com suporte
- A versão do kernel do SAP necessária para Windows e para Linux no Microsoft Azure
A Nota SAP 2015553 lista pré-requisitos para implantações de software SAP com suporte do SAP no Azure.
A Nota SAP 2205917 tem configurações de SO recomendadas para SUSE Linux Enterprise Server para aplicativos SAP
A Nota SAP 1944799 tem Diretrizes SAP HANA para SUSE Linux Enterprise Server para aplicativos SAP
A Nota SAP 2178632 contém informações detalhadas sobre todas as métricas de monitoramentos relatadas para o SAP no Azure.
A Nota SAP 2191498 tem a versão necessária do SAP Host Agent para Linux no Azure.
A Nota SAP 2243692 tem informações sobre o licenciamento do SAP no Linux no Azure.
A Nota SAP 1984787 tem informações gerais sobre o SUSE Linux Enterprise Server 12.
A Nota SAP 1999351 tem informações de solução de problemas adicionais para a Extensão de Monitoramento Avançado do Azure para SAP.
WIKI da comunidade do SAP tem 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 (este artigo)
Implantação de Máquinas Virtuais do Azure do DBMS para SAP no Linux
Guias de práticas recomendadas do SUSE Linux Enterprise Server for SAP Applications 12 SP5
Guia do SUSE Linux Enterprise Server for SAP Applications 12 SP5
Visão geral
Para obter alta disponibilidade, o SAP NetWeaver requer um servidor NFS. O servidor NFS está configurado em um cluster separado e pode ser usado por vários sistemas SAP.
O servidor usa um nome de host virtual dedicado e endereços IP virtuais para todos os sistemas SAP que usam esse servidor NFS. No Azure, um balanceador de carga é necessário para usar um endereço IP virtual. A configuração apresentada mostra um balanceador de carga com:
- Endereço IP de front-end 10.0.0.4 para NW1
- Endereço IP de front-end 10.0.0.5 para NW2
- Porta de investigação 61000 para NW1
- Porta de investigação 61001 para NW2
Configurar um servidor NFS altamente disponível
Implantar o Linux manualmente por meio do portal do Azure
Este documento pressupõe que você já implantou um grupo de recursos, uma Rede Virtual do Azure e uma sub-rede.
Implante duas máquinas virtuais para servidores NFS. Escolha uma imagem SLES adequada compatível com o seu sistema SAP. Você pode implantar a VM em qualquer uma das opções de disponibilidade: conjunto de dimensionamento, zona de disponibilidade ou conjunto de disponibilidade.
Configurar o Azure Load Balancer
Siga o guia criar balanceador de carga para configurar um balanceador de carga padrão para uma alta disponibilidade do servidor NFS. Durante a instalação do balanceador de carga, considere os pontos a seguir.
- Configuração de IP de Front-End: criar dois IPs de front-end. Selecione a mesma rede virtual e sub-rede que o servidor NFS.
- Pool de back-end: crie um pool de back-end e adicione VMs do servidor NFS.
- Regras de entrada: crie duas regras de balanceamento de carga, uma para NW1 e outra para NW2. Siga as mesmas etapas para ambas as regras de balanceamento de carga.
- Endereço IP de front-end: Selecionar o IP de front-end
- Pool de back-end: Selecionar o pool de back-end
- Verifique "Portas de alta disponibilidade"
- Protocolo: TCP
- Investigação de Integridade: crie uma investigação de integridade com os detalhes abaixo (aplica-se ao NW1 e ao NW2)
- Protocolo: TCP
- Porta: [por exemplo: 61000 para NW1, 61001 para NW2]
- Intervalo: 5
- Limite de Investigação: 2
- Tempo limite ocioso (minutos): 30
- Verificar "Habilitar IP Flutuante"
Observação
A propriedade de configuração Investigação de integridade, também conhecida como "Limite não íntegro" no portal, não é respeitada. Portanto, para controlar o número de investigações consecutivas bem-sucedidas ou com falha, defina a propriedade "probeThreshold" como 2. No momento, não é possível definir essa propriedade usando o portal do Azure, portanto, use o comando da CLI do Azure ou do PowerShell.
Observação
Quando as VMs sem endereços IP públicos forem colocadas no pool de back-end do Standard Azure Load Balancer (sem endereço IP público), não haverá nenhuma conectividade de saída com a Internet se não houver configuração adicional a fim de permitir o roteamento para pontos de extremidade públicos. Para obter detalhes sobre como alcançar conectividade de saída, confira Conectividade de ponto de extremidade público para Máquinas Virtuais usando o Azure Standard Load Balancer em cenários de alta disponibilidade do SAP.
Importante
- Não habilite carimbos de data/hora de TCP em VMs do Azure posicionadas de forma subjacente em relação ao Azure Load Balancer. Habilitar carimbos de data/hora de TCP fará com que as investigações de integridade falhem. Defina o parâmetro de
net.ipv4.tcp_timestamps
a0
. Para obter detalhes, veja Investigações de integridade do Load Balancer. - Para evitar que o saptune altere o valor
net.ipv4.tcp_timestamps
definido manualmente de0
de volta para1
, você deve atualizar a versão do saptune para 3.1.1 ou superior. Para obter mais detalhes, confira Saptune 3.1.1 - Preciso atualizar?.
Criar cluster do Pacemaker
Siga as etapas em Configurar Pacemaker no SUSE Linux Enterprise Server no Azure para criar um cluster Pacemaker básico para esse servidor NFS.
Configurar o servidor NFS
Os itens a seguir são prefixados com [A] – aplicável a todos os nós, [1] – aplicável somente ao nó 1 ou [2] – aplicável somente ao nó 2.
[A] Configurar a resolução de nome do host
Você pode usar um servidor DNS ou modificar /etc/hosts em todos os nós. Este exemplo mostra como usar o arquivo /etc/hosts. Substitua o endereço IP e o nome do host nos comandos a seguir
sudo vi /etc/hosts
Insira as seguintes linhas para /etc/hosts. Altere o endereço IP e o nome do host para corresponder ao seu ambiente
# IP address of the load balancer frontend configuration for NFS 10.0.0.4 nw1-nfs 10.0.0.5 nw2-nfs
[A] Habilitar o servidor NFS
Criar a entrada de exportação NFS de raiz
sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports' sudo mkdir /srv/nfs/
[A] Instalar componentes drbd
sudo zypper install drbd drbd-kmp-default drbd-utils
[A] Criar uma partição para os dispositivos drbd
Relacionar todos os discos disponíveis
sudo ls /dev/disk/azure/scsi1/ # Example output # lun0 lun1
Criar partições para cada disco de dados
sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0' sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
[A] Criar configurações de LVM
Relacionar todos as particições disponíveis
ls /dev/disk/azure/scsi1/lun*-part* # Example output # /dev/disk/azure/scsi1/lun0-part1 /dev/disk/azure/scsi1/lun1-part1
Criar volumes LVM para cada partição
sudo pvcreate /dev/disk/azure/scsi1/lun0-part1 sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1 sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS sudo pvcreate /dev/disk/azure/scsi1/lun1-part1 sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1 sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
[A] Configurar drbd
sudo vi /etc/drbd.conf
Certifique-se de que o arquivo drbd.conf contém as duas linhas a seguir
include "drbd.d/global_common.conf"; include "drbd.d/*.res";
Altere a configuração global drbd
sudo vi /etc/drbd.d/global_common.conf
Adicione as seguintes entradas para o manipulador e seção net.
global { usage-count no; } common { handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh"; split-brain "/usr/lib/drbd/notify-split-brain.sh root"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; } startup { wfc-timeout 0; } options { } disk { md-flushes yes; disk-flushes yes; c-plan-ahead 1; c-min-rate 100M; c-fill-target 20M; c-max-rate 4G; } net { after-sb-0pri discard-younger-primary; after-sb-1pri discard-secondary; after-sb-2pri call-pri-lost-after-sb; protocol C; tcp-cork yes; max-buffers 20000; max-epoch-size 20000; sndbuf-size 0; rcvbuf-size 0; } }
[A] Crie os dispositivo drbd do NFS
sudo vi /etc/drbd.d/NW1-nfs.res
Inserir a configuração para o novo dispositivo drbd e sair
resource NW1-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } }
sudo vi /etc/drbd.d/NW2-nfs.res
Inserir a configuração para o novo dispositivo drbd e sair
resource NW2-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } }
Criar o dispositivo drbd e iniciá-lo
sudo drbdadm create-md NW1-nfs sudo drbdadm create-md NW2-nfs sudo drbdadm up NW1-nfs sudo drbdadm up NW2-nfs
[1] Ignorar a sincronização inicial
sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
[1] Definir o nó principal
sudo drbdadm primary --force NW1-nfs sudo drbdadm primary --force NW2-nfs
[1] Aguardar até que os novos dispositivos drbd sejam sincronizados
sudo drbdsetup wait-sync-resource NW1-nfs sudo drbdsetup wait-sync-resource NW2-nfs
[1] Criar sistemas de arquivos nos dispositivos drbd
sudo mkfs.xfs /dev/drbd0 sudo mkdir /srv/nfs/NW1 sudo chattr +i /srv/nfs/NW1 sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1 sudo mkdir /srv/nfs/NW1/sidsys sudo mkdir /srv/nfs/NW1/sapmntsid sudo mkdir /srv/nfs/NW1/trans sudo mkdir /srv/nfs/NW1/ASCS sudo mkdir /srv/nfs/NW1/ASCSERS sudo mkdir /srv/nfs/NW1/SCS sudo mkdir /srv/nfs/NW1/SCSERS sudo umount /srv/nfs/NW1 sudo mkfs.xfs /dev/drbd1 sudo mkdir /srv/nfs/NW2 sudo chattr +i /srv/nfs/NW2 sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2 sudo mkdir /srv/nfs/NW2/sidsys sudo mkdir /srv/nfs/NW2/sapmntsid sudo mkdir /srv/nfs/NW2/trans sudo mkdir /srv/nfs/NW2/ASCS sudo mkdir /srv/nfs/NW2/ASCSERS sudo mkdir /srv/nfs/NW2/SCS sudo mkdir /srv/nfs/NW2/SCSERS sudo umount /srv/nfs/NW2
[A] Configuração da detecção de divisão de dupla personalidade drbd
Ao usar o drbd para sincronizar os dados de um host para outro, pode ocorrer a chamada divisão de dupla personalidade. Uma divisão de dupla personalidade é um cenário em que ambos os nós de cluster promoveram o dispositivo drbd para ser o primário e perderam a sincronia. Esta pode ser uma situação rara, mas é importante lidar e resolver uma divisão de dupla personalidade o mais rápido possível. Portanto, é importante ser notificado quando ocorrer uma divisão de dupla personalidade.
Leitura da documentação oficial drbd sobre como configurar uma notificação de dados de dupla personalidade.
Também é possível recuperar automaticamente a partir de um cenário de divisão de dupla personalidade. Para obter mais informações, leia Políticas de recuperação de dupla personalidade automática
Configurar a estrutura do cluster
[1] Adicionar o dispositivo de drbd do NFS ao NW1 do sistema para a configuração do cluster
Importante
Testes recentes revelaram situações em que o netcat deixa de responder às solicitações devido à lista de pendências e à limitação dele de manipular apenas uma conexão. O recurso netcat deixa de escutar as solicitações do Azure Load Balancer e o IP flutuante fica não disponível.
Para os clusters existentes do Pacemaker, recomendamos a substituição do netcat pelo socat. No momento, é recomendável usar o agente de recursos do azure-lb, que faz parte do pacote resource-agents, com os seguintes requisitos de versão do pacote:- Para o SLES 12 SP4/SP5, a versão deve ser pelo menos resource-agents-4.3.018.a7fb5035-3.30.1.
- Para o SLES 15/15 SP1, a versão deve ser pelo menos resource-agents-4.3.0184.6ee15eb2-4.13.1.
Observe que a alteração exigirá um breve tempo de inatividade.
Para clusters do Pacemaker existentes, se a configuração já foi alterada para usar socat conforme descrito em Proteção de Detecção do Azure Load Balancer, não há nenhum requisito para mudar imediatamente para o agente de recursos azure-lb.sudo crm configure rsc_defaults resource-stickiness="200" # Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW1_nfs \ ocf:linbit:drbd \ params drbd_resource="NW1-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW1_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd0 \ directory=/srv/nfs/NW1 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive nfsserver systemd:nfs-server \ op monitor interval="30s" sudo crm configure clone cl-nfsserver nfsserver sudo crm configure primitive exportfs_NW1 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW1" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW1_nfs IPaddr2 \ params ip=10.0.0.4 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW1_nfs \ fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs sudo crm configure order o-NW1_drbd_before_nfs inf: \ ms-drbd_NW1_nfs:promote g-NW1_nfs:start sudo crm configure colocation col-NW1_nfs_on_drbd inf: \ g-NW1_nfs ms-drbd_NW1_nfs:Master
[1] Adicionar o dispositivo de drbd do NFS ao NW2 do sistema para a configuração do cluster
# Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW2_nfs \ ocf:linbit:drbd \ params drbd_resource="NW2-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW2_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd1 \ directory=/srv/nfs/NW2 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive exportfs_NW2 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW2" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW2_nfs IPaddr2 \ params ip=10.0.0.5 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW2_nfs \ fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs sudo crm configure order o-NW2_drbd_before_nfs inf: \ ms-drbd_NW2_nfs:promote g-NW2_nfs:start sudo crm configure colocation col-NW2_nfs_on_drbd inf: \ g-NW2_nfs ms-drbd_NW2_nfs:Master
A opção
crossmnt
nos recursos de clusterexportfs
está presente em nossa documentação para compatibilidade com versões anteriores do SLES.[1] Desabilitar o modo de manutenção
sudo crm configure property maintenance-mode=false
Próximas etapas
- Instale o SAP ASCS e o banco de dados
- Planejamento e implementação de Máquinas Virtuais do Azure para o SAP
- Implantação de Máquinas Virtuais do Azure para SAP
- Implantação do DBMS de Máquinas Virtuais do Azure para SAP
- Para saber como estabelecer a alta disponibilidade e o plano de recuperação de desastre do SAP HANA em VMs do Azure, confira Alta disponibilidade do SAP HANA em VMs (Máquinas Virtuais) do Azure