Могу ли я разместить статический веб-сайт на Amazon EC2 в сочетании с EFS?

654
Avinash

Мой сайт в настоящее время размещен на EC2 с объемом EBS. Но очень часто я запускаю Java-программу в одном экземпляре (которая выводит данные в EBS) для генерации / обновления файлов для веб-сайта. Процессор и память достигают 100% во время выполнения, что делает мой сайт либо очень медленным, либо вообще не открывается, пока процесс не завершится. Более того, я плачу за большой экземпляр за целый месяц, просто чтобы запускать эту Java-программу несколько раз в месяц.

Почему бы не запустить Java-программу в локальной системе и обновить выходные файлы на EBS? Скорость интернета в моем районе просто смешная.

Почему не вывод на S3? Мои файлы имеют небольшой размер и большой объем. Недопустимая скорость передачи между EC2 к S3. Я даже пробовал s4cmd, но скорость передачи все равно недопустима.

Почему бы не смонтировать один и тот же том EBS на 2 экземпляра EC2? Я думаю, что это взломать.

Поэтому я хочу переключиться на EFS и подключить два экземпляра EC2. Один предназначен для запуска веб-сайта. И еще один экземпляр по требованию для запуска процесса Java только при необходимости.

Мои вопросы об EFS: 1) Может ли моя java-программа выводить большие файлы в EFS с той же скоростью, что и в EBS? 2) Amazon не взимает дополнительную плату за исходящую пропускную способность EFS. Это ограничено?

0
Пропускная способность, доступная из EFS, варьируется в зависимости от того, сколько данных вы сохранили, используя алгоритм baseline + burst на основе кредита. Чтобы дать вам содержательный ответ, укажите приблизительно, сколько данных должно храниться в ГиБ. Michael - sqlbot 7 лет назад 0
Я хочу хранить только около 2 ГБ - 5 ГБ. Но Avinash 7 лет назад 0
Спасибо, я только что проверил это, и если я правильно понял, EFS может обеспечить только 0,5 МБ / с, если я храню данные менее 10 ГБ. Я хочу хранить только около 2-5 ГБ данных, но требую очень высокую исходящую пропускную способность. Я думаю, что EFS не подходит для моего требования. Странно, что Amazon связывает объем данных с трафиком. Я мог бы хранить только небольшие данные, но это не значит, что мой исходящий трафик тоже будет очень низким. Avinash 7 лет назад 0
Ваша интерпретация немного неполна. Я постараюсь уточнить это с ответом, в ближайшее время. Michael - sqlbot 7 лет назад 0
Можете ли вы рассказать нам больше о вашем случае использования? В вашей ситуации я бы уменьшил размер экземпляра и использовал бы что-то другое для пакетной обработки - точечный экземпляр, AWS Batch (новый), Lambda и т. Д. Предоставление доступа к файлам в вашем экземпляре с использованием NFS кажется довольно практичным. Я читал, что EFS имеет большую задержку, когда начинается чтение, поэтому для небольших файлов это не идея - лучше для больших файлов. Tim 7 лет назад 0

1 ответ на вопрос

1
Michael - sqlbot

Важное примечание. По состоянию на 2018-07-12 EFS позволяет приобретать выделенную пропускную способность . Ответ ниже отражает поведение службы до того, как эта функция была доступна. Раньше небольшие файловые системы EFS легко перегружались трафиком, потому что производительность линейно увеличивалась с размером хранимых данных ... поэтому при сохранении всего нескольких ГБ эффективный предел был слишком мал для некоторых сценариев использования, в которых это не учитывалось. в учетную запись.


Почему бы не смонтировать один и тот же том EBS на 2 экземпляра EC2? Я думаю, что это взломать.

Вы не можете подключить один и тот же том EBS к нескольким экземплярам. Однако вы можете создать экспорт NFS с компьютера с томом EBS и подключить его по сети. NFS - это устоявшаяся технология, а не взлом. Фактически, это было бы почти идентично использованию EFS с вашей точки зрения, поскольку EFS фактически использует тот же протокол - NFS.

Amazon не взимает дополнительную плату за исходящую пропускную способность EFS. Это ограничено?

«Исходящая полоса пропускания» не совсем верная концепция с EFS, потому что трафик строго между EFS и экземпляром, который обращается к нему. При правильном подключении с использованием конечной точки, специфичной для зоны доступности, трафик между EFS и экземплярами EC2 никогда не покидает зону доступности.

Если веб-браузер загружает файл, который находится в вашей файловой системе EFS, он обязательно должен загружать его через один из ваших экземпляров. Таким образом, исходящая пропускная способность на самом деле является исходящей для EC2, а не для исходящей EFS.

Доступная пропускная способность («пропускная способность») между EFS и EC2 увеличивается в зависимости от общего размера файлов, хранящихся в файловой системе EFS.

Amazon EFS использует кредитную систему, чтобы определить, когда файловые системы могут взорваться. Каждая файловая система зарабатывает кредиты с течением времени с базовой скоростью, которая определяется размером файловой системы, и использует кредиты всякий раз, когда она читает или записывает данные. Базовая скорость составляет 50 МБ / с на ТиБ памяти (эквивалентно 50 КБ / с на ГиБ памяти).

Накопленные пакетные кредиты дают файловой системе разрешение на пропускную способность выше базовой скорости. Файловая система может непрерывно увеличивать пропускную способность на своей базовой скорости, и когда она неактивна или пропускная способность ниже базовой скорости, файловая система накапливает пакетные кредиты.

http://docs.aws.amazon.com/efs/latest/ug/performance.html

Но существует возможность пакетной передачи 100 МБ / с, какой бы маленькой ни была файловая система. Для файловой системы 10 ГБ вы можете увеличить скорость до 100 МБ / с за 7,2 минуты в день или до 25 МБ / с за 28,8 минуты в день и т. Д.

То, что вы не заметите, сделав вывод, что этого недостаточно, - это кеш ОС. На вашем веб-сервере файлы, считанные из EFS, могут оставаться в кэше ОС на этом компьютере, что означает, что после того, как файл был передан в браузер, веб-серверу может не потребоваться чтение файла из EFS при следующей загрузке, но вместо этого можно только проверить, что оно не изменилось, а затем подать его браузеру из памяти. Это поведение должно быть автоматическим, если вы не отключите его.

Странно, что Amazon связывает объем данных с трафиком. Я мог бы хранить только небольшие данные, но это не значит, что мой исходящий трафик тоже будет очень низким.

Не очень странно, так как размер хранимых данных является единственным измерением, которое влияет на ценообразование. Тома EBS в целом схожи: чем больше том, тем больше пропускная способность в МиБ / с и / или IOPS доступна для этого тома.

Здесь, опять же, не путайте исходящий трафик вашего приложения с пропускной способностью резервного хранилища. Эти два значения не тесно связаны.

Для небольших экземпляров характеристики экземпляра на самом деле с большей вероятностью являются ограничивающим фактором. Например, экземпляр t2.small имеет только доступную пропускную способность 31,25 МБ / с (250 Мбит / с, 0,25 Гбит / с), поэтому верхний предел производительности не будет соответствовать файловой системе.

Попробуйте ваше приложение с EFS и наблюдайте метрики CloudWatch для файловой системы. Каждая рабочая нагрузка различна, и это действительно единственный способ узнать, будет ли она работать так, как ожидалось.

Спасибо. Это полностью имеет смысл сейчас. Теперь я понял, что даже если в EFS одновременно выполняется 1000 запросов к файлу, экземпляр выполняет только один запрос к EFS-серверу. Более того, я также понял, что пропускная способность зависит от среднего размера ввода-вывода, а не от размера файла из этого предложения на странице aws: «Общая пропускная способность обычно увеличивается с увеличением среднего размера ввода-вывода, поскольку накладные расходы амортизируются из-за большого объема данных». Но установка в той же зоне доступности (или даже в регионе) для меня невозможна, так как почти весь мой трафик идет из Азиатско-Тихоокеанского региона, а EFS здесь недоступна. Avinash 7 лет назад 0
Официально EFS поддерживается только тогда, когда файловая система EFS и экземпляры, монтирующие ее, находятся в одном регионе. [Я разработал обходной путь] (http://serverfault.com/a/799213/153161) для этого, который прекрасно работает, но ограничения скорости света делают это плохо подходящим для многих приложений из-за увеличения задержки и плата за передачу данных при передаче трафика по регионам. Michael - sqlbot 7 лет назад 0