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

Монтирование эластичной файловой системы (EFS) за пределами AWS

У меня есть сервер за пределами AWS. Я бы хотел смонтировать к нему том EFS, но не уверен, возможно ли это.

Возможно, если вы создадите VPC и создадите туннель через VPN?

Кто-нибудь знает, возможно ли это?

Важные обновления:

В октябре 2018 года AWS расширил возможности сетевой технологии, лежащей в основе EFS, так что теперь она изначально работает через управляемые VPN-соединения и межрегиональный пиринг VPC, не прибегая к обходному пути прокси, описанному ниже.

https://aws.amazon.com/about-aws/whats-new/2018/10/amazon-efs-now-supports-aws-vpn-and-inter-region-vpc-peering/

В конце 2016 года EFS добавила поддержку подключения через схемы AWS Direct Connect.

https://aws.amazon.com/blogs/aws/amazon-efs-update-on-premises-access-via-direct-connect-vpc/


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

Итак, сначала немного предыстории:

«Эластичность» в эластичной файловой системе в первую очередь относится к автоматическому масштабированию пространства хранения и пропускной способности, а не к гибкости внешнего доступа.

EFS, похоже, не имеет значимых ограничений на объем данных, которые вы можете хранить. Документированный максимальный размер любого отдельного файла на томе EFS составляет 52 673 613 135 872 байта (52 ТиБ). Большинство других лимитов столь же щедры.

EFS особенно "эластичен" в плане выставления счетов. В отличие от файловых систем на томах EBS, пространство в EFS не выделяется заранее, и вы платите только за то, что храните, в среднем за час. Ваши расходы растут и уменьшаются (они «эластичны») в зависимости от того, сколько вы храните. Когда вы удаляете файлы, вы перестаете платить за место, которое они занимали в течение часа. Если вы сохраните 1 ГБ в течение 750 часов (≅1 месяц), а затем удалите его, или если вы сохраните 375 ГБ в течение 2 часов, а затем удалите его, ваш ежемесячный счет будет таким же ... 0,30 доллара США. Это, конечно, сильно отличается от EBS, который с радостью выставит вам счет в 37,50 долларов за хранение 375 ГБ 0x00 на оставшиеся часы месяца.

Модель ценообразования на хранилище S3 во многом аналогична EFS, поскольку выставление счетов за хранилище прекращается, как только вы удаляете объект, а стоимость составляет ~ 1/10 стоимости EFS, но, как я и другие неоднократно упоминали, S3 не является файловая система. Такие утилиты, как s3fs-fuse, пытаются обеспечить «мост импеданса», но при попытке обработать то, что на самом деле не является файловой системой, так, как если бы оно было, существуют определенные трудности (возможная согласованность перезаписи не является последней из них). Итак, если вам нужна настоящая «файловая система», и она предназначена для приложения, доступ к которому должен быть общим, или требуемое пространство для хранения трудно определить или вы хотите масштабировать его по запросу, EFS может быть полезен.

И это здорово, когда у вас есть 8,0 EiB свободного места.

$ df -h | egrep '^Filesystem|efs'
Filesystem                                            Size  Used Avail Use% Mounted on
us-west-2a.fs-5ca1ab1e.efs.us-west-2.amazonaws.com:/  8.0E  121G  8.0E   1% /srv/efs/fs-5ca1ab1e
us-west-2a.fs-acce55ed.efs.us-west-2.amazonaws.com:/  8.0E  7.2G  8.0E   1% /srv/efs/fs-acce55ed

Но, конечно же, важно использовать службу хранения, наиболее подходящую для ваших приложений. Каждый из вариантов имеет свои допустимые варианты использования. EFS, вероятно, является наиболее специализированным из решений хранения, предлагаемых AWS, с более узким набором вариантов использования, чем EBS или S3.


Но можно ли использовать его вне VPC?

Официальный ответ - нет:

Монтирование файловой системы через механизмы частного подключения VPC, такие как VPN-соединение, пиринг VPC и AWS Direct Connect, не поддерживается.

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

EFS в настоящее время ограничен только доступом к EC2 Linux. Это тоже в VPC. Скоро будут добавлены другие функции. Следите за объявлениями AWS о новых запущенных функциях.

- https://forums.aws.amazon.com/thread.jspa?messageID=732749

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

Каждой файловой системе EFS назначаются IP-адреса конечных точек в вашем VPC с использованием эластичных сетевых интерфейсов (ENI), обычно по одному для каждой зоны доступности, и вы хотите быть уверены, что монтируете один в зоне доступности, соответствующей экземпляру, не только из соображений производительности, но и из соображений производительности. также из-за того, что при передаче данных через границы зоны доступности взимается плата за пропускную способность.

Интересным в этих ENI является то, что они не используют таблицы маршрутов для подсетей, к которым они подключены. Кажется, что они могут реагировать только на экземпляры внутри VPC, независимо от настроек группы безопасности (каждая файловая система EFS имеет свою собственную группу безопасности для управления доступом).

Поскольку внешние маршруты недоступны, я не могу получить доступ к конечным точкам EFS напрямую через мою аппаратную VPN ... поэтому я обратился к своему старому приятелю HAProxy, который действительно (как предсказывал @Tim) необходим для работы. Это простая конфигурация, поскольку EFS использует только TCP-порт 2049.

Я использую HAProxy на t2.nano (HAProxy очень эффективен) с конфигурацией, которая выглядит примерно так:

listen fs-8d06f00d-us-east-1
    bind :2049
    mode tcp
    option tcplog
    timeout tunnel 300000 
    server fs-8d06f00d-us-east-1b us-east-1b.fs-8d06f00d.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000
    server fs-8d06f00d-us-east-1c us-east-1c.fs-8d06f00d.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000 backup
    server fs-8d06f00d-us-east-1d us-east-1d.fs-8d06f00d.efs.us-east-1.amazonaws.com:2049 check inter 60000 fastinter 15000 downinter 5000 backup

Этот сервер находится в us-east-1b, поэтому он использует конечную точку us-east-1b в качестве основной, а два других - в качестве резервных, если конечная точка в 1b не проходит проверку работоспособности.

Если у вас есть VPN в вашем VPC, вы затем монтируете том, используя IP-адрес этого прокси-сервера в качестве целевого (вместо прямого использования конечной точки EFS), и вуаля вы смонтировали файловую систему EFS вне VPC.

Я успешно смонтировал его на внешних машинах Ubuntu, а также на серверах Solaris (где EFS оказалась очень удобной для ускорения их вывода из эксплуатации, облегчая перенос служб с них).

В определенных ситуациях, например при перемещении данных в AWS или параллельном запуске устаревших и облачных систем на определенных данных во время миграции, EFS кажется победителем.

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

Если у вас нет VPN, то пара машин HAProxy, одна в AWS, а другая в вашем центре обработки данных, также может туннелировать EFS через TLS, устанавливая индивидуальное TCP-соединение с полезной нагрузкой, заключенной в TLS, для транспортировки каждой отдельной EFS. подключение через Интернет. Технически не VPN, а шифрованное туннелирование соединений. Это тоже, кажется, работает довольно хорошо.


¹Solaris 10 (что неудивительно) по умолчанию несколько сломан - изначально у root не было особых прав - файлы на томе EFS, созданные root, принадлежат root, но не могут быть chowned другому пользователю с машины Solaris (Operation not permitted), хотя все работает так, как ожидается от клиентов Ubuntu. В этом случае решение состоит в том, чтобы победить демон сопоставления идентификаторов NFS на компьютере Solaris, используя svcadm disable svc:/network/nfs/mapid:default. Остановка этой службы заставляет все работать должным образом. Кроме того, вызов /usr/sbin/quota при каждом входе в систему необходимо отключать в /etc/profile. Могут быть лучшие или более правильные решения, но это Solaris, поэтому мне не хватает любопытства, чтобы исследовать.

20 декабря 2016 года Amazon анонсировала AWS Direct Connect, который можно использовать для монтирования файловой системы EFS на локальных серверах. Итак, в принципе, есть встроенная функция, которая позволяет использовать AWS EFS вне VPC.

В качестве предварительного условия вам нужно будет включить и установить соединение AWS Direct Connect, а затем использовать nfs-utils, как вы должны использовать при монтировании EFS в экземплярах EC2.

Более подробную информацию можно найти на fследующий URL. Я только что опубликовал это, так как я тоже искал это будущее, чтобы другие знали, что существует собственное решение для подключения EFS за пределами VPC.