eureka-js-client为什么我不能为两个服务实例使用相同的主机名?

问题描述

我正在为同一服务部署两个实例,并且两个实例在同一计算机上的不同端口上运行。由于它是一个Nodejs应用程序,因此我使用eureka-js-client进行混音。我的客户端配置yml文件如下:

eureka:
  heartbeatInterval: 30000
  registryFetchInterval: 30000
  host: 'username:passwor@ipAdrress'
  port: 8000
  servicePath: '/eureka/apps/'
  preferIpAddress: true

instance:
  app: 'nodejs-service'
  hostName: 'localhost'
  ipAddr: 'localhost'
  statusPageUrl: 'http://localhost:3000'
  port:
    '$': 3000
    '@enabled': 'true'

  vipAddress: 'nodejs-service'
  dataCenterInfo:
    '@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo'
    name: 'MyOwn'

对于另一个实例,我只是将端口更改为4000。当我注册3000和4000时,它在eureka页面上仅显示4000实例。也就是说,仅注册了一个实例。当我将hostName值之一更改为其他值后,它可以正常工作-已注册了两个实例。但是,我需要主机名相同,因为它们被部署在同一台计算机上。对于Java,相同的hostName可以,我想知道这是由我的yaml配置文件引起的问题。寻求帮助,谢谢!

解决方法

您需要像这样在yml文件中添加instance-id属性:

instance:
  app: 'nodejs-service'
  instanceId: 'node1'

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...