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環境で実行されている場合、リクエストが失敗し、メッセージRROR_KEYPOOL_NOT_FOUNDすることがあります。
Cause
この状況は、グローバル ロード バランサー(2つ以上のVDC間でロード バランシングを行う)がある環境でよく見られます。この場合、オブジェクトは一方のVDCではアクセス可能ですが、もう一方のVDCでは同じURLを使用してアクセスできません。ただし、ユーザーがターゲット バケットのネームスペースに属していない場合は、どの環境でも発生する可能性があります。
Resolution
- ECSのユーザー スコープ設定をクエリーします。
# config/object/properties.json svc_rest_cmd
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"
}
}
- svc_requestを使用して、失敗したHTTPリクエストIDを検索します。
# svc_requestエラーサマリー
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
- 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
- 両方のサイトでベース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>
-
ロード バランサーは、baseurl名xxxobj6のxxxobj7 VDCにリクエストを送信していましたが、そのVDCには構成されていませんでした。そのため、xxxobj7 VDCはバケットを見つけることができませんでした。ベースURLはVDC固有の構成です。VDC間ではレプリケートされません。
-
この場合、ロード バランサーは両方のVDCにクロス トラフィックを送信するため、解決策は両方のVDCに両方のベースURLを追加することです。ここでは、[Use with Namespace]設定が重要です。この設定により、ECSはクライアントから提供されたURLからネームスペースを解析できるようになります。これらの設定が正しければ、クライアントは両方のVDCからオブジェクト/バケットにアクセスできるようになります。
Affected Products
Elastic Cloud StorageProducts
ECS Appliance, ECS Appliance Hardware Series, ECS Appliance Software with Encryption, ECS Appliance Software without Encryption, Elastic Cloud StorageArticle 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.