我对码头工人试图拿出一个小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,而不是说明我自己的数据库中,我会尝试,但现在需要这个工作,因为我已经开始用这个。谢谢你的帮助。
好了,我之前的问题中我自己的解决方案提出了一些要点:
现在,我所面临的Fargate这个问题,并发现,这取决于您的容器/任务定义,它可以在同一任务中用于测试的目的,因此,127.0.0.1应该是答案。
在不同的任务,你需要awsvpc网络模式下工作的话,你都会有这样的:
我的建议是建立一个lambda函数,以动态地发现你的网络接口。
阅读此为更深刻的了解:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html
https://aws.amazon.com/blogs/developer/invoking-aws-lambda-functions-from-java/