我正在将自己的spring cloud eureka应用程序迁移到AWS ECS,但目前遇到一些麻烦。
我在AWS上有一个ECS集群,其中创建了两个EC2服务
每个服务上都有一个正在运行的任务。
问题:
我如何在这两项服务之间建立一个“ docker网络”,以便我可以将我的eureka客户端注册到eureka服务器的注册表?将它们放在同一个群集中似乎并不能解决问题。
在本地,我能够建立一个“泊坞窗网络”来完成此任务。可以在AWS上使用“码头工人网络”吗?
答案 0 :(得分:2)
这里的问题在于ECS群集如何工作。如果转到仪表板并检查任务定义,您将看到一个AWS自动分配给资源的IP地址。
在Eureka的情况下,您需要在部署eureka客户端应用程序时以某种方式获取此ip地址,并使用它来注册到您的eureka服务器。但是,当然,您的任务定义会被破坏并以某种方式重新创建,因此您很容易丢失它。
我之前已经做过,有几种方法可以实现。这是方法之一:
placement_constraint
这样一来,您便可以在任务中添加标签,以便将其放置在前面步骤中分配了弹性IP地址的实例中。我知道这看起来很脏而且很复杂,但问题是Eureka的Netflix OSS项目缺少某些部分,我相信这是其内部使用的专有实现方式,他们不想共享。
另一种可能更酷的方法是为实例使用Route53域或别名记录,因此除了使用弹性ip之外,您还可以使用DNS来引用它们。