PowerFlex: Konfigurasjon av gateway med høy tilgjengelighet kan forårsake en forsinkelse i kommandorelé når primær gateway er nede
Summary: API-automatisering på klientsiden eller manuelle operasjoner tar lengre tid enn forventet å fullføre over Secondary Gateway (GW) enn gjennom den primære GW.
Symptoms
Når den primære GW er feilet over og mottar forespørsler på Secondary GW, tar det lengre tid å sende en forespørsel for å fullføre operasjonen.
Eksempel scenario:
- En kunde bruker Cinder (OpenStack) som en klientapplikasjon for kommunikasjon om serverdellagring.
- En bruker sender en API-forespørsel om å opprette et nytt volum på systemet.
- Forespørselen mottas på P-GW (Primary), overføres til MDM, og volumet opprettes.
- Hele operasjonen fra klienten til en vellykket gjennomføring tar X sekunder (avhengig av brukernes nettverk og miljø).
- Brukeren sender en UNMAP-forespørsel på det nyopprettede volumet.
- GW failover fremmer S-GW (Secondary) til å motta forespørsler (failover kan gjøres manuelt eller som et resultat av primærens tjeneste eller nettverk, eller begge går ned).
- Brukeren sender en ny API-forespørsel om å opprette et nytt volum på systemet.
- Forespørselen mottas på S-GW, overføres til MDM, og volumet opprettes.
- Hele operasjonen fra klienten til en vellykket gjennomføring tar X + Y sekunder.
Eksempelscenariet består av tre operasjoner: "Create Volume", "Map Volume" og "Unmap Volume" kjører etter hverandre.
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
Innvirkning
API-automatisering på klientsiden eller manuelle operasjoner tar lengre tid enn forventet å fullføre.
Cause
PowerFlex-gatewayen, som kjører på Apache Tomcat, er vert for flere PowerFlex-funksjoner, inkludert en REST-gateway, et installasjonsprogram for PowerFlex og en SNMP-felleavsender. Hvis du vil ha høy tilgjengelighet når to Apache Tomcat-forekomster (PowerFlex Gateway-servere) er konfigurert, bruker du Apache httpd. Hvis du vil forhindre et enkelt feilpunkt i Apache httpd, kan du bruke en failover httpd-forekomst som er gruppert ved hjelp av en av de mange tilgjengelige klyngestabelene.
I en kundes miljø som bruker RHEL for GW-ene, bruker riktig konfigurasjon Keepalived-serien og HAProxy.
En delt (virtuell) IP-adresse brukes for begge Apache httpd-serverne. Begge Apache httpd-tjenerne har samme konfigurasjon, bortsett fra at den ene er definert i KeepAlive-konfigurasjonen som den primære, mens den andre er definert som den sekundære. Hvis den primære mislykkes, blir den sekundære den primære, noe som betyr at brukerne ikke merker noe tap av tjeneste.
I et RHEL/CentOS-miljø overvåker Keepalived-tjenesten PowerFlex Gateway-serverne og bestemmer hvilken server klientforespørselen skal videresendes til. HAProxy og Keepalive er konfigurert på RHEL/CentOS for å gi PowerFlex Gateway med høy tilgjengelighet.
Keepa
Verktøy med åpen kildekode brukes for Keep-Alive-komponenten og er ansvarlig for å overvåke statusen til HAProxy og konfigurere den virtuelle IP-adressen etter behov.
For mer informasjon om Keepalived, se http://www.keepalived.org.
Den HAProxy
Verktøy med åpen kildekode, som fungerer som en belastningsfordeling for PowerFlex-gatewayen, overvåker PowerFlex-systemene og omdirigerer trafikk hvis en node går ned.
Hvis du vil ha mer informasjon om HAProxy, kan du se http://www.haproxy.org.
Standardkonfigurasjonen av HAProxy er satt til å ha den sekundære GW når du eier den virtuelle IP-en, for å prøve å overføre den mottatte API-forespørselen til den primære ("forsøk" -verdien er satt til 3), og når den er nede, for å fortsette å sende den over til backend (MDM).
Resolution
Som det fremgår av eksempelet på HAProxy-konfigurasjon nedenfor, vises standard HAProxy under Global settings -delen, er verdien for 'retries' satt til 3, noe som betyr at den prøver å prøve kommandoene på nytt til den primære GW tre ganger i ett sekund hver.
Det gjør det nye forsøket til den primære GW fordi under backend siogateway -delen, er saldoverdien satt til 'først', som vil være den primære GW.
Å endre verdiene for 'modus' og 'alternativ', og legge til 'server' -egenskaper er også ute av største betydning:
- Verdiene 'mode' og 'option' bør endres til henholdsvis 'http' og 'httpchk'.
- "Server"-egenskaper skal legges til med "Check Fall 5 Inter 2000 RISE 2".
Når verdiene nevnt ovenfor er endret og lagt til, reduseres ventetiden hvis den ikke forsvinner helt.
HAProxy-innstillingene er justerbare for kundenes miljøbehov. Hvis en kunde trenger at applikasjonskallene deres er raskere, kan de justere HAProxy-innstillingene slik at de passer til forretningsbehovene deres.
Standard konfigurasjonsfil 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 ETTER 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