ECS : BaseURL manquante provoquant des erreurs 400/404 lors des opérations de lecture/écriture

Résumé: Une configuration BaseURL incorrecte entraîne l’échec des demandes REST avec des erreurs de code 400.

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes

Des erreurs HTTP 400/404 s’affichent lors des tentatives de lecture et d’écriture sur ECS à l’aide de S3.

Lorsque des opérations de liste sont en cours d’exécution dans un environnement à plusieurs VDC, les demandes peuvent échouer avec lemessage E RROR_KEYPOOL_NOT_FOUND.

 

Cause

Cette situation est courante pour les environnements dotés d’équilibreurs de charge globaux (équilibrage de charge entre deux ou plusieurs VDC), où les objets sont accessibles sur un VDC, mais pas sur l’autre, à l’aide de la même URL, mais ils peuvent être observés dans n’importe quel environnement si un utilisateur n’appartient pas à l’espace de nommage du bucket cible.

Résolution

  1. Interrogez les paramètres d’étendue utilisateur sur 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. Utilisez svc_request pour rechercher les ID de demande HTTP en échec :
# 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. Obtenez les détails de la demande défaillante dans les journaux dataheadsvc. 
Les journaux DataHeadsvc se trouvent ici /opt/emc/caspian/fabric/agent/services/object/main/log

Vous pouvez également utiliser svc_request pour vérifier les journaux:# 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. Vérifiez ce qui est configuré pour l’URL de base sur les deux sites :
# 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. L’équilibreur de charge envoyait des demandes au VDC xxxobj7 portant le nom baseurl xxxobj6, qui n’était pas configuré sur ce VDC. xxxobj7 VDC n’a donc pas pu trouver le bucket. L’URL de base est une configuration spécifique au VDC. Elle n’est pas répliquée entre les VDC. 

  2. La solution consiste à ajouter les deux URL de base aux deux VDC, car dans ce cas, l’équilibreur de charge envoie le trafic croisé vers les deux VDC. Le paramètre « Use with Namespace » est important ici, car il permet à ECS d’analyser l’espace de nommage à partir de l’URL fournie par le client. Une fois ces paramètres corrects, le client peut accéder aux objets/buckets à partir des deux VDC.

Gestion des URL de base

Produits concernés

Elastic Cloud Storage

Produits

ECS Appliance, ECS Appliance Hardware Series, ECS Appliance Software with Encryption, ECS Appliance Software without Encryption, Elastic Cloud Storage
Propriétés de l’article
Numéro d’article: 000062997
Type d’article: Solution
Dernière modification: 08 mai 2025
Version:  5
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.