我正在评估使用Spring Boot和Spring Cloud(Zuul和Eureka)构建微服务,这些微服务运行在单独的docker容器中,部署在单独的Amazon EC2实例中。
我可以使用boot2docker在我的Mac上本地运行(即不在Amazon/EC2),但当部署在EC2上时,Zuul找不到该服务,并报告一个“转发错误”(状态500)。
在EC2中,一切都被配置为在端口80上运行(只是在评估时,这样我就可以轻松地通过防火墙访问)。我可以在Eureka系统状态页面中看到Zuul和我的服务(尽管这些链接都不起作用!)。
客户机被配置为使用完整的AWS域名找到尤里卡,所以我可以看到他们如何找到尤里卡OK。例如。
client:
serviceUrl:
defaultZone: http://ec2-XX-XX-XX-XX.ap-southeast-2.compute.amazonaws.com:80/eureka/,http://ec2-YY-YY-YY-YY.ap-southeast-2.compute.amazonaws.com:80/eureka/
但是,客户机似乎在用他们的内部docker IP地址(基于Eureka系统状态链接)注册自己。
edgeserver链接指向http://172.17.0.2/info,trialservice链接指向http://172.17.0.3/info
我还看到这里有一个关于这个主题的讨论,https://github.com/spring-cloud/spring-cloud-netflix/issues/432
是否有人成功地使这种类型的设置工作,如果是,他们是如何配置Eureka属性的?
好了,回答我自己的问题,我找到了解决办法。它主要涉及配置eureka以使用主机名,并配置docker以使用net=host选项。
以下是我的设置(仅显示一个可用性区域的设置):
application.yml:
Zuul:
spring:
profiles: aws
server:
port: 80
eureka:
datacenter: cloud
instance:
preferIpAddress: false
client:
serviceUrl:
defaultZone: http://ec2-XX-XX-XX-XX.ap-southeast-2.compute.amazonaws.com:80/eureka/
Eureka:
spring:
profiles: aws-discoA
server:
port: 80
eureka:
instance:
preferIpAddress: false
datacenter: cloud
enableSelfPreservation: false
client:
name: eureka
preferSameZone: false
shouldOnDemandUpdateStatusChange: false
region: default
serviceUrl:
defaultZone: http://ec2-YY-YY-YY-YY.ap-southeast-2.compute.amazonaws.com:80/eureka/
Service:
spring:
profiles: aws
server:
port: 0 # or 80 if there is only 1 service/docker in this EC2
eureka:
datacenter: cloud
instance:
preferIpAddress: false
client:
serviceUrl:
defaultZone: http://ec2-XX-XX-XX-XX.ap-southeast-2.compute.amazonaws.com:80/eureka/
Zuul
sudo docker run -d --name edge -e JAVA_TOOL_OPTIONS="-Dspring.profiles.active=aws -Deureka.instance.hostname=$HOSTNAME" --net="host" edge
Eureka
sudo docker run -d --name discovery -e JAVA_TOOL_OPTIONS="-Dspring.profiles.active=aws-discoA -Deureka.instance.hostname=$HOSTNAME" --net="host" discovery
Service
sudo docker run -d --name service -e JAVA_TOOL_OPTIONS="-Dspring.profiles.active=aws -Deureka.instance.hostname=$HOSTNAME" --net="host" service
然后,我可以点击负载均衡器,看到随着AWS负载均衡器和功能区负载均衡器在服务中循环而调用的每个服务。
我使用了一个简单的Spring Boot应用程序,它在Eureka中注册自己,并使用Spring cloud配置来读取一些属性。 是这样的: 我有一个rest控制器,我想为它编写一个测试。测试将使用mockmvc。简化示例如下: 控制器: 测试:
我的目标是能够使用boto3运行Python程序来访问DynamoDB,而无需任何本地配置。我一直在关注这个AWS文档https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html)使用“IAM角色”选项似乎是可行的https://boto3.amazonaws.com/v1/documentatio
我正在Eclipse中处理一个Java项目,该项目是使用Maven构建的。我使用的是一个旧项目中的一些循环代码,其中一个类在JAR的文件夹中查找一个具有特定名称的文件,然后解析该文件的文本。在这个特定的示例中,它查找一个具有Java接口名称的文件,然后从文件内部获取实现的类名。
问题内容: 我正在使用GlassFish来提供Java EE Web应用程序。在我本地的开发机器上一切正常。我有 将postgres JDBC库复制到正确的位置 在Glassfish管理控制台中配置了连接池和JDBC资源 部署了使用上述连接的网络应用 在我的浏览器中看到了结果 我正在尝试将同一应用程序部署到AWS Elastic Beanstalk托管的Glassfish实例。AWS- EB使用D
因此,我曾一度通过Beanstalk使用亚马逊实例(2013.09)ami-35792c5c进行此操作。当时,此扩展脚本在 .eb 扩展/ 中放置在存储库的根目录中时效果很好 00_repo.config 01_app.config 因此,现在当我使用同一实例并启动我的环境时,我得到了关于依赖项的错误。 看起来同一个存储库现在正在返回一个更新版本的popple,它是12. x,现在它的22. x和