如何配置 Eureka 客户端和服务属性?
Posted
技术标签:
【中文标题】如何配置 Eureka 客户端和服务属性?【英文标题】:How to configure Eureka Client and Service properties? 【发布时间】:2018-02-05 21:10:01 【问题描述】:我正在尝试向 Eureka 注册我的 Java 服务 - 没有运气。我有一个使用 Spark-Java 框架的现有代码库,因此“只添加 2 行 Spring 注释,瞧!”不幸的是,示例对我没有帮助。
我阅读了Eureka Configuration的文档,创建了一个eureka-conf目录并将以下两个文件放入eureka-conf:
eureka-client.properties eureka-service.properties我使用 export CLASSPATH=.:$CLASSPATH:$EUREKA_CONF/eureka-client.properties:$EUREKA_CONF/eureka-service.properties
将 eureka_conf 路径添加到我的 $CLASSPATH 变量中
我从here 复制粘贴了属性文件的内容。所以,它们看起来像这样:
#eureka-client.properties
eureka.registration.enabled=false
eureka.preferSameZone=true
eureka.shouldUseDns=false
eureka.serviceUrl.default=http://localhost:8080/eureka/v2/
eureka.decoderName=JacksonJson
#eureka-service.properties
eureka.region=us-west-1
eureka.name=qb-acm
eureka.vipAddress=mysampleservice.mydomain.net
eureka.port=8001
eureka.preferSameZone=true
eureka.shouldUseDns=false
eureka.serviceUrl.default=http://localhost:8080/eureka/v2/
您可以看到,我更改了 eureka.name 和 eureka.region 以在日志中查看是否找到了属性。找不到它们。
当我启动我的服务时,我看到 com.netflix.discovery.internal.util.Archaius1Utils
抛出以下警告:
Cannot find the properties specified : eureka-client. This may be okay if there are other environment specific properties or the configuration is installed with a different mechanism.
紧随其后的是:INFO com.netflix.discovery.DiscoveryClient - Initializing Eureka in region us-east-1
。
我创建了一个示例 Eureka 服务器和客户端(使用 Spring)只是为了做一个示例,并且注册了 Spring 客户端。现在,我试图让我的非 Spring Java 服务注册到本地 Eureka 服务器。我的最终目标是设置此服务以注册并向我们托管在 Pivotal 上的远程 Eureka 服务器发送心跳。
其他错误可能对读者有用:
[main] ERROR com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver - Cannot resolve to any endpoints from provided configuration: defaultZone=[]
[main] ERROR com.netflix.discovery.shared.transport.EurekaHttpClients - Initial resolution of Eureka server endpoints failed. Check ConfigClusterResolver logs for more info
所以,我的问题是:
我做错了什么设置属性?
我在很多例子中看到他们有一个application.yml
或manifest.yml
文件。 .yaml 文件是什么
在尤里卡配置中?它是财产的替代品吗
文件?
编辑:我发现 this answer 解释了 yaml 文件。 Spring boot 使用 Application.yml,Cloud Foundry CLI 使用 Manifest.yml。
-
我的本地环境和 Pivotal 上的 eureka.vipAddress 应该是什么?
**edit:经过反复试验,我发现在本地设置为http://localhost:yourport,对于 PCF,它应该是应用程序名称。 localhost
和 service-name
都不对应于物理网络接口。哦,好吧,我终于知道什么是虚拟IP了**
如果需要更多信息,请告诉我。提前感谢您的帮助。
【问题讨论】:
【参考方案1】:类路径中的 eureka-client.properties 和 eureka-service.properties 对我有用。我已将这些文件放在我的 Web 应用程序的资源目录中。 这些文件供 Eureka Client 和 Eureka Server 使用。
application.yml 由 Spring Cloud 实现使用,是与 Eureka 注册表或任何其他注册表一起工作的单独方式。
vipAddress 是您的应用程序在 Eureka 中注册的一种名称。
注册自己的服务将在 eureka-client.properties 中有 eureka.registration.enabled=true。似乎所有服务注册属性都是从这个文件中提取的。 仅进行发现的服务将在其 eureka-client.properties 中具有 eureka.registration.enabled=false
以下链接提供了一个执行注册和发现的示例应用程序:https://github.com/Netflix/eureka/tree/master/eureka-examples
请注意这里涉及三个组件 1) 尤里卡服务器 2) 服务(使用 Eureka 客户端)- 进行注册 3) 客户端(使用 Eureka 客户端)- 进行发现
上面的例子讨论了 2 和 3。要启动 Eureka 服务,您可以通过以下链接来要求您构建 Eureka Server war 文件并将其放到 Tomcat 服务器上。https://github.com/Netflix/eureka/wiki/Building-Eureka-Client-and-Server
为了进行测试,您可以使用其 REST 接口与 curl 或浏览器等 http 客户端直接查询 Eureka Server。https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
【讨论】:
【参考方案2】:似乎在启动期间找不到您的配置文件。 eureka 配置文件必须在类路径中。有时它们没有打包到 jar 文件中。确保你的 jar 中有文件
(try jar xf <your-jar-file>
分析 jar 的内容。
你是用 maven 构建的吗?然后在 pom-File 的 build 部分添加一个资源/包含块,以确保包含配置文件。
一些 eureka 属性可以在 application.yml 文件中设置,这与 applicaiton.properties 相同,除了您编写配置的格式。我不确定是否有等效于 yaml 的 eureka-client.properties。首先让 *.properties 运行,然后尝试它是否理解 yaml。
【讨论】:
以上是关于如何配置 Eureka 客户端和服务属性?的主要内容,如果未能解决你的问题,请参考以下文章
整合spring cloud云服务架构 - eureka 基础(上)
如何在单独的 docker 容器中配置和运行 Eureka Server、微服务(Eureka Client)、Zuul?