如何配置Eureka客户端和服务属性?

时间:2017-08-28 14:44:19

标签: java netflix-eureka spark-java

我试图用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服务器。我的最终目标是将此服务设置为注册并将心跳发送到我们的远程Eureka服务器,该服务器托管在Pivotal上。

其他错误可能对读者有用:

[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

所以,我的问题是:

  1. 设置属性我做错了什么?

  2. 我在很多例子中看到他们有一个application.ymlmanifest.yml文件。什么是.yaml文件 在Eureka配置?它是房产的替代品 文件?

  3. 编辑:我发现this answer解释了yaml文件。 Application.yml由Spring boot使用,Manifest.yml由云代工厂CLI使用。

    1. 我的本地环境和Pivotal上的eureka.vipAddress应该是什么?
    2. **编辑:我发现,在试验和错误的情况下,本地设置为http://localhost:yourport,对于PCF,它应该是应用程序名称。 localhostservice-name都不对应于物理网络接口。哦,我终于知道虚拟ip是什么**

      如果需要更多信息,请与我们联系。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

似乎在启动期间找不到您的配置文件。 eureka配置文件必须位于类路径中。有时它们没有打包到jar文件中。一定要在你的jar中有文件 (try jar xf <your-jar-file> 分析你的jar的内容。

你在和maven一起建造吗?然后在pom-File的build部分中添加一个resource / include块,以确保包含配置文件。

可以在application.yml文件中设置一些eureka属性,这与applyaiton.properties相同,但您编写配置的格式除外。我不确定是否有与yaml等效的eureka-client.properties。首先运行* .properties,然后尝试它是否理解yaml。

答案 1 :(得分:0)

类路径中的

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

为了进行测试,您可以使用Eureka Server的REST界面通过curl或浏览器之类的http客户端直接查询Eureka Server。
https://github.com/Netflix/eureka/wiki/Eureka-REST-operations