У нас есть приложение, которое будет хранить и предоставлять приличный объем данных в S3 глобальной аудитории, где задержка должна быть минимизирована. Итак, мы провели тесты с Amazon CloudFront и увидели положительные результаты.
Однако нам нужен тонкий промежуточный уровень (для обеспечения безопасности и т. Д.), И мы хотели бы поместить его в EC2. Из-за ограничений безопасности этот промежуточный уровень будет выполнять потоковую передачу файлов из S3 / CloudFront:
S3 / CloudFront -> EC2 -> Клиенты
Мы можем географически распределить узлы EC2 (Восток / Запад США и Ирландия), но проблема в том, что клиент из ЕС попадет на наш сервер в США и получит оттуда данные, что в значительной степени снизит производительность CloudFront. Я копался в документации EC2, но не могу найти встроенный способ получить географически распределенную версию EC2 а-ля CloudFront.
Эластичная балансировка нагрузки звучит неплохо, но я не могу найти способ с этим направить на основе маршрутизации ... Предпочтительно, мы хотели бы сохранить количество вещей за пределами EC2 / S3 / и т. Д. до минимума (по понятным причинам).
Есть идеи, как это сделать в рамках EC2 / S3? Уловки DNS / маршрутизации?
Спасибо!
Использование среднего уровня обычно сводит на нет преимущества распределенной CDN, так как у вас будет только несколько узлов в крупных центральных центрах обработки данных, обслуживающих контент, вместо множества узлов пограничного кэша. Если ваш план действительно требует, чтобы контент сначала передавался через сервер, пропустите CloudFront и просто придерживайтесь S3, так как вы не получите от него никаких преимуществ.
Лучше всего формализовать то, что вы подразумеваете под «безопасностью и т. Д.». и посмотрите, сможете ли вы обойтись без использования средств проверки подлинности и доступа, встроенных в CDN. S3 и Cloudfront используют подписи для предоставления обширный контроль над тем, кто может получить доступ к контенту, и вы даже можете создавать ограниченные по времени URL срок действия истечет через несколько часов или минут. Эти специальные URL-адреса могут быть созданы вашим веб-сайтом, чтобы пользователи не могли ссылаться на контент или делиться ссылкой с кем-то еще, и обычно обеспечивают достаточно хорошую безопасность, которая по-прежнему позволяет вам получать выгоду от пограничного кеширования.
Я не очень знаком с документацией Amazon, но в Windows Azure также есть концепция Подписи общего доступа которые позволяют вам делегировать разрешения на загрузку или скачивание без раскрытия ваших личных ключей. Был недавний Эпизод "Облачный покров" на 9 канале который отлично описывает, как создавать подписи общего доступа и как их можно использовать для защиты контента и делегирования разрешений в CDN.
Вы можете использовать службу DNS, которая поддерживает запросы маршрутизации на основе страны пользователя на другой сервер, но, вероятно, нет смысла использовать Cloudfront, если вы обслуживаете данные из EC2, и, судя по всему, нет смысла использовать S3. , поскольку вы всегда отправляете данные из своего экземпляра EC2.
Возможно, если бы вы предложили больше информации о том, какие данные вы отправляете, лучшее решение могло бы стать заметным.
Вы можете развернуть решение для глобальной балансировки нагрузки, в котором географическая близость используется для направления клиентов (через ответы DNS) в ближайший центр обработки данных. Существуют программные решения, которые вы можете запускать в облаке (в вашем случае EC2), такие как Zeus GLB. Вы даже можете получить бесплатную пробную версию и протестировать ее в своей среде.