PowerFlex:ゲートウェイ高可用性のセットアップでRESTクライアントで401エラーが発生する

Summary: REST APIクライアントは、「401: ゲートウェイとApacheの両方のサービスが実行されている場合は、「Unauthorized」エラーが発生します。

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クライアントは、「401: ゲートウェイとApacheの両方のサービスが実行されている場合は、「Unauthorized」エラーが発生します。

REST APIクライアントの一例として、OpenStack cinderがあります。この問題により、OpenStackの特定のScaleIOボリューム操作(マップ、割り当て解除など)が失敗する可能性があります。

REST APIリクエストが10回成功するごとに、1回失敗します。たとえば、プライマリApacheサービスの 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 には次のように表示されます。 

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

これはドキュメントのエラーです。このドキュメントの workers.properties 設定には、2 つの Gateway (Tomcat) インスタンス間のロード バランシング設定が含まれており、 lbfactor は 10 と 1 に設定されています。つまり、Apacheサービスは、受信リクエストを2つのゲートウェイに10:1の比率で転送します。REST API クライアントは 1 つのゲートウェイを介してトークンを取得し、トークンは Gateway 間で共有されないため、このトークンを使用して 2 番目のゲートウェイに送信された要求は 401.

で失敗します。手記:クライアントが lbfactor 1 を使用してゲートウェイからトークンを取得した場合、失敗率は約 91% です。

Resolution

回避策
ドキュメント内のファイルの代わりに、次の workers.properties ファイルを使用します。これにより、2 つの Gateway がアクティブ/スタンバイ モードに設定されます。

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



この構成では、machine2 をプライマリとして、worker1 をスタンバイとして設定します。この構成とドキュメントの主な違いは次のとおりです。

  • worker.machine1.activation=disabled

これにより、ワーカー machine1 がスタンバイ状態になり、デフォルトでは machine1 に要求が送信されません。
  • worker.machine2.redirect=machine1
既定では、machine2 がアクティブ化され、要求を受信します。machine2 に障害が発生した場合、要求は machine1 にリダイレクトされます。
  • worker.machine#.lbfactor=1

これはアクティブ/スタンバイ セットアップであるため、別の lbfactors 両方のワーカーに不要な場合はセットアップします。
 
 

この構成では、次のようになります。

  • 両方のゲートウェイが稼働している場合、すべての要求はworker2に送信され、401はありません。
  • worker2 がダウンすると、要求は worker1 に送信されます。RESTクライアントは401を受信し、REST APIサービスに再度ログインして続行できます。
  • worker2 が戻ってきて mod_jk モジュールがそれを検出すると、要求は再び worker2 に転送され、REST クライアントはさらに 401 を受け取りますが、RESET API サービスに再度ログインして続行できます。

注:両方のApacheサービスは、 workers.properties ファイルで定義)を使用することが重要です。Apacheサービスは、 active-standby クラスター、 keepalived、および mod_jk モジュールは、上記の構成に基づいて、REST API要求をゲートウェイ サービスに送信する役割を担います

これはドキュメント エラーです。このKBは、ドキュメントを修正する前に使用できます。

Additional Information

keepalived構成は、apache / httpdサービスを正しく監視しない可能性があるため、改善することもできます

keepalived.conf は "script" に "killall -0 apache2" を使用します。これは、名前に「apache2」を含むプロセスがある場合に0(成功)を返します。tail -f /var/log/apache2/mod_jk.log."

apache2サービスを正しく監視するには、「systemctl --no-pager status apache2」(Ubuntuの場合)または「systemctl status httpd」(CentOS/RedHatの場合)を使用します

「スクリプト」として使用されるコマンドは、apache2/httpd サービスが実行されている場合は 0 を返し、停止している場合は 0 を返しません。

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.