ECS EC2启动类型:服务型数据库连接字符串

问题描述 投票:1回答:1

我对码头工人试图拿出一个小POC(学习实验)。我有3倍码头工人的图像,分别用于店面,搜索引擎,并称为数据库引擎,店面,Solr的,分别docmysql。我曾尝试在泊坞窗群(单个节点上)在EC2上运行他们,它工作正常。

在POC,我接下来需要使用针对单个非亚马逊的ECS-AMI优化的EC2推出的类型与本移动到AWS ECS。我已经安装并在此开始了ECS-剂。我创建了3个服务,为每个配置作为任务容器内的3个图像的一个任务。现在的问题是关于从店面连接到数据库。

店面具有这样的数据库连接通常被定义为一个属性文件

  "jdbc:mysql://docmysql/hybris64?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false". 

这工作时,我跑了它作为一个码头工人群。有一次,我把它搬到ECS(EC2启动类型),我不得不为docmysql服务我的任务/容器暴露的端口3306。这给了我docmysql.local的服务端点,以“本地”是一个私人的命名空间。我试图改变连接字符串

"jdbc:mysql://docmysql.local/hybris64?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false" 

在属性文件中,它总是失败,“名称或服务不知道”。我应该我的连接字符串是什么?在创建服务,我看到53路入口2,一个SRV记录和A记录。 A记录作为其名称的.docmysql.local,如果我使用这个数据库连接字符串中,我看到它的作品,但显然不是做的hadcoded的taskid正确的事情。我读过关于AWS云地图(servicediscovery),但仍然不是很清楚如何去做。我不会放任何负载平衡器在服务我的数据库任务前,总会有只有一个数据库任务。

那么,什么是产生工作连接字符串的最佳方式。另外为什么我没有问题,当我跑它作为一个码头工人群。

我知道我可以使用RDS,而不是说明我自己的数据库中,我会尝试,但现在需要这个工作,因为我已经开始用这个。谢谢你的帮助。

mysql docker amazon-ecs service-discovery
1个回答
1
投票

好了,我之前的问题中我自己的解决方案提出了一些要点:

  • 你需要您的实例使用ECS规模?如果不是,它迁移到RDS。
  • 你需要将其部署到EC2型?如果没有,用fargate,更易于操作。

现在,我所面临的Fargate这个问题,并发现,这取决于您的容器/任务定义,它可以在同一任务中用于测试的目的,因此,127.0.0.1应该是答案。

在不同的任务,你需要awsvpc网络模式下工作的话,你都会有这样的:

  • 使用该awsvpc网络模式中的每个任务接收其自身的弹性网络接口,其被附连到承载它的容器的实例。 (FROM AWS)

我的建议是建立一个lambda函数,以动态地发现你的网络接口。

阅读此为更深刻的了解:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html

https://aws.amazon.com/blogs/developer/invoking-aws-lambda-functions-from-java/

© www.soinside.com 2019 - 2024. All rights reserved.