我的应用程序包含几个微服务。 我想使用NetFlix Eureka作为发现服务器,我想将我的应用程序部署为Docker容器。我想在我的服务之间建立沟通,但问题很少:
所以,底线 - 我想使用Docker,Beanstalk和Eureka构建支持微服务的应用程序。解决方案应该是可扩展的,除了Eureka主机IP之外,不应该存在任何硬编码值。
感谢。
答案 0 :(得分:0)
要告诉Eureka应该使用哪个IP,如https://github.com/spring-cloud/spring-cloud-netflix/issues/30中所述,请使用以下代码段:
public EurekaInstanceConfigBean eurekaInstanceConfig() {
InetUtilsProperties inetUtilsProperties = new InetUtilsProperties();
inetUtilsProperties.setDefaultHostname(EC2MetadataUtils.getLocalHostName());
inetUtilsProperties.setDefaultIpAddress(EC2MetadataUtils.getPrivateIpAddress());
EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(new InetUtils(inetUtilsProperties));
AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
config.setDataCenterInfo(info);
info.getMetadata().put(AmazonInfo.MetaDataKey.publicHostname.getName(), EC2MetadataUtils.getLocalHostName());
config.setHostname(EC2MetadataUtils.getLocalHostName());
config.setIpAddress(EC2MetadataUtils.getPrivateIpAddress());
config.setNonSecurePort(port);
return config;
}