PowerFlex: Ağ Geçidi Yüksek Kullanılabilirlik kurulumu, REST istemcilerinde 401 hatalarına neden oluyor

Summary: REST API istemcisi "401: Her iki Ağ Geçidi/Apache hizmeti çalışırken "yetkisiz" hatası.

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 istemcisi "401: Her iki Ağ Geçidi/Apache hizmeti çalışırken "yetkisiz" hatası.

REST API istemcisinin bir örneği OpenStack cinder'dır. Bu sorun, OpenStack'teki belirli ScaleIO birim işlemlerinin (eşleme, eşlemeyi kaldırma vb.) başarısız olmasına neden olabilir.

Her 10 başarılı REST API isteğinden 1'i başarısız olur. Örneğin, Birincil Apache hizmetinin mod_jk.log şunları gösterir:

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 şunu gösterir: 

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

Bu, belgedeki bir hatadır. Bu belgedeki workers.properties yapılandırması, iki Ağ Geçidi (Tomcat) örneği arasında bir yük dengeleme kurulumu içerir ve lbfactor bunlar için 10 ve 1 olarak ayarlanır. Bu, Apache hizmetinin gelen istekleri iki Ağ Geçidine 10:1 oranında yönlendirdiği anlamına gelir. REST API istemcisi bir Ağ Geçidi üzerinden bir belirteç aldığından ve belirteçler Ağ Geçitleri arasında paylaşılmadığından, bu belirteçle ikinci Ağ Geçidine gönderilen istek 401 ile başarısız olur.

Not: Bir istemci, lbfactor 1 ile Ağ Geçidinden bir belirteç alırsa, başarısızlık oranı yaklaşık% 91'dir.

Resolution

Geçici
çözümBelgedeki dosya yerine aşağıdaki workers.properties dosyasını kullanın. Bu, iki Ağ Geçidini etkin bekleme moduna ayarlar:

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



Bu yapılandırma, makine2'yi birincil, çalışan1'i yedek olarak ayarlar. Bu yapılandırma ile belge arasındaki temel farklar şunlardır:

  • worker.machine1.activation=disabled

Bu, çalışan makine1'i bekleme moduna alır ve makine1'e varsayılan olarak hiçbir istek gönderilmez.
  • worker.machine2.redirect=machine1
Varsayılan olarak makine2 etkinleştirilir ve istekleri alır. Makine2 başarısız olursa, istek makine1'e yönlendirilir.
  • worker.machine#.lbfactor=1

Bu bir aktif-bekleme kurulumu olduğundan, farklı bir lbfactors Her iki çalışan için de gerekli değilse kurulum.
 
 

Bu yapılandırma ile:

  • Her iki Ağ Geçidi de çalıştığında, tüm istekler çalışan2'ye yönlendirilir ve 401 olmamalıdır.
  • worker2 kapandığında, istekler worker1'e yönlendirilir. REST istemcisi 401 alır ve REST API hizmetinde tekrar oturum açıp devam edebilir.
  • worker2 geri geldiğinde ve mod_jk modülü bunu algıladığında, istekleri tekrar worker2'ye yönlendirir ve REST istemcisi başka bir 401 alır, ancak RESET API hizmetinde tekrar oturum açabilir ve devam edebilir.

Not: Her iki Apache hizmetinin de kendi yapılandırmalarında aynı yapılandırmalara sahip olması gerekir. workers.properties dosyasında adlandırma çakışmalarını önlemek üzere hedef sistem için farklı uygulamaların farklı adlar kullanmasını gerekli hale getirme. Apache hizmetleri ayrıca bir active-standby küme, tarafından keepalivedve mod_jk Apache hizmetindeki modül, REST API isteklerini yukarıdaki yapılandırmaya dayalı olarak Ağ Geçidi hizmetlerine yönlendirmekten sorumludur.

Bu bir dokümantasyon hatasıdır. Bu KB, belge düzeltilmeden önce kullanılabilir.

Additional Information

Apache/httpd hizmetlerini doğru şekilde izleyemeyebileceği için keepalive yapılandırması da geliştirilebilir.

keepalived.conf, "komut dosyası" için "killall -0 apache2" kullanır. Adında "apache2" olan herhangi bir işlem varsa bu 0 (başarılı) döndürür, örneğin "tail -f /var/log/apache2/mod_jk.log."

apache2 hizmetini doğru şekilde izlemek için "systemctl --no-pager status apache2" (Ubuntu) veya "systemctl status httpd"(CentOS/RedHat) komutunu kullanın.

"script" olarak kullanılan komut, apache2/httpd hizmeti çalışıyorsa 0, durmuşsa sıfır döndürmelidir.

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.