Amazon ec2 如何在AWS ECS集群上使用docker网络部署Netfilex Eureka服务器和Eureka客户端

Amazon ec2 如何在AWS ECS集群上使用docker网络部署Netfilex Eureka服务器和Eureka客户端,amazon-ec2,amazon-ecs,netflix-eureka,spring-cloud-netflix,Amazon Ec2,Amazon Ecs,Netflix Eureka,Spring Cloud Netflix,我正在将我的spring cloud eureka应用程序迁移到AWS ECS,目前在迁移过程中遇到了一些问题 我在AWS上有一个ECS群集,其中创建了两个EC2服务 尤里卡服务器 尤里卡客户 每个服务上都有一个正在运行的任务 问题: 如何在这两个服务之间建立“docker网络”,以便将我的eureka客户端注册到eureka服务器的注册表?将它们放在同一个集群中似乎并不奏效 在本地,我能够建立一个“docker网络”来完成这项任务。AWS上可能有“docker网络”吗?这里的问题在于ECS集群

我正在将我的spring cloud eureka应用程序迁移到AWS ECS,目前在迁移过程中遇到了一些问题

我在AWS上有一个ECS群集,其中创建了两个EC2服务

  • 尤里卡服务器
  • 尤里卡客户
  • 每个服务上都有一个正在运行的任务

    问题:

    如何在这两个服务之间建立“docker网络”,以便将我的eureka客户端注册到eureka服务器的注册表?将它们放在同一个集群中似乎并不奏效


    在本地,我能够建立一个“docker网络”来完成这项任务。AWS上可能有“docker网络”吗?

    这里的问题在于ECS集群的工作方式。如果您转到仪表板并查看任务定义,您将看到AWS自动分配给资源的ip地址

    在Eureka的情况下,您需要在部署Eureka客户端应用程序时以某种方式获取此ip地址,并使用它注册到Eureka服务器。但当然,您的任务定义会被破坏并以某种方式重新创建,因此您很容易丢失它

    我以前做过,有两种方法可以实现这一点。以下是其中一种方法:

  • 对于您打算将ECS任务作为eureka服务器或注册表分发的EC2实例,您需要分配弹性IP地址,以便始终知道根据主机IP地址连接到何处
  • 您还需要正确标记它们,以便在下一步中引用它们
  • 然后切换回ECS,在部署eureka服务器任务时,在任务定义配置中,有一个参数为
    placement\u constraint
    这将允许您向任务添加标记,以便将这些标记放置在前面步骤中分配的弹性ip地址的实例中
  • 现在,如果这一切都很好,并且您部署了所有内容,那么您应该能够将您的eureka客户端应用引用到该ip并进行注册
  • 我知道这看起来很脏,有点复杂,但问题是,Netflix OSS Eureka项目缺少一些部分,我认为这些部分是他们内部使用的专有实现,他们不想共享


    另一种可能更酷的方法是为您的实例使用Route53域或别名记录,因此您也可以使用DNS来引用它们,而不是使用弹性ip。

    谢谢您的回复!我将尝试弹性IP方法,看看它是否有效。我只是想澄清一下。这意味着我需要将注册表的弹性IP“硬编码”到我的客户机中进行识别?我找到了另一篇关于服务发现的文章,但到目前为止还没有实现这一点,我应该如何添加任务位置?我首先将我的弹性IP标记为使用键值对,其中Key是Name,Value是eureka服务器,但在任务定义下,我似乎无法访问这个键值对。我应该如何准确地输入它呢?是的,这个博客作者也走了一条与我面临的类似的道路。您还可以导出该ip和端口,使其像那样工作,然后通过环境变量或应用程序属性将其注入到spring应用程序中。试试看,让我知道。它不是那样工作的。要使用这些信息,您需要使用类似于sql的语言,该语言允许您为任务定义特定实例。请从亚马逊查看此文档:谢谢您的回复!使用弹性IP方法进行管理:)