Назад | Перейти на главную страницу

Amazon Linux AMI для NFS между несколькими серверами EC2

Итак, я пытался создать систему, подобную Dropbox, чтобы несколько экземпляров EC2 могли работать с одними и теми же файлами. Я сам пишу программы, которые фактически изменяют файлы, и меня не беспокоят проблемы с одновременными ошибками модификации, поскольку я разработал свой способ их обойти. Самое близкое, что я мог найти, чтобы сделать что-то подобное, - это использовать NFS, которая кажется солнечным лучом с небес. (И это тоже не выглядело таким сложным!) Теперь я ПОЧТИ все это настроил, а потом я вбежал головой в кирпичную стену. Я следил за следующим руководством: http://hunterford.me/amazon-ec2-and-nfs/

Единственное, что я сделал иначе, так это заменил эту строку:

/var/www/test   ec2-180-71-131-129.compute-1.amazonaws.com(rw,async)

с этой строкой:

/home/ec2-user/Players *(rw,async)

Первую часть я изменил, потому что именно там я хотел разместить свои файлы, которыми хотел поделиться. Вторую часть я изменил, потому что я не мог понять, что я должен был туда поместить, и он сказал, что я могу поставить подстановочный знак. (Я знаю, что все вы прямо сейчас съеживаетесь, я тоже) Я не получил ошибки, поэтому я пошел с ней. Все остальное прошло гладко, и я создал группы безопасности со всеми перечисленными портами.

Когда я пошел монтировать файл на другом компьютере:

mount -t nfs {MY_FIRST_MACHINES_DNS_HERE}:/home/ec2-user/Players /home-ec2-user/Players

Так вот, сначала он сидел там какое-то время, просто моргая, глядя на меня. В конце концов истекло время ожидания. Кто-нибудь видит, что я сделал не так? Честно говоря, это могло быть что угодно, потому что я понятия не имею, что делаю, когда дело касается NFS. Я использовал стандартный (Free Tier) Amazon Linux AMI с 16 ГБ универсального хранилища SSD на экземпляре t1.micro.

По состоянию на 2017 год самый простой способ сделать это - Эластичная файловая система AWS (EFS), который совместим с NFS v4.1. Вы платить От 0,30 до 0,36 доллара за 1 ГБ памяти без предварительного выделения диска, поэтому, если вы удалите файлы, вы сразу же заплатите меньше. Это доступно не во всех регионах.

Задержка явно выше, чем у EBS, достаточно, чтобы добавить измеримую задержку для некоторых случаев использования, таких как веб-хостинг. Пропускная способность должна быть очень хорошей. Я ожидаю, что AWS работает над улучшениями. Рекомендуется провести тестирование производительности, чтобы убедиться, что оно соответствует вашим потребностям.

Имейте в виду, что если вы все же используете EFS, ваша пропускная способность зависит от общего размера вашего тома EFS с периодическим распределением кредитов. Думайте об этом как о той же модели распределения ресурсов, которую вы используете с этими t1 или t2 Экземпляры EC2 - вы платите меньше за экземпляр, и вы получаете распределение периодического использования. Если у вас закончатся эти кредиты, ваши ресурсы будут иметь меньший приоритет. Ваш экземпляр t2 "кажется" медленнее, передача файлов EFS занимает больше времени для начала и завершения.

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

В EFS на момент написания этой статьи кажется, что единственный вариант - увеличить размер файловой системы.

Если производительность не так важна для вас, как доступность и избыточность, EFS все равно может вам подойти. Если есть сомнения, проведите несколько тестов.

На момент написания этой статьи EFS дает вам 50 МБ / с на ТБ (или долю) на файловую систему, увеличиваясь до 100 МБ / с, пока у вас есть кредиты. Пропускная способность распределяется между все экземпляры доступ к этой файловой системе EFS. Десять экземпляров обращаются к файловой системе размером 1 ТБ? От 5 до 10 МБ / с каждый.

Ссылки:

Вопросы и ответы по Amazon EFS (см. вопрос «Какую пропускную способность может поддерживать каждая файловая система?»): Советы GitLab по размещению репозиториев на EFS (tl; dr - «Не надо»).

Попробуйте изменить nfs в команде mount на nfs4. NFS v3 и более ранние версии зависят от многих демонов и сопоставлений портов для правильной работы. NFSv4 просто нужен nfsd и порт 2049 / tcp.

Что касается *, просто замените его IP-адресом клиентских экземпляров. Если у вас их больше 1, просто добавьте их, например:

/ mount / point ip1 (параметры1) ip2 (параметры2) ...