我一直在搜索互联网寻找关于如何将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。在此基础上,我公司目前有以下几种:spring-cloud-netflix eureka aws部署
标准弹簧云起动尤里卡服务器(春季云Camden.SR5,弹簧引导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
题外话:我很惊讶,被要求eureka.client.region,但是没有它的DNS获取的服务URL去txt.us东-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设置为“route53”,但这不能正常工作(给我有关无法找到一个错误来自Route53Binder行135的本地主机中的免费域)。
我从ec2容器实例中获得了ec2 - ### hostnames,事情似乎正在进行,但我非常担心这些主机名将在容器实例重新启动时随时更改。我已经阅读了关于route53的绑定,但是这似乎与从dns获取服务url不兼容,并且netflix自己似乎也没有很好的支持(我已阅读过netflix工程师对bugs的评论,社区捐赠的代码,并且他们没有在netflix上使用它)。我还阅读了有关EIP绑定的内容,但我不确定如何将它与ECS结合使用。我是否只创建与eureka服务器一样多的EIP,将它们放在route53 txt记录中,而eureka会自动关联?这一切似乎严重缺乏文件。
你能提供一些关于你整体设计的更多信息吗?我在ECS中运行我的第一个Spring云应用程序时遇到了一些问题。一个git回购的例子会很有帮助... –