PowerFlex: Konfiguration af Gateway High Availability forårsager 401 fejl på REST-klienter

Summary: REST API-klienten modtager "401: Fejlmeddelelsen Uautoriseret", når begge Gateway/Apache-tjenester kører.

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

REST API-klienten modtager "401: Fejlmeddelelsen Uautoriseret", når begge Gateway/Apache-tjenester kører.

Et eksempel på REST API-klient er OpenStack cinder. Dette problem kan medføre, at visse ScaleIO-diskenhedshandlinger (tilklæbning, afbildning osv.) i OpenStack mislykkes.

For hver 10 vellykkede REST API-anmodninger mislykkes 1. For eksempel viser den primære Apache-tjenestes mod_jk.log:

tail -f /var/log/apache2/mod_jk.log | grep ") status"
[6496:139877463439104] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine2) status = 200
[6497:139877295294208] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine2) status = 200
[6497:139877270116096] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine2) status = 200
[6496:139877429868288] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine1) status = 401 <---
[6497:139877219759872] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine2) status = 200
[6496:139877303686912] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine2) status = 200
[6497:139877228152576] [debug] ajp_unmarshal_response::jk_ajp_common.c (739): (machine2) status = 200



 /var/log/nova/nova-compute.log viser: 

2017-04-05 11:20:36.090 38186 ERROR nova.compute.manager [instance: 20e1036d-daf0-49b9-a228-07a1c48b882d] File "/usr/lib/python2.7/site-packages/os_brick/initiator/connector.py", line 1980, in connect_volume 2017-04-05 11:20:36.090 38186 ERROR nova.compute.manager [instance: 20e1036d-daf0-49b9-a228-07a1c48b882d] self.volume_id = self._get_volume_id() 2017-04-05 11:20:36.090 38186 ERROR nova.compute.manager [instance: 20e1036d-daf0-49b9-a228-07a1c48b882d] File "/usr/lib/python2.7/site-packages/os_brick/initiator/connector.py", line 1879, in _get_volume_id 2017-04-05 11:20:36.090 38186 ERROR nova.compute.manager [instance: 20e1036d-daf0-49b9-a228-07a1c48b882d] raise exception.BrickException(message=msg) 2017-04-05 11:20:36.090 38186 ERROR nova.compute.manager [instance: 20e1036d-daf0-49b9-a228-07a1c48b882d] BrickException: Error getting volume id from name oGXMByctQWesXL8PPKiyBQ==: Unauthorized 2017-04-05 11:20:36.090 38186 ERROR nova.compute.manager [instance: 20e1036d-daf0-49b9-a228-07a1c48b882d]

 

Cause

Dette er en fejl i dokumentet. Konfigurationen workers.properties i dette dokument indeholder en belastningsjusteringsopsætning mellem to Gateway-forekomster (Tomcat), og lbfactor er angivet til 10 og 1 for dem. Dette betyder, at Apache-tjenesten dirigerer indgående anmodninger til de to gateways i forholdet 10: 1. Da REST API-klienten henter et token via én gateway, og tokens ikke deles mellem gateways, mislykkes en anmodning, der sendes til den anden gateway med dette token, med 401.

Seddel: Hvis en klient erhverver et token fra gatewayen med lbfactor 1, er fejlraten ca. 91%.

Resolution

Løsning
Brug følgende workers.properties-fil i stedet for filen i dokumentet. Dermed konfigureres de to gateways i aktiv standbytilstand:

** /etc/apache2/workers.properties ***

worker.list=balance1
worker.machine1.type=ajp13
worker.machine1.host=<ip of GW 1>
worker.machine1.port=8009
worker.machine1.lbfactor=1
worker.machine1.activation=disabled

worker.machine2.type=ajp13
worker.machine2.host=<ip of GW 2>
worker.machine2.port=8009
worker.machine2.lbfactor=1
worker.machine2.redirect=machine1

worker.balance1.type=lb
worker.balance1.balance_workers=machine1,machine2



Denne konfiguration konfigurerer maskine2 som den primære, arbejder1 som standby. De vigtigste forskelle mellem denne konfiguration og dokumentet er:

  • worker.machine1.activation=disabled

Dette sætter medarbejdermaskine 1 i standby, og der sendes som standard ingen anmodninger til maskine1.
  • worker.machine2.redirect=machine1
Som standard aktiveres maskine2 og modtager anmodninger. Hvis maskine2 mislykkes, omdirigeres anmodningen til maskine1.
  • worker.machine#.lbfactor=1

Da dette er en opsætning med aktiv standby, vil en anden lbfactors Opsætning, hvis det ikke er påkrævet for begge arbejdere.
 
 

Med denne konfiguration:

  • Når begge gateways er oppe, sendes alle anmodninger til arbejder2, og der bør ikke være nogen 401.
  • Når arbejder2 går ned, sendes anmodningerne til arbejder1. REST-klienten modtager en 401 og kan logge på REST API-tjenesten igen og fortsætte.
  • Når worker2 kommer tilbage, og mod_jk modul registrerer det, dirigerer det anmodninger til worker2 igen, og REST-klienten modtager yderligere 401, men kan logge på igen for at RESET API-tjenesten og fortsætte.

Bemærk: Begge Apache-tjenester skal have de samme konfigurationer i deres workers.properties fil. Apache-tjenesterne er også konfigureret som en active-standby klynge, af keepalived, og mod_jk modulet i Apache-tjenesten er ansvarlig for at dirigere REST API-anmodninger til gatewaytjenester, der er baseret på ovenstående konfiguration.

Dette er en dokumentationsfejl. Denne KB kan bruges, før dokumentet rettes.

Additional Information

Den keepalived-konfiguration kan også forbedres, da den muligvis ikke overvåger apache/httpd-tjenester korrekt.

keepalived.conf bruger "killall -0 apache2" til "scriptet". Dette returnerer 0 (fuldført), hvis der er en proces med "apache2" i navnet, f.eks. "tail -f /var/log/apache2/mod_jk.log."

For korrekt overvågning af apache2-tjenesten skal du bruge "systemctl --no-pager status apache2" (Ubuntu) eller "systemctl status httpd" (CentOS / RedHat).

Kommandoen, der bruges som "script", skal returnere 0, hvis apache2/httpd-tjenesten kører, og ingen-nul, hvis den er stoppet.

Affected Products

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