将Spring Boot微服务部署到Heroku

4

我正在尝试将我的微服务部署到Heroku,但一直没有成功。首先,我创建了一个用于服务注册中心(eureka)的应用程序,并进行了以下配置:

spring:
  application:
    name: eureka

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
下一步,我部署应用程序,部署后的应用程序的URL类似于 https://eureka.herokuapp.com。 我会使用此URL来配置我的其他应用程序,例如网关和业务服务。 以下是我的网关配置示例:
spring:
  application:
    name: gateway
server:
  port: 8081

eureka:
  client:
    healthcheck:
      enabled: true
    serviceUrl:
      defaultZone: https://eureka.herokuapp.com/eureka/

我在我的用户服务中使用了相同的配置,只是应用程序名称不同(user-service)。当我访问https://gateway.herokuapp.com/user-service/user时,我无法收到任何响应。在网关应用程序的heroku日志中,我可以看到由于用户服务超时而导致的异常,但我不理解,因为当我直接调用https://user.herokuapp.com/user时,我会得到响应。

我还发现我的eureka仪表板没有注册副本,我不确定是否可以,你能告诉我我做错了什么吗?谢谢。

enter image description here

网关应用程序的错误日志:

2019-12-01T19:53:29.503419+00:00 heroku[router]: at=info method=GET path="/user-service/user" host=gateway.herokuapp.com request_id=7818f5eb-34af-47f9-94db-7dc4f9609c31 fwd="86.49.253.78" dyno=web.1 connect=0ms service=8110ms status=500 bytes=465 protocol=https

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1
你的网关配置缺少网关发现部分。此外,注册表不需要“serviceUrl”。 尝试以下配置:

注册表

spring:
  application:
    name: eureka

server:
  port: 8761

eureka:
  instance:
    prefer-ip-address: false
  client:
    register-with-eureka: false
    fetch-registry: false

网关

spring:
  application:
    name: gateway
  cloud:
    discovery:
      enabled: true 
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true

server:
  port: 8081

eureka:
  client:
    fetch-registry: true
    register-with-eureka: true
    healthcheck:
      enabled: true
    serviceUrl:
      defaultZone: https://eureka.herokuapp.com/eureka/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,