我的应用程序由几个微服务组成。
我想使用 NetFlix Eureka 作为发现服务器,并且我想将我的应用程序部署为 Docker 容器。我想在我的服务之间建立通信,但是有几个问题:
所以,底线 - 我想使用 Docker、Beanstalk 和 Eureka 构建支持微服务的应用程序。解决方案应该是可扩展的,并且除了 Eureka 主机 IP 之外不应该有任何硬编码值。
谢谢。
最佳答案
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;
}
关于amazon-web-services - 如何使用 AWS Beanstalk 和 Spring Cloud Netflix 在 Docker 容器之间建立连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165181/