2016-11-04 3 views
0

По какой-то причине Im получает 400 назад при регистрации в Eureka на Amazon. Сначала я думал, что это связано с известной проблемой с клиентом eureka js, однако после применения исправлений для этой проблемы он работает локально, но не тогда, когда объектом центра данных является Amazon. Кажется, что он извлекает метаданные из amazon, применяет его к объекту конфигурации eureka-js-client, используя локальный, затем выполняет запрос POST, но, похоже, отвечает статусом 400.400 от клиента Eureka js с Amazon

Вот мой конфигурационный объект:

instance: { 
 
     app: 'my-node-service', 
 
     port: { 
 
      '$': 8201, 
 
      '@enabled': true 
 
     }, 
 
     vipAddress: 'myapp.awesome.com', 
 
     statusPageUrl: 'http://__HOST__:8201/info', 
 
     dataCenterInfo: { 
 
      '@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo', 
 
      name: 'Amazon', 
 
     } 
 
     }, 
 
     eureka: { 
 
     useLocalMetadata: true, 
 
     ssl: true, 
 
     // eureka server host/port 
 
     serviceUrls: { 
 
      default: [ 
 
      'https://myamazoneurekaserver.com/eureka/apps', 
 
      'https://myamazoneurekaserver1.com/eureka/apps', 
 
      'https://myamazoneurekaserver2.com/eureka/apps' 
 
      ] 
 
     }, 
 
     servicePath: '/eureka/apps/' 
 
     }, 
 
    }

, что приводит к этому из EurekaClient.js выводе файла:

Error: eureka registration FAILED: status: 400 body: [object Object] at /usr/app/node_modules/eureka-js-client/lib/EurekaClient.js:267:23 at Request.self.callback (/usr/app/node_modules/request/request.js:186:22) at /usr/app/node_modules/async/dist/async.js:484:16 at nextTask (/usr/app/node_modules/async/dist/async.js:5195:29) at /usr/app/node_modules/async/dist/async.js:5202:13 at apply (/usr/app/node_modules/async/dist/async.js:41:25) at /usr/app/node_modules/async/dist/async.js:76:12 at /usr/app/node_modules/async/dist/async.js:988:16 at Request._callback (/usr/app/node_modules/eureka-js-client/lib/EurekaClient.js:570:9) at /usr/app/node_modules/eureka-js-client/lib/EurekaClient.js:592:7

Любая причина, почему это произошло бы. Примеры, которые используют Amazon, не используют служебные URL-адреса по умолчанию, но это работает локально, когда я использую MyOwn как имя dataCenterInfo.

ответ

1

Ответил это также в GitHub issue, но положил его сюда для потомства =).

Для центров обработки данных Amazon (и нового формата Eureka JSON), я думаю, вам нужно передать другое значение для @class. Попробуйте использовать: com.netflix.appinfo.AmazonInfo.

Если вы по-прежнему получаете плохую просьбу, иногда это помогает сделать запрос вручную для службы (поскольку это все, что делает этот клиент), если у вас есть Почтальон или аналогичный инструмент, который будет работать. Вы также можете установить NODE_DEBUG=request, чтобы узнать, что происходит на уровне запроса на клиенте.

Смежные вопросы