首页 > 解决方案 > 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,相同的主机名是好的,我想知道这个问题是我的yaml配置文件引起的。求帮助,谢谢!

标签: node.jsspring-cloudnetflix-eureka

解决方案


您需要在 yml 文件中添加 instance-id 属性,如下所示:

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

推荐阅读