PowerFlex: Gateway High Availability -määritys aiheuttaa 401-virheitä REST-asiakkaissa

Summary: REST API -asiakas vastaanottaa "401: Luvaton" -virhe, kun sekä Gateway/Apache -palvelut ovat käynnissä.

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 -asiakas vastaanottaa "401: Luvaton" -virhe, kun sekä Gateway/Apache -palvelut ovat käynnissä.

Yksi esimerkki REST API -asiakkaasta on OpenStack cinder. Tämä ongelma saattaa aiheuttaa tiettyjen OpenStackin ScaleIO-asematoimintojen (map, unmap jne.) epäonnistumisen.

Jokaista kymmentä onnistunutta REST API -pyyntöä kohden yksi epäonnistuu. Esimerkiksi Primary Apache -palvelun mod_jk.log näkyy:

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 näyttää: 

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

Tämä on asiakirjassa oleva virhe. Tämän asiakirjan workers.properties-määritys sisältää kuormituksentasausasetukset kahden yhdyskäytävän (Tomcat) esiintymän välillä, ja niiden lbfactor-arvoksi on määritetty 10 ja 1. Tämä tarkoittaa, että Apache-palvelu ohjaa saapuvat pyynnöt kahteen yhdyskäytävään suhteessa 10: 1. Koska REST API -asiakas hankkii tunnuksen yhden yhdyskäytävän kautta eikä tunnuksia jaeta yhdyskäytävien kesken, tällä tunnuksella toiseen yhdyskäytävään lähetetty pyyntö epäonnistuu 401:ssä.

Muistiinpano: Jos asiakas hankkii tunnuksen yhdyskäytävältä lbfactor 1: llä, vikaprosentti on noin 91%.

Resolution

Vaihtoehtoinen menetelmä
Käytä seuraavaa workers.properties-tiedostoa asiakirjassa olevan tiedoston sijaan. Tämä määrittää kaksi yhdyskäytävää aktiivisessa valmiustilassa:

** /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



Tämä määritys määrittää koneen 2 ensisijaiseksi ja työntekijä 1 valmiustilaksi. Tärkeimmät erot tämän kokoonpanon ja asiakirjan välillä ovat:

  • worker.machine1.activation=disabled

Tämä asettaa työntekijän koneen 1 valmiustilaan, eikä koneeseen 1 lähetetä pyyntöjä oletusarvoisesti.
  • worker.machine2.redirect=machine1
Oletusarvoisesti kone2 on aktivoitu ja vastaanottaa pyyntöjä. Jos kone2 epäonnistuu, pyyntö ohjataan koneeseen1.
  • worker.machine#.lbfactor=1

Koska tämä on aktiivinen valmiustila, erilainen lbfactors Määritä, jos sitä ei vaadita molemmille työntekijöille.
 
 

Tällä kokoonpanolla:

  • Kun molemmat yhdyskäytävät ovat käytössä, kaikki pyynnöt ohjataan worker2:lle, eikä 401:tä pitäisi olla.
  • Kun worker2 menee alas, pyynnöt ohjataan worker1:lle. REST-asiakas vastaanottaa 401:n ja voi kirjautua uudelleen REST API -palveluun ja jatkaa.
  • Kun worker2 tulee takaisin ja mod_jk moduuli havaitsee sen, se ohjaa pyynnöt uudelleen worker2:lle, ja REST-asiakas vastaanottaa toisen 401:n, mutta voi kirjautua uudelleen RESET API -palveluun ja jatkaa.

Huomautus: Molemmissa Apache-palveluissa on oltava samat kokoonpanot workers.properties tiedosto. Apache-palvelut on myös perustettu active-standby klusteri, mukaan keepalivedja mod_jk Apache-palvelun moduuli vastaa REST API -pyyntöjen ohjaamisesta yhdyskäytäväpalveluihin, jotka perustuvat yllä olevaan määritykseen.

Tämä on dokumentaatiovirhe. Tätä tietämyskannan artikkelia voidaan käyttää ennen asiakirjan korjaamista.

Additional Information

Keepalive-kokoonpanoa voidaan myös parantaa, koska se ei välttämättä valvo apache / httpd-palveluita oikein.

Keepalived.conf käyttää komentosarjaa "killall -0 apache2". Tämä palauttaa arvon 0 (onnistui), jos nimessä on jokin prosessi, jonka nimessä on "apache2", kuten "tail -f /var/log/apache2/mod_jk.log."

Voit valvoa apache2-palvelua oikein käyttämällä "systemctl --no-pager status apache2" (Ubuntu) tai "systemctl status httpd" (CentOS/RedHat).

Komentosarjana käytettävän komennon on palautettava 0, jos palvelu apache2/httpd on käynnissä, ja none-zero, jos se on pysähtynyt.

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.