我想要实现的目标是:
在heroku的eureka-server中注册node.js服务。
到目前为止,我可以在heroku的eureka-server中注册一个普通的eureka-client,没有任何问题。但是在尝试使用node.js服务时,我对配置感到非常困惑......
我认为eureka-js-client是解决方案,到目前为止没有成功......
以下代码。
const express = require('express');
const path = require('path');
const port = process.env.PORT || 3090;
const app = express();
app.use(express.static(__dirname));
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'index.html'))
});
const Eureka = require('eureka-js-client').Eureka;
const eureka = new Eureka({
instance: {
app: 'sheila',
hostName: 'localhost',
ipAddr: '127.0.0.1',
statusPageUrl: 'http://localhost:5000',
healthCheckUrl: 'http://localhost:5000/health',
port: {
'$': 5000,
'@enabled': 'true',
},
vipAddress: 'myvip',
dataCenterInfo: {
'@Class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
name: 'MyOwn',
},
},
eureka: {
host: 'localhost',
port: 8761,
servicePath: '/eureka/apps/',
},
});
eureka.logger.level('debug');
eureka.start(function(error){
console.log(error || 'complete');
});
// ------------------ Server Config --------------------------------------------
var server = app.listen(5000, function () {
var port = server.address().port;
console.log('Listening at %s', port);
});
首先,我在Docker控制台上运行docker run -it -p 8761:8761 springcloud/eureka
后尝试本地操作。但是我得到了这个错误:
Problem making eureka request { [Error: connect ECONNREFUSED 127.0.0.1:8761]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 8761 }
如果我从heroku服务运行它,它不会执行:( :(
我也试过用主机代替我的heroku eureka服务器的url,但后来我得到401或404错误。 eureka服务器需要我在heroku客户端js中添加的密码。
有什么想法吗?
答案 0 :(得分:2)
您需要包含一个instanceId,它应该是此实例的唯一标识符。
const eureka = new Eureka({
instance: {
instanceId:'sheila',
app: 'sheila',
hostName: 'localhost',
ipAddr: '127.0.0.1',
statusPageUrl: 'http://localhost:5000',
healthCheckUrl: 'http://localhost:5000/health',
port: {
'$': 5000,
'@enabled': 'true',
},
vipAddress: 'myvip',
dataCenterInfo: {
'@Class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
name: 'MyOwn',
},
},
eureka: {
host: 'localhost',
port: 8761,
servicePath: '/eureka/apps/',
},
});