Я пробую небольшой POC (учебный эксперимент) на докере. У меня есть 3 образа докера, по одному для витрины магазина, поисковой системы и базы данных, называемой storefront, solr, docmysql соответственно. Я попытался запустить их в рое докеров (на одном узле) на ec2, и он отлично работает.
В POC мне нужно было переместить это в AWS ECS, используя тип запуска EC2 на одном AMI, не оптимизированном для Amazon. Я установил и запустил ecs-агент на этом. Я создал 3 сервиса с одной задачей для каждого из 3 изображений, настроенных как контейнеры в рамках задачи. Речь идет о подключении к базе данных из магазина.
У витрины есть файл свойств, где соединение с базой данных обычно определяется как
"jdbc:mysql://docmysql/hybris64?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false".
Это сработало, когда я запустил его как рой докеров. После того, как я переместил его в ECS (тип запуска EC2), мне пришлось открыть порт 3306 из моей задачи / контейнера для службы docmysql. Это дало мне конечную точку службы docmysql.local, где local является частным пространством имен. Я попытался изменить строку подключения на
"jdbc:mysql://docmysql.local/hybris64?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false"
в файле свойств, и он всегда завершается с ошибкой «Имя или служба неизвестна». Какой должна быть строка подключения? Когда служба создана, я вижу 2 записи в маршруте 53, одну запись SRV и запись A. Запись A имеет имя .docmysql.local. Если я использую ее в строке подключения к базе данных, я вижу, что она работает, но, очевидно, не то, что нужно делать с hascoded taskid. Я читал об AWS Cloud Map (servicediscovery), но все еще не очень ясно, как это сделать. Я не буду ставить какой-либо loadbalancer перед моей задачей БД в сервисе, для БД всегда будет только одна задача.
Итак, каков наилучший способ создания строки подключения, которая работает? Кроме того, почему у меня не было проблем, когда я управлял им как рой докеров.
Я знаю, что могу использовать RDS вместо того, чтобы указывать свою собственную базу данных, я попробую это, но сейчас мне нужно, чтобы это работало, поскольку я начал с этим. Спасибо за любую помощь.