ECS: 읽기 쓰기 작업 중에 BaseURL이 누락되어 400/404 오류 발생

Summary: 잘못된 BaseURL 구성으로 인해 REST 요청이 실패하고 400 코드 오류가 발생합니다.

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

S3를 사용하여 ECS에 대한 읽기 및 쓰기를 시도할 때 HTTP 400/404 오류가 표시됩니다.

나열 작업이 다중 VDC 환경에서 실행 중인 경우 E RROR_KEYPOOL_NOT_FOUND 메시지와 함께 요청이 실패할 수있습니다.

 

Cause

이 상황은 글로벌 로드 밸런서(둘 이상의 VDC 간에 로드 밸런싱)가 있는 환경에서 일반적입니다. 즉, 동일한 URL을 사용하여 한 VDC에서는 오브젝트에 액세스할 수 있지만 다른 VDC에서는 오브젝트에 액세스할 수 없지만, 사용자가 타겟 버킷의 네임스페이스에 속하지 않는 경우 어느 환경에서나 나타날 수 있습니다.

Resolution

  1. ECS에서 사용자 범위 설정을 쿼리합니다. 
# svc_rest_cmd config/object/properties.json
  
Example:

admin@g1-ecs3:~> svc_rest_cmd config/object/properties.json
svc_rest_cmd 1.0.10

{
  "properties": {
    "user_scope": "GLOBAL"
  },
  "empty": false,
  "allProperties": {
    "user_scope": "GLOBAL"
  }
}
  1. svc_request 사용하여 실패한 HTTP 요청 ID를 검색합니다.
# svc_request errorsummary
Example:
admin@g1-ecs3:~> svc_request errorsummary
svc_request v1.0.11 (svc_tools v1.5.4)                 Started 2019-07-02 16:26:14


Time range:  2019-07-02 14:26:14 - 2019-07-02 16:26:14
Running against node(s): <All nodes>
                                                                                     Resp                         
                                                                                     Time     Retry               
Node             Time                Request ID                         Type  Status (ms)     #       Exception                      URL
169.254.1.2      19-07-02 14:38:41   0a51548d:16b6bc5bf6e:9b15:1       GET   404    17       0       ObjectControllerException      https://testjkns3.xxxobj6.ms.com/bkt1/object1
 

  1. dataheadsvc 로그에서 실패한 요청에 대한 세부 정보를 가져옵니다. 
Dataheadsvc 로그는 여기에서 찾을 수 있습니다. /opt/emc/caspian/fabric/agent/services/object/main/log

또는 svc_request를 사용하여 로그를 확인합니다:# svc_request -r <request ID> -start "<specify_start_time>" showlogs
admin@ecs:/opt/emc/caspian/fabric/agent/services/fabric/data> svc_request -r 0a51548d:16b6bc5bf6e:9b15:1 -start 14:00 showlogs
svc_request v1.0.10 (svc_tools v1.5.3)                 Started 2019-07-01 19:55:02

Time range:  2019-07-01 14:00:00 - 2019-07-01 19:55:01
Running against node(s): <All nodes>
Request ID: 0a51548d:16b6bc5bf6e:9b15:1
##################################################
Reqid:                    0a51548d:16b6bc5bf6e:9b15:1

Reply timestamp:          2019-07-01T14:56:41,806
Protocol:                 s3
Request Type:             GET
Size:                     177 Bytes (0.000 MB)
Response Time:            17 ms
URL:                      https://testjkns3.xxxobj6.ms.com/bkt1/object1
ShortURL:                 https://testjkns3.xxxobj6.ms.com/bkt1/object1
Bucket:
Object:                   /testjkns3.xxxobj6.ms.com/bkt1/object1
Options:
Status:                   404
Client IP:                10.xxx.xx.17
Thread ID:                qtp1776502451-104390

Request (or retry)
  completed:              No
Exception:                ObjectAccessException
Retry #:                  0 (of 0 total)

Multi-part upload:        -

log messages:
169.254.1.7  [qtp1776502451-104390-0a51548d:16b6bc5bf6e:9b15:1-s3-10.196.105.17] ERROR ResourceClient.java (line 331) 
request id 0a51548d:16b6bc5bf6e:9b15:2, 
command type REQUEST_BUCKET_GET failed with error code ERROR_KEYPOOL_NOT_FOUND and message 'bucket xxx1.bkt1 not found'
169.254.1.7 2019-07-01T14:56:41,801  INFO KeyPoolInfoAccess.java (line 283) 
Cannot get keypool info from DT server since kpId xxx1.bkt1 is not found there
169.254.1.7 2019-07-01T14:56:41,801  ERROR S3Exception.java (line 942) got object access exception. RequestId 0a51548d:16b6bc5bf6e:9b15:1
com.emc.storageos.objcontrol.object.exception.ObjectAccessException: NoSuchBucket
169.254.1.7  [qtp1776502451-104390] INFO RequestLog.java (line 83) 10.196.105.17 GET https://testjkns3.xxxobj6.ms.com/bkt1/object1 HTTP/1.1 404 17 - 177

 

  1. 두 사이트의 기본 URL에 대해 구성된 내용을 확인합니다.
# svc_rest_cmd object/baseurl
Example:

Output from xxxobj7 VDC, we see only a default base url

svc_rest_cmd 1.0.10

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<base_urls>
  <base_url>
    <id>urn:ObjectBaseUrl:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</id>
    <link rel="self" href="/object/baseurl/urn:ObjectBaseUrl:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>
    <name>DefaultBaseUrl</name>
  </base_url>
</base_urls>

VDC xxxobj6 has customer  baseurl configured which is not configured on xxxobj7
svc_rest_cmd 1.0.10

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<base_urls>
  <base_url>
    <id>urn:ObjectBaseUrl:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</id>
    <link rel="self" href="/object/baseurl/urn:ObjectBaseUrl:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>
    <name>DefaultBaseUrl</name>
  </base_url>
  <base_url>
    <id>urn:ObjectBaseUrl:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</id>
    <link rel="self" href="/object/baseurl/urn:ObjectBaseUrl:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>
    <name>xxxobj6</name>
  </base_url>
</base_urls>
 

  1. 로드 밸런서가 해당 VDC에 구성되지 않은 baseurl 이름이 xxxobj6인 xxxobj7 VDC로 요청을 보내고 있었습니다. xxxobj7 VDC에서 버킷을 찾을 수 없습니다. 기본 URL은 VDC별 구성입니다. VDC 간에는 복제되지 않습니다. 

  2. 이 경우 로드 밸런서가 두 VDC에 교차 트래픽을 전송하므로 해결 방법은 두 VDC에 두 기본 URL을 모두 추가하는 것입니다. 여기서 "Use with Namespace" 설정은 ECS가 클라이언트가 제공한 URL에서 네임스페이스를 구문 분석할 수 있도록 하는 설정이기 때문에 중요합니다. 이러한 설정이 올바르면 클라이언트가 두 VDC의 오브젝트/버킷에 액세스할 수 있습니다.

기본 URL 관리

Affected Products

Elastic Cloud Storage

Products

ECS Appliance, ECS Appliance Hardware Series, ECS Appliance Software with Encryption, ECS Appliance Software without Encryption, Elastic Cloud Storage
Article Properties
Article Number: 000062997
Article Type: Solution
Last Modified: 08 May 2025
Version:  5
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.