Я настраиваю приложение для работы в AWS при развертывании «полной инфраструктуры». Один из аспектов этого развертывания требует, чтобы каждый сервер мог видеть общее хранилище. Они рекомендуют использовать сервер WebDAV, но мы предпочли бы использовать какой-нибудь общий смонтированный диск.
EFS - идеальное решение здесь ... но оно недоступно в моем регионе.
В качестве альтернативы мы думали о настройке монтирования NFS. Можно ли смонтировать NFS на томе EBS, чтобы он работал аналогично EFS? Какие преимущества / недостатки в этом?
Я бы с осторожностью отнесся к рекомендации S3fs. S3 не предназначен для использования в качестве файловой системы и имеет некоторые ограничения, когда приложение ожидает этого. В конечном итоге S3 согласован, что означает, что обновление может или не может быть отражено своевременно. S3 не имеет концепции частичных изменений, поэтому, используя файл журнала в качестве примера, если вы добавляете или изменяете иным образом, весь файл перезагружается при каждом изменении. Это может дорого обойтись. S3FS пытается использовать локальный кеш, чтобы избежать чрезмерных передач, и это добавляет еще один уровень потенциальной несогласованности, если что-то произойдет на этом узле.
Хотя настройка NFS на экземпляре EC2 довольно тривиальна, вы создаете единую точку отказа (SPOF) в своем проекте (если экземпляр или EBS уйдут, это повлияет на ваше приложение). Кроме того, трафик из других инстансов в вашу NFS-зону, проходящий через зону доступности, потребует платы за пропускную способность.
Если вы ищете NFS корпоративного уровня и не можете использовать EFS, есть предложения Marketplace (aws.amazon.com/marketplace), но вы также можете перейти на открытый исходный код и использовать GlusterFS, смонтированную как NFS с несколькими экземплярами EC2, чтобы избежать SPOF и удерживать трафик в зонах доступности: https://docs.gluster.org/en/latest/Install-Guide/Setup_aws/ (но Gluster может быть зверем сам по себе)
Вы можете попробовать CVO / CVS NetApp https://cloud.netapp.com/cloud-volumes-service-for-aws они предоставляют как CIFS, так и NFS
У вас есть несколько вариантов, но что лучше всего зависит от ваших требований, но вы не предоставили достаточно подробностей, чтобы рекомендовать один вариант другому. Я, наверное, не рассмотрел все варианты.
Сервер NFS
Ты можешь настроить сервер NFS на экземпляре EC2. При этом используется том EBS и предоставляется общий доступ к нему через NFS. Для этого в Интернете будет много учебных пособий (один, два).
Использовать S3 изначально
В зависимости от ваших требований вы можете использовать S3 изначально, вызывая S3 API или даже используя aws s3 синхронизация через cron.
RSync
Вы можете использовать rsync с главного сервера, немного t2.nano, вероятно, будет достаточно для такого рода вещей.
S3FS
Другой вариант - использовать S3FS, что делает корзину S3 похожей на файловую систему. Вы можете использовать Конечная точка S3 чтобы предотвратить передачу данных через общедоступный Интернет.
Перед тем, как это сделать, вам следует прочитать несколько статей о надежности и провести тщательное тестирование. Насколько я понимаю, если ваша корзина S3 находится в том же регионе, что и ваш экземпляр EC2, вы не платите плату за трафик, но я могу ошибаться, и это может измениться в любое время. В Страница цен на S3 говорит: «Передача между корзинами S3 или из S3 в любую службу (службы) в одном регионе бесплатна» - я предполагаю, что EC2 считается услугой.
Информация, которую я прочитал, предполагает, что это, вероятно, будет достаточно надежным вариантом, но вам необходимо тщательно протестировать выпуск S3FS.