У нас есть следующие настройки на AWS: 8 сред Elastic Beanstalk (4 QA, 4 PROD) читают и записывают данные. Обычно одна среда (API) всегда считывает данные из DynamoDB и RDS, а одна среда (сервер заданий для сборщика данных) обычно записывает данные.
Чтобы повысить производительность, мы создали сервер memcached, к которому может получить доступ логика приложения. Как правило, вышеупомянутый сервер API пытается читать из кеша (и добавляет, если он не может найти элемент), тогда как сервер заданий аннулирует элементы кеша, чтобы заставить API читать их из базы данных.
Пока все хорошо, все работает нормально. Основная проблема теперь в настройках безопасности. memcached требует, чтобы порт 11211 был открыт, и весь мир может подключиться к нему по telnet и прочитать наши настройки кеша.
Сначала я установил группу безопасности сервера memcached, чтобы разрешить только входящие соединения с наших серверов VPN, чтобы наши машины разработки могли получить к нему доступ. Работает нормально, всего 3 CIDR. Затем я попытался добавить группы безопасности сред Elastic Beanstalk, чтобы сделать то же самое. Это больше не работает. Я не могу получить доступ к серверу memcached с серверов Elastic Beanstalk. Что я в основном делал на CLI
aws ec2 authorize-security-group-ingress --group-name security-group-of-memcached-server --protocol tcp --port 11211 --source-group xxx-rds-associations --group-owner 517999993
где xxx-rds-association - группа безопасности среды Elastic Beanstalk и ее экземпляров. Чтобы избежать глупой проблемы с настройкой приложения, я также подключился к серверу по протоколу RDP и попытался получить доступ к серверу memcached с помощью telnet. Тоже не вышло.
С моей стороны какое-то недоразумение? Не разрешает ли добавление группы безопасности к источнику серверу, имеющему эту группу, доступ к целевому серверу?
Или я просто что-то упустил?
Я приветствую любой вклад. С уважением, Марко