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 環境中執行清單作業時,要求可能會失敗,並顯示 ERROR_KEYPOOL_NOT_FOUND訊息。
Cause
這種情況在具有全域負載均衡器(在兩個或多個 VDC 之間平衡負載)的環境中很常見,其中物件可以在一個 VDC 上訪問,但在另一個 VDC 上無法訪問,使用相同的 URL,但如果使用者不屬於目標存儲桶的命名空間,則可能在任何環境中看到這種情況。
Resolution
- 查詢 ECS 上的使用者範圍設定:
# svc_rest_cmd設定/物件/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"
}
}
- 使用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>
-
負載平衡器正在向 xxxobj7 VDC 傳送要求,其 baseurl 名稱為 xxxobj6,但該 VDC 上並未設定。所以 xxxobj7 VDC 找不到容器。基本 URL 是特定於 VDC 的配置。它不會在 VDC 之間複製。
-
解決方案是將兩個基本 URL 添加到兩個 VDC,因為在這種情況下,負載均衡器將交叉流量發送到兩個 VDC。“與命名空間一起使用”設置在這裡很重要,因為這是允許 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.