PowerFlex: A configuração de alta disponibilidade do gateway pode causar um atraso na retransmissão de comando quando o gateway primário está inativo

Summary: A automação da API do lado do cliente ou as operações manuais levam mais tempo do que o esperado para serem concluídas no Gateway secundário (GW) do que através do GW primário.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Depois que o GW principal sofre failover e recebe solicitações no GW secundário, o envio de uma solicitação leva mais tempo para concluir a operação.

Exemplo de cenário:

  • Um cliente está usando o Cinder (OpenStack) como um aplicativo do lado do client para comunicação de armazenamento de back-end.
  • Um usuário envia uma solicitação de API para criar um novo volume no sistema.
  • A solicitação é recebida em P-GW (principal), transmitida ao MDM, e o volume é criado com sucesso.
  • Toda a operação, desde o client até a conclusão bem-sucedida, leva X segundos (dependendo da rede e do ambiente dos usuários).
  • O usuário envia uma solicitação UNMAP no volume recém-criado. 
  • O failover de GW promove S-GW (secundário) para receber solicitações (o failover pode ser feito manualmente ou como resultado da inatividade do serviço ou da rede do primário ou de ambos).
  • O usuário envia outra solicitação de API para criar um novo volume no sistema.
  • A solicitação é recebida em S-GW, transmitida ao MDM e o volume é criado com sucesso.
  • Toda a operação, desde o client até a conclusão bem-sucedida, leva X+Y segundos.

O cenário de exemplo consiste em três operações: "Create Volume", "Map Volume" e "Unmap Volume", sejam executados um após o outro.
 

P-GW

operations.log

2021-06-02 17:09:17,413 [https-jsse-nio-28443-exec-8] INFO  audit - 1.1.1.1:/api/types/Volume/instances {volumeType=ThinProvisioned, name=9g/MBZDNTYioDl1bTD34cw==, storagePoolId=fa75c1c100000000, compressionMethod=Normal, protectionDomainId=0089dc6000000000, volumeSizeInKb=5242880}
2021-06-02 17:09:17,601 [https-jsse-nio-28443-exec-3] INFO  audit - 1.1.1.1:/api/instances/Volume::5b273f9b00000005/action/addMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941, allowMultipleMappings=TRUE}
2021-06-02 17:09:19,270 [https-jsse-nio-28443-exec-5] INFO  audit - 1.1.1.1:/api/instances/Volume::5b273f9b00000005/action/removeMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941}

 

cinder-volume.log

2021-06-02 17:09:17.428 136 DEBUG cinder.volume.drivers.dell_emc.powerflex.rest_client [req-747562dc-0abd-472f-bff4-f739c52d88d2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] REST Request: https://1.1.1.254:443/api/types/Volume/instances with params {"protectionDomainId": "0089dc6000000000", "storagePoolId": "fa75c1c100000000", "name": "9g/MBZDNTYioDl1bTD34cw==", "volumeType": "ThinProvisioned", "volumeSizeInKb": "5242880", "compressionMethod": "Normal"} _check_response /usr/lib/python3.6/site-packages/cinder/volume/drivers/dell_emc/powerflex/rest_client.py:518
2021-06-02 17:09:17.559 136 INFO os_brick.initiator.connectors.scaleio [req-747562dc-0abd-472f-bff4-f739c52d88d2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] map volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9b00000005/action/addMappedSdc
2021-06-02 17:09:19.241 136 INFO os_brick.initiator.connectors.scaleio [req-747562dc-0abd-472f-bff4-f739c52d88d2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] Unmap volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9b00000005/action/removeMappedSdc

S-GW

operations.log

2021-06-02 16:55:00,452 [https-jsse-nio-28443-exec-9] INFO  audit - 1.1.1.2:/api/types/Volume/instances {volumeType=ThinProvisioned, name=Ik6i/JD8TeKrTHtUg9HQrw==, storagePoolId=fa75c1c100000000, compressionMethod=Normal, protectionDomainId=0089dc6000000000, volumeSizeInKb=5242880}
2021-06-02 16:55:09,665 [https-jsse-nio-28443-exec-4] INFO  audit - 1.1.1.2:/api/instances/Volume::5b273f9a00000004/action/addMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941, allowMultipleMappings=TRUE}
2021-06-02 16:55:20,373 [https-jsse-nio-28443-exec-9] INFO  audit - 1.1.1.2:/api/instances/Volume::5b273f9a00000004/action/removeMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941}

 

cinder-volume.log

2021-06-02 16:55:00.461 136 DEBUG cinder.volume.drivers.dell_emc.powerflex.rest_client [req-ece34b6a-497f-4826-9c47-13f76773eaf2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] REST Request: https://1.1.1.254:443/api/types/Volume/instances with params {"protectionDomainId": "0089dc6000000000", "storagePoolId": "fa75c1c100000000", "name": "Ik6i/JD8TeKrTHtUg9HQrw==", "volumeType": "ThinProvisioned", "volumeSizeInKb": "5242880", "compressionMethod": "Normal"} _check_response /usr/lib/python3.6/site-packages/cinder/volume/drivers/dell_emc/powerflex/rest_client.py:518
2021-06-02 16:55:00.594 136 INFO os_brick.initiator.connectors.scaleio [req-ece34b6a-497f-4826-9c47-13f76773eaf2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] map volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9a00000004/action/addMappedSdc
2021-06-02 16:55:11.320 136 INFO os_brick.initiator.connectors.scaleio [req-ece34b6a-497f-4826-9c47-13f76773eaf2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] Unmap volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9a00000004/action/removeMappedSdc

  


      Impacto

      A automação da API do lado do cliente ou as operações manuais levam mais tempo do que o esperado para serem concluídas.

      Cause

      O PowerFlex Gateway, que é executado no Apache Tomcat, hospeda vários recursos do PowerFlex, inclusive um gateway REST, instalador do PowerFlex e emissor de trap SNMP. Para obter alta disponibilidade quando duas instâncias do Apache Tomcat (servidores PowerFlex Gateway) estiverem configuradas, use o httpd do Apache. Para impedir um ponto único de falha no httpd do Apache, você pode usar uma instância httpd de failover em cluster usando uma das muitas pilhas de cluster disponíveis.

      No ambiente de um cliente que usa RHEL para GWs, a configuração correta usa Keepa lived e HAProxy.

      Um endereço IP compartilhado (virtual) é usado para ambos os servidores httpd Apache. Ambos os servidores httpd Apache têm a mesma configuração, exceto que um é definido na configuração Keepalived como Primário, enquanto o outro é definido como Secundário. Se a primária falhar, a secundária se tornará a principal, o que significa que os usuários não notam nenhuma perda de serviço.

      Em um ambiente RHEL/CentOS, o serviço Keepalived monitora os servidores do PowerFlex Gateway e determina para qual servidor encaminhar a solicitação do client. HAProxy e Keepapalived são configurados no RHEL/CentOS para fornecer o PowerFlex Gateway com alta disponibilidade.

      O Keepa  Ferramenta de código aberto é usado para o componente keep-alive e é responsável por monitorar o status do HAProxy e configurar o endereço IP virtual conforme necessário.
      Para obter mais informações sobre Keepalived, consulte http://www.keepalived.org.

      O HAProxy  Ferramenta de código aberto, que serve como um balanceador de carga para o PowerFlex Gateway, monitora os sistemas PowerFlex e redireciona o tráfego se um nó ficar inativo.
      Para obter mais informações sobre HAProxy, consulte http://www.haproxy.org.

      A configuração padrão do HAProxy é definir para ter o GW secundário ao possuir o IP virtual, para tentar transmitir novamente a solicitação de API recebida para o primário (o valor de "repetições" é definido como 3) e, quando ele estiver inativo, para continuar a enviá-la para o back-end (MDM).

      Resolution

      Como pode ser visto no exemplo de configuração HAProxy abaixo, o HAProxy padrão sob o Global settings , o valor de "repetições" é definido como 3, o que significa que ele tenta repetir os comandos para o GW primário três vezes por um segundo cada.

      Ele faz a chamada de repetição para o GW principal porque sob o backend siogateway , o valor de 'saldo' é definido como 'primeiro', que seria o GW Primário.

      Alterar os valores para 'mode' e 'option' e adicionar características de 'server' também não são de extrema importância:

      • Os valores 'mode' e 'option' devem ser alterados para 'http' e 'httpchk', respectivamente.
      • As características 'servidor' devem ser adicionadas com 'check fall 5 inter 2000 rise 2'.

      Uma vez que os valores mencionados acima são alterados e adicionados, a latência diminui se não desaparecer completamente.

      As configurações do HAProxy são ajustáveis para as necessidades ambientais dos clientes. Se um cliente precisar que as chamadas de aplicativos sejam mais rápidas, ele poderá ajustar as configurações do HAProxy para atender às necessidades dos negócios.

      Arquivo de configuração padrão para HAProxy:
      haproxy_conf.png

      haproxy.cfg ANTES da edição:

      ...
      defaults
          retries 3
      ...
      backend powerflexgateway
          mode tcp
          balance first
          option ssl-hello-chk
          server gateway1 1.1.1.1:28443 maxconn 256 ssl verify none
          server gateway2 1.1.1.2:28443 maxconn 256 ssl verify none
      
        

      haproxy.cfg APÓS a edição:

      ...
      defaults
          retries 1
      ...
      backend powerflexgateway
          mode http
          balance first
          option httpchk
          server gateway1 1.1.1.1:28443 maxconn 256 ssl verify none check fall 5 inter 2000 rise 2
          server gateway2 1.1.1.2:28443 maxconn 256 ssl verify none check fall 5 inter 2000 rise 2

      Affected Products

      PowerFlex Software
      Article Properties
      Article Number: 000188121
      Article Type: Solution
      Last Modified: 13 Nov 2025
      Version:  4
      Find answers to your questions from other Dell users
      Support Services
      Check if your device is covered by Support Services.