云部署中的Spring Cloud微服务配置
Posted
技术标签:
【中文标题】云部署中的Spring Cloud微服务配置【英文标题】:Spring Cloud microservice configuration in cloud deployment 【发布时间】: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) 【参考方案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/
【讨论】:
以上是关于云部署中的Spring Cloud微服务配置的主要内容,如果未能解决你的问题,请参考以下文章
Spring cloud开发的微服务部署到Linux上内存过高的问题
使用Spring Cloud Config统一管理微服务配置
爱油科技基于Docker和Spring Cloud的微服务实践