PowerFlex: 게이트웨이 고가용성 구성으로 인해 기본 게이트웨이가 다운된 경우 명령 릴레이에서 지연이 발생할 수 있음

Summary: 클라이언트 쪽 API 자동화 또는 수동 작업은 기본 GW를 통하는 것보다 GW(보조 게이트웨이)를 통해 완료하는 데 예상보다 오래 걸립니다.

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

기본 GW가 장애 조치(failover)되고 보조 GW에서 요청을 수신하면 요청을 보내는 데 작업을 완료하는 데 시간이 더 오래 걸립니다.

예제 시나리오:

  • 고객이 Cinder(OpenStack)를 백엔드 스토리지 통신을 위한 클라이언트 측 애플리케이션으로 사용하고 있습니다.
  • 사용자가 시스템에 새 볼륨을 생성하기 위해 API 요청을 보냅니다.
  • P-GW(Primary)에서 요청이 수신되어 MDM으로 전송되고 볼륨이 성공적으로 생성됩니다.
  • 클라이언트에서 성공적인 완료까지의 전체 작업은 X초가 걸립니다(사용자의 네트워크 및 환경에 따라 다름).
  • 사용자가 새로 생성된 볼륨에 UNMAP 요청을 보냅니다. 
  • GW 페일오버는 S-GW(보조)가 요청을 수신하도록 승격합니다(페일오버는 수동으로 수행하거나 기본 서비스나 네트워크 또는 둘 다 다운된 결과로 수행할 수 있음).
  • 사용자가 시스템에 새 볼륨을 생성하기 위해 다른 API 요청을 보냅니다.
  • 요청이 S-GW에서 수신되고 MDM으로 전송되며 볼륨이 성공적으로 생성됩니다.
  • 클라이언트에서 성공적인 완료까지의 전체 작업은 X+Y초가 걸립니다.

예제 시나리오는 다음 세 가지 작업으로 구성됩니다. "Create Volume", "Map Volume", "Unmap Volume"이 차례로 실행됩니다.
 

P-개릴라지(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

  


      영향

      클라이언트 쪽 API 자동화 또는 수동 작업을 완료하는 데 예상보다 오래 걸립니다.

      Cause

      Apache Tomcat에서 실행되는 PowerFlex Gateway는 REST 게이트웨이, PowerFlex 설치 프로그램, SNMP 트랩 발신자를 비롯한 여러 PowerFlex 기능을 호스팅합니다. 두 개의 Apache Tomcat 인스턴스(PowerFlex Gateway 서버)가 구성된 경우 고가용성을 위해 Apache httpd를 사용합니다. Apache httpd에서 단일 장애 지점을 방지하기 위해 사용 가능한 여러 클러스터링 스택 중 하나를 사용하여 클러스터링된 장애 조치 httpd 인스턴스를 사용할 수 있습니다.

      GW에 RHEL을 사용하는 고객 환경에서 올바른 구성은 Keepalived 및 HAProxy를 사용합니다.

      공유(가상) IP 주소는 Apache httpd 서버 모두에 사용됩니다. 두 Apache httpd 서버는 모두 구성이 동일하지만 하나는 Keepalive 구성에서 기본으로 정의되고 다른 하나는 보조로 정의됩니다. 기본이 실패하면 보조가 기본이 되므로 사용자는 서비스 손실을 느끼지 못합니다.

      RHEL/CentOS 환경에서 Keepalived 서비스는 PowerFlex Gateway 서버를 모니터링하고 클라이언트 요청을 전달할 대상 서버를 결정합니다. HAProxy 및 Keepalived는 RHEL/CentOS에서 PowerFlex Gateway에 고가용성을 제공하도록 구성됩니다.

      더 키팔리브(The Keepalived)  오픈 소스 툴 는 keep-alive 구성 요소에 사용되며 HAProxy의 상태를 모니터링하고 필요에 따라 가상 IP 주소를 구성하는 작업을 담당합니다.
      Keepalived에 대한 자세한 내용은 http://www.keepalived.org 를 참조하세요.

      The HAProxy  오픈 소스 툴PowerFlex Gateway의 로드 밸런싱 장치 역할을 하는 는 PowerFlex 시스템을 모니터링하고 노드가 다운되면 트래픽을 리디렉션합니다.
      HAProxy에 대한 자세한 내용은 http://www.haproxy.org 를 참조하세요.

      HAProxy의 기본 구성은 가상 IP를 소유할 때 보조 GW를 갖고, 수신된 API 요청을 기본 서버로 전송을 다시 시도하고("retries" 값이 3으로 설정됨), 중단된 경우 백엔드(MDM)로 전송을 진행하도록 설정됩니다.

      Resolution

      아래의 HAProxy 구성 예에서 볼 수 있듯이 Global settings 섹션에서 'retries' 값은 3으로 설정되며, 이는 각각 1초 동안 기본 GW에 대한 명령을 세 번 다시 시도하려고 시도함을 의미합니다.

      기본 GW에 대한 재시도 호출을 수행합니다. backend siogateway 섹션에서 'balance' 값은 'first'로 설정되며, 이는 기본 GW가 됩니다.

      'mode''option' 의 값을 변경하고 'server' 특성을 추가하는 것도 가장 중요하지 않습니다.

      • 'mode''option' 값은 각각 'http'와 'httpchk'로 변경해야 합니다.
      • '서버' 특성은 'Check Fall 5 Inter 2000 Rise 2'로 추가해야 합니다.

      위에서 언급한 값이 변경되고 추가되면 완전히 사라지지는 않더라도 대기 시간이 줄어듭니다.

      HAProxy 설정은 고객의 환경 요구 사항에 맞게 조정할 수 있습니다. 고객이 애플리케이션 호출을 더 빠르게 수행하기를 원하는 경우 비즈니스 요구 사항에 맞게 HAProxy 설정을 조정할 수 있습니다.

      HAProxy의 기본 구성 파일:
      haproxy_conf.png

      haproxy.cfg 편집하기 전에 :

      ...
      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 편집 :

      ...
      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.