PowerFlex: Yhdyskäytävän korkean käytettävyyden määritys voi viivästyttää komentojen välitystä, kun ensisijainen yhdyskäytävä ei ole toiminnassa
Summary: Asiakaspuolen ohjelmointirajapinnan automatisointi tai manuaaliset toiminnot kestävät odotettua kauemmin toissijaisen yhdyskäytävän (GW) kautta kuin ensisijaisen GW:n kautta.
Symptoms
Kun ensisijainen GW on epäonnistunut ja toissijaisen GW:n pyynnöt vastaanotetaan, pyynnön lähettäminen kestää kauemmin.
Esimerkki skenaariosta:
- Asiakas käyttää Cinderiä (OpenStack) asiakaspuolen sovelluksena taustatallennusviestintään.
- Käyttäjä lähettää API-pyynnön luodakseen uuden aseman järjestelmään.
- Pyyntö vastaanotetaan P-GW: llä (ensisijainen), lähetetään MDM: ään ja asema luodaan onnistuneesti.
- Koko toiminta asiakkaasta onnistuneeseen valmistumiseen kestää X sekuntia (käyttäjän verkosta ja ympäristöstä riippuen).
- Käyttäjä lähettää UNMAP-pyynnön juuri luodulle asemalle.
- GW-vikasietoisuus ylentää S-GW:n (toissijainen) vastaanottamaan pyyntöjä (vikasietoisuus voidaan tehdä manuaalisesti tai seurauksena ensisijaisen palvelun tai verkon tai molempien kaatumisesta).
- Käyttäjä lähettää toisen API-pyynnön luodakseen uuden aseman järjestelmään.
- Pyyntö vastaanotetaan S-GW:llä, lähetetään MDM:ään ja asema luodaan onnistuneesti.
- Koko toimenpide asiakkaasta onnistuneeseen loppuunsaattamiseen kestää X + Y sekuntia.
Esimerkkiskenaario koostuu kolmesta toiminnosta: Create Volume, Map Volume ja Unmap Volume suoritetaan peräkkäin.
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
Vaikutus
Asiakaspuolen ohjelmointirajapinnan automatisointi tai manuaaliset toiminnot kestävät odotettua kauemmin.
Cause
Apache Tomcatissa toimiva PowerFlex-yhdyskäytävä isännöi useita PowerFlex-ominaisuuksia, kuten REST-yhdyskäytävää, PowerFlex-asennusohjelmaa ja SNMP-keskeytyslähetintä. Kun kaksi Apache Tomcat -esiintymää (PowerFlex Gateway -palvelinta) on määritetty, käytä Apache httpd -protokollaa. Voit estää yksittäisen vikapisteen Apache httpd:ssä käyttämällä vikasietoa httpd-esiintymää, joka on klusteroitu käyttämällä jotakin monista käytettävissä olevista klusterointipinoista.
Asiakkaan ympäristössä, joka käyttää RHEL:iä GW:ille, oikea kokoonpano käyttää Keepalive- ja HAProxy-arvoja.
Jaettua (virtuaalista) IP-osoitetta käytetään molemmissa Apache httpd -palvelimissa. Molemmilla Apache httpd -palvelimilla on sama kokoonpano, paitsi että toinen on määritelty Keepalive-kokoonpanossa ensisijaiseksi, kun taas toinen on määritelty toissijaiseksi. Jos ensisijainen epäonnistuu, toissijaisesta tulee ensisijainen, mikä tarkoittaa, että käyttäjät eivät huomaa palvelun menetystä.
RHEL/CentOS-ympäristössä Keepalive-palvelu valvoo PowerFlex Gateway -palvelimia ja määrittää, mihin palvelimeen asiakaspyyntö välitetään. HAProxy ja Keepalived on määritetty RHEL/CentOS:ssä tarjoamaan korkeaa käytettävyyttä PowerFlex Gatewaylle.
The Keepalived
Avoimen lähdekoodin työkalu käytetään Keep Alive -komponenttiin ja vastaa HAProxyn tilan valvonnasta ja virtuaalisen IP-osoitteen määrittämisestä tarpeen mukaan.
Lisätietoja Keepalivedista on kohdassa http://www.keepalived.org.
The HAProxy
Avoimen lähdekoodin työkalu, joka toimii PowerFlex-yhdyskäytävän kuormituksentasaajana, valvoo PowerFlex-järjestelmiä ja ohjaa liikenteen, jos solmu kaatuu.
Lisätietoja HAProxysta on kohdassa http://www.haproxy.org.
HAProxyn oletuskokoonpanoksi on määritetty toissijainen GW, kun omistat virtuaalisen IP-osoitteen, jotta vastaanotettu API-pyyntö voidaan lähettää uudelleen ensisijaiselle ("uudelleenyritykset" -arvoksi on asetettu 3), ja kun se on poissa käytöstä, se lähetetään taustajärjestelmään (MDM).
Resolution
Kuten alla olevasta HAProxy-määrityksen esimerkistä näkyy, oletusarvoinen HAProxy Global settings -osion retries-arvoksi on asetettu 3, mikä tarkoittaa, että se yrittää yrittää ensisijaisen GW:n komentoja uudelleen kolme kertaa yhden sekunnin ajan.
Se tekee uudelleenyrityskutsun ensisijaiseen GW:hen, koska kohdassa backend siogateway -kohdassa, 'saldo' -arvoksi asetetaan 'ensimmäinen', joka olisi ensisijainen GW.
"Tilan" ja "vaihtoehdon" arvojen muuttaminen ja "palvelimen" ominaisuuksien lisääminen eivät myöskään ole äärimmäisen tärkeitä:
- Tila- ja optioarvot olisi muutettava muotoon http ja httpchk.
- "Palvelimen" ominaisuudet olisi lisättävä kohtaan "Check Fall 5 Inter 2000 RISE 2".
Kun yllä mainittuja arvoja muutetaan ja lisätään, viive pienenee, ellei katoa kokonaan.
HAProxy-asetukset ovat säädettävissä asiakkaiden ympäristötarpeiden mukaan. Jos asiakas haluaa sovelluskutsujensa olevan nopeampia, hän voi säätää HAProxy-asetukset liiketoimintatarpeisiinsa sopiviksi.
HAProxyn oletusmääritystiedosto:
haproxy.cfg ENNEN muokkausta:
...
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 MUOKKAUKSEN JÄLKEEN :
...
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