我一直在互联网上搜索有关将spring-cloud-Netflix eureka服务器部署到aws的正确方法的指导。我们一直在使用docker来提供同时使用spring-cloud和nodejs的微服务,所以我一直在尝试将我的spring-boot spring-cloud eureka应用程序部署到ECS。spring-cloud留档中的信息非常有限,但我在这里找到了一些相当有用的信息:https://www.slideshare.net/ToddMiller34/spring-cloud-into-production.基于此,我目前有以下信息:
标准SpringCloudStarter eureka服务器(SpringCloudCamden.SR5,SpringBoot 1.5.1)具有
@Bean
@Autowired
@Profile("aws")
public EurekaInstanceConfigBean eurekaInstanceConfigBean(InetUtils inetUtils) {
EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils);
AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
config.setHostname(info.get(AmazonInfo.MetaDataKey.publicHostname));
config.setIpAddress(info.get(AmazonInfo.MetaDataKey.publicIpv4));
config.setDataCenterInfo(info);
return config;
}
来自云配置存储库的相关配置:
eureka:
instance:
non-secure-port: ${server.port}
environment: test
client:
eurekaServerDNSName: test.mydomain.com
datacenter: cloud
client:
region: us-west-2
registerWithEureka: true
fetchRegistry: true
eurekaServerURLContext: eureka
eurekaServerPort: 8761
useDnsForFetchingServiceUrls: true
题外话:我很惊讶尤里卡.client.region是必需的,但是没有它,服务网址的dns获取就变成了 txt.us-east-1...默认情况下。
route53私有托管区域中的txt记录:
txt.us-west-2.test.mydomain.com = "us-west-2a.test.mydomain.com" "us-west-2b.test.mydomain.com"
txt.us-west-2a.test.mydomain.com = "ec2-123-456-789-123.us-west-2.compute.amazonaws.com"
txt.us-west-2b.test.mydomain.com = "ec2-987-654-321-123.us-west-2.compute.amazonaws.com"
我将一些eureka.server.bindingStrategy设置为‘route 53 ’,但这不起作用(从Route53Binder第135行给我一个无法在localhost中找到空闲域的错误)。
我从ec2容器实例中获得了ec2-##。我读过有关route53绑定的文章,但这似乎与从dns获取服务URL不兼容,而且netflix本身似乎也不太支持(我读过netflix工程师对错误的评论,称route53 binder是社区捐赠的代码,他们在netflix不使用它)。我也读过EIP绑定,但我不确定如何在ECS中使用它。我是否只需要创建与eureka服务器相同数量的EIP,并将它们放入route53 txt记录中,eureka将自动关联?这一切似乎都非常缺乏文档。
回答我自己的问题,以防其他人遇到这个问题,这很有帮助。
我是否只是创建与我有尤里卡服务器一样多的EIP,把它们放在route53 txt记录中,尤里卡会自动关联?
是的,这正是我所做的,并且有效。我创建了2个EIP,因为我的环境中的2个AZ中的每一个中只有1个eureka实例。EIP只是ip地址。然后我将它们放在我的路由53 txt记录中,如下所示:
txt.us-west-2.test.mydomain.com = "us-west-2a.test.mydomain.com" "us-west-2b.test.mydomain.com"
txt.us-west-2a.test.mydomain.com = "ec2-123-456-789-123.us-west-2.compute.amazonaws.com"
txt.us-west-2b.test.mydomain.com = "ec2-987-654-321-123.us-west-2.compute.amazonaws.com"
在这种情况下,ec2-###-###-###-### 条目是基于EIP的IP地址的主机名。例如,如果EIP地址是123.456.789.123,并且您在us-West-2中,则使用ec2-123-456-789-123.us-west-2.compute.amazonaws.com.
ECS中的Eureka启动,因为我的eureka客户端设置设置为从dns获取,它会找到EIP地址并自动绑定到适当区域中的一个。微服务html" target="_blank">应用程序中的Eureka客户端需要相同的eureka客户端配置,因此它们可以找到相同的eureka服务器主机名。
云配置yml文件的相关部分:
application.yml
==================
eureka:
datacenter: cloud
environment: production
client:
fetchRegistry: true
eurekaServerURLContext: eureka
region: us-west-2
eurekaServerPort: 8761
useDnsForFetchingServiceUrls: true
eurekaServerDNSName: test.mydomain.com
eureka-server.yml
======================
eureka:
server:
renewalPercentThreshold: 0.49
请注意,在TXT记录查找例程中使用了eurekaServerDNSName。在这种模式下(eureka.client.usednsforfetchingServiceURL),spring cloud eureka服务器和客户端似乎使用txt.${eureka.client.region}。${eureka.client.eurekaServerDNSName}
查找此记录:txt.us-west-2.test.mydomain.com = “us-west-2a.test.mydomain.com” “us-west-2b.test.mydomain.com”
然后使用该dns查找的结果找到实际指向基于EIP的域名的其他2个:txt.us-west-2a.test.mydomain.com="ec2-123-456-789-123.us-west-2.compute.amazonaws.com"txt.us-west-2b.test.mydomain.com="ec2-987-654-321-123.us-west-2.compute.amazonaws.com"
这就是它们如何填充eureka服务器集群节点成员的。如果您需要添加另一台服务器,您需要调配另一个EIP,添加到route53记录,并在ECS中启动一台新服务器,它将绑定到您刚才添加的地址。
我试图通过Spring.io上的教程链接来设置Spring Cloud Eureka。本教程使用的是Spring Boot 1.5.9.RELEASE。但是http://mvnrepository.com/.上没有Spring Cloud Starter Eureka的版本,所以我尝试了1.4.0和2.0.0.M2。我得到了 我做错了什么? 我使用Gradle作为构建工具。
我正在寻找一个好的发现服务,用于不断增长的私有托管微服务架构。 Netflix的Eureka看起来很有希望。它说它“主要用于AWS云中定位服务”,但我不知道它是否可以在AWS之外使用。粗略地看一下POM,就会发现项目中包含AWS依赖项。 Eureka(或其有用的子集)可以在AWS之外用作发现服务吗?
我们目前正在使用spring boot和netflix组件建立一个微服务架构,为了部署,我们计划使用aws kubernetes(EKS)设置。我们在选择是使用Netflix在Kubernetes上的Eureka&ribbon服务进行服务发现还是使用Kubernetes自己的服务发现机制时处于两难境地。我看到使用k8s服务发现的优点是水平伸缩变得容易。对此的任何想法都将对我们把它带向正确的方向真的
我正在尝试使用Spring和Spring Boot学习微服务,并学习部署到云平台。我计划创建一个Angular 2前端应用程序,它与我部署的微服务进行通信。现在,我正在浏览Spring cloud services Eureka、Zuul、Recural breakers等。 null
我有一个运行着application.yml的eureka服务器 在客户端,我有 有没有办法加快注销过程?看来我加快速度的努力不起作用
我使用Netflix的Eureka注册了许多微服务,并且我正在使用Spring Cloud Config。但是,当我更新时,我需要重新启动应用程序以应用新属性。 重新启动应用程序有点烦人,所以我搜索了它,发现通过使用Netflix Eureka获得注册的微服务,并使用spring boot actuator刷新它,但我没有获得注册的微型服务。 简而言之:我如何使用网飞尤里卡注册微服务?