PowerFlex: Konfiguration af gateway med høj tilgængelighed kan forårsage en forsinkelse i kommandorelæet, når den primære gateway er nede
Summary: API-automatisering eller manuelle handlinger på klientsiden tager længere tid end forventet at fuldføre over den sekundære gateway (GW) end via den primære GW.
Symptoms
Når den primære GW er overført og modtager anmodninger på den sekundære GW, tager afsendelsen af en anmodning længere tid at fuldføre handlingen.
Eksempel på scenarie:
- En kunde bruger Cinder (OpenStack) som et klientsideprogram til backend-lagringskommunikation.
- En bruger sender en API-anmodning om at oprette en ny diskenhed på systemet.
- Anmodningen modtages på P-GW (Primary), overføres til MDM, og enheden oprettes.
- Hele operationen fra klienten til en vellykket gennemførelse tager X sekunder (afhængigt af brugernes netværk og miljø).
- Brugeren sender en UNMAP-anmodning på den nyoprettede diskenhed.
- GW-failover promoverer S-GW (sekundær) for at modtage anmodninger (failover kan udføres manuelt eller som et resultat af, at den primære tjeneste eller netværk eller begge dele går ned).
- Brugeren sender endnu en API-anmodning for at oprette en ny diskenhed på systemet.
- Anmodningen modtages på S-GW, overføres til MDM, og enheden oprettes med succes.
- Hele operationen fra klienten til en vellykket gennemførelse tager X + Y sekunder.
Eksempelscenariet består af tre handlinger: "Create Volume", "Map Volume" og "Unmap Volume" kører den ene efter den anden.
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
Påvirkning
API-automatisering eller manuelle handlinger på klientsiden tager længere tid end forventet at gennemføre.
Cause
PowerFlex Gateway, der kører på Apache Tomcat, indeholder flere PowerFlex-funktioner, herunder en REST-gateway, PowerFlex-installationsprogram og SNMP-trap-afsender. Hvis du vil have høj tilgængelighed, når to Apache Tomcat-forekomster (PowerFlex gateway-servere) er konfigureret, skal du bruge Apache httpd. Hvis du vil forhindre et enkelt fejlpunkt i Apache httpd, kan du bruge en failover httpd-forekomst, der er grupperet ved hjælp af en af de mange tilgængelige klyngestakke.
I en kundes miljø, der bruger RHEL til GW'erne, bruger den korrekte konfiguration Keepalived og HAProxy.
Der bruges en delt (virtuel) IP-adresse til begge Apache httpd-servere. Begge Apache httpd-servere har den samme konfiguration, bortset fra at den ene er defineret i Keepalived-konfigurationen som den primære, mens den anden er defineret som den sekundære. Hvis den primære mislykkes, bliver den sekundære den primære, hvilket betyder, at brugerne ikke bemærker noget tab af service.
I et RHEL/CentOS-miljø overvåger Keepalived-tjenesten PowerFlex Gateway-serverne og bestemmer, hvilken server klientanmodningen skal videresendes til. HAProxy og Keepalived er konfigureret på RHEL/CentOS for at give PowerFlex Gateway høj tilgængelighed.
Den Keepalived
Open source-værktøj bruges til keep-alive-komponenten og er ansvarlig for at overvåge status for HAProxy og konfigurere den virtuelle IP-adresse efter behov.
Du kan finde flere oplysninger om Keepalived under http://www.keepalived.org.
The HAProxy
Open source-værktøj, der fungerer som en belastningsbalancer for PowerFlex Gateway, overvåger PowerFlex-systemerne og omdirigerer trafik, hvis en node går ned.
Du kan finde flere oplysninger om HAProxy under http://www.haproxy.org.
Standardkonfigurationen af HAProxy er indstillet til at have den sekundære GW, når du ejer den virtuelle IP, for at forsøge at overføre den modtagne API-anmodning igen til den primære ("retries"-værdi er indstillet til 3), og når den er nede, for at fortsætte med at sende den over til backend (MDM).
Resolution
Som det kan ses i eksemplet på HAProxy-konfigurationen nedenfor, er standard-HAProxy under Global settings sektion, er værdien 'retries' indstillet til 3, hvilket betyder, at den forsøger at prøve kommandoerne til den primære GW igen tre gange i et sekund hver.
Det gør gentagelsesopkaldet til den primære GW, fordi under backend siogateway sektion, er værdien 'balance' indstillet til 'første', hvilket ville være den primære GW.
Ændring af værdierne for 'tilstand' og 'option' og tilføjelse af 'server' egenskaber er også ude af største betydning:
- Værdierne 'tilstand' og 'option' skal ændres til henholdsvis 'http' og 'httpchk'.
- »Server«-karakteristika bør tilføjes med »check fall 5 inter 2000 RISE 2«.
Når værdierne nævnt ovenfor er ændret og tilføjet, falder latenstiden, hvis ikke forsvinder helt.
HAProxy-indstillingerne kan tilpasses kundernes miljømæssige behov. Hvis en kunde har brug for, at deres programkald er hurtigere, kan de justere HAProxy-indstillingerne, så de passer til deres forretningsbehov.
Standardkonfigurationsfil for HAProxy:
haproxy.cfg FØR redigering:
...
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 EFTER redigering:
...
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