PowerFlex: Nastavení vysoké dostupnosti brány způsobuje v klientech REST chyby 401

Summary: Klient rozhraní REST API obdrží zprávu "401: Unauthorized", když jsou spuštěny obě služby Gateway/Apache.

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

Klient rozhraní REST API obdrží zprávu "401: Unauthorized", když jsou spuštěny obě služby Gateway/Apache.

Jedním z příkladů klienta REST API je OpenStack cinder. Tento problém může způsobit selhání některých operací se svazky ScaleIO (mapování, odmapování atd.)

v OpenStack.Na každých 10 úspěšných požadavků rozhraní REST API 1 selže. Na mod_jk.log primární služby Apache se například zobrazí:

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 zobrazuje: 

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

Jedná se o chybu v dokumentu. Konfigurace workers.properties v tomto dokumentu obsahuje nastavení vyrovnávání zatížení mezi dvěma instancemi brány (tomcat) a faktor lbfactor je pro ně nastaven na 10 a 1. To znamená, že služba Apache směruje příchozí požadavky na dvě brány v poměru 10:1. Vzhledem k tomu, že klient rozhraní REST API získá token prostřednictvím jedné brány a tokeny nejsou sdíleny mezi bránami, požadavek odeslaný do druhé brány s tímto tokenem selže s hodnotou 401.

Poznámka: Pokud klient získá token z brány s faktorem lbfactor 1, míra selhání je přibližně 91 %.

Resolution

Alternativní řešení
Místo souboru v dokumentu použijte následující soubor workers.properties . Tím se obě brány nastaví do aktivního pohotovostního režimu:

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



Tato konfigurace nastaví počítač2 jako primární, worker1 jako pohotovostní. Hlavní rozdíly mezi touto konfigurací a dokumentem jsou:

  • worker.machine1.activation=disabled

Tím se pracovní počítač1 přepne do pohotovostního režimu a do počítače1 se ve výchozím nastavení neodesílají žádné požadavky.
  • worker.machine2.redirect=machine1
Ve výchozím nastavení je machine2 aktivován a přijímá požadavky. Pokud machine2 selže, požadavek se přesměruje na machine1.
  • worker.machine#.lbfactor=1

Jelikož se jedná o nastavení aktivního pohotovostního režimu, lbfactors nastavení, pokud není vyžadováno pro oba pracovníky.
 
 

S touto konfigurací:

  • Když jsou obě brány v provozu, všechny požadavky se směrují na worker2 a neměla by být k dispozici žádná hodnota 401.
  • Když worker2 přejde mimo provoz, požadavky se směrují na worker1. Klient REST obdrží kód 401 a může se znovu přihlásit ke službě REST API a pokračovat.
  • Když se worker2 vrátí a modul mod_jk ho detekuje, znovu přesměruje požadavky na worker2 a klient REST obdrží další 401, ale může se znovu přihlásit ke službě RESET API a pokračovat.

Poznámka: Obě služby Apache musí mít ve svých službách stejné konfigurace workers.properties . Služby Apache jsou také nastaveny jako active-standby cluster, podle keepaliveda mod_jk modul ve službě Apache je zodpovědný za směrování požadavků REST API na služby brány, které jsou založeny na výše uvedené konfiguraci.

Jedná se o chybu v dokumentaci. Tento článek znalostní databáze lze použít před opravou dokumentu.

Additional Information

Keepalive konfiguraci je také možné vylepšit, protože nemusí správně monitorovat služby apache/httpd.

Keepalived.conf používá pro "skript" "killall -0 apache2". Vrátí se hodnota 0 (úspěch), pokud existuje nějaký proces, který má v názvu "apache2", například "tail -f /var/log/apache2/mod_jk.log."

Chcete-li správně monitorovat službu apache2 , použijte příkaz "systemctl --no-pager status apache2" (Ubuntu) nebo "systemctl status httpd" (CentOS/RedHat).

Příkaz použitý jako "script" musí vrátit hodnotu 0, pokud je služba apache2/httpd spuštěna, a žádnou nulu, pokud se služba zastavila.

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.