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 구성에는 두 게이트웨이(Tomcat) 인스턴스 간의 로드 밸런싱 설정이 포함되어 있으며 lbfactor 는 10과 1로 설정됩니다. 즉, Apache 서비스는 들어오는 요청을 10:1 비율로 두 게이트웨이로 보냅니다. REST API 클라이언트가 하나의 게이트웨이를 통해 토큰을 획득하고 게이트웨이 간에 토큰이 공유되지 않으므로 이 토큰과 함께 두 번째 게이트웨이로 전송되는 요청은 401과 함께 실패합니다.

메모: 클라이언트가 lbfactor 1을 사용하여 게이트웨이에서 토큰을 획득하는 경우 실패율은 약 91%입니다.

Resolution

해결 방법
문서의 파일 대신 다음 workers.properties 파일을 사용합니다. 이렇게 하면 두 게이트웨이가 활성-대기 모드로 설정됩니다.

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

apache/httpd 서비스를 올바르게 모니터링하지 못할 수 있으므로 keepalived 구성을 개선할 수도 있습니다.

keepalived.conf는 "스크립트"에 "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)를 사용합니다.

"script"로 사용되는 명령은 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.