云部署中的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 数据流——微服务部署

Spring cloud开发的微服务部署到Linux上内存过高的问题

使用Spring Cloud Config统一管理微服务配置

爱油科技基于Docker和Spring Cloud的微服务实践

Spring Cloud微服务实践之路- Eureka Server 中的第一个异常

spring cloud互联网分布式微服务云平台规划分析--spring cloud平台整体规