【问题标题】:Spring Cloud microservice configuration in cloud deployment云部署中的Spring Cloud微服务配置
【发布时间】:2018-04-28 20:41:46
【问题描述】:

我在本地系统中使用 Eureka 服务器和 Zuul Spring Cloud 工具创建了一个示例 Spring Cloud 微服务。它运行正常。我在 eureka 服务器项目中将我的微服务注册为客户端。并且还将我的 Zuul 注册为 Eureka 服务器上的客户端。

下面是我的尤里卡服务器项目application.properties,

server.port=8071
eureka:  
numberRegistrySyncRetries: 1
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
  defaultZone: http://localhost:8071/eureka/
server:
enable-self-preservation: true

而下面的代码就是我的微服务application.property文件内容,

eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

而我的zuul application.properties 代码是,

eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=eurekaZuulClient
ribbon.eureka.enabled=true
zuul:
 routes:
  espace-service:
   path: /espace/**
   stripPrefix: true
   serviceId: espace-service
   server.port=8090

我的疑问是,当我们将此应用程序部署到云中时,我们需要在 application.properties 中进行哪些更改?因为我们不知道云中的 server.port 和“eureka.client.serviceUrl.defaultZone” .这里我只用localhost运行。

那么我们需要如何在配置中遵循云部署程序呢?我是 Spring Cloud 的初学者,我对这些配置有很多困惑。

【问题讨论】:

  • Eureka 需要部署到一个众所周知的主机:端口
  • 好的。但是我如何设置我的“defaultZone”?我需要那个域和端口号。那么我将如何添加他们的域。还有你提到的那个众所周知的端口的识别过程是什么?
  • 一个静态ip(aws中的弹性IP)

标签: cloud spring-cloud


【解决方案1】:

知道 Eureka 的端口是好事,这样我们就可以很容易地检查各种 API 的状态。对于云部署,有多种方法可以处理此问题。

您可以对部署 eureka 的实例的 IP 进行硬编码,并将其与配置文件名称分开。

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
---
eureka:
  client:
    serviceUrl:
      defaultZone: http://172.0.0.1:8761/eureka/

--- 分隔符下的配置位用于应用程序在云 Spring 配置文件下运行时。使用 SPRING_PROFILES_ACTIVE 环境变量很容易设置配置文件。您可以在 manifest.yml 或在 Cloud Foundry Lattice 上的 Docker 文件中配置 Cloud Foundry 环境变量。

如果 Java 无法确定主机名,则将 IP 地址发送到 Eureka。设置主机名的唯一明确方法是使用 eureka.instance.hostname。您可以在运行时使用环境变量设置主机名,例如 eureka.instance.hostname=${HOST_NAME}

eureka:
  instance:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 2018-05-12
    • 2016-10-01
    • 2018-05-24
    • 2018-06-17
    • 2021-04-28
    • 2020-04-10
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多