2016-07-07 8 views
3

Я пытаюсь использовать эластичную файловую систему (EFS) в AWS ... Моя цель состоит в том, чтобы автоматически смонтировать его с помощью/и т.д./FstabДинамический IP в/и т.д./Fstab

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

sudo mount -t nfs4 -o nfsvers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-xxxx.efs.us-east-1.amazonaws.com:/ efs 

Однако, есть некоторые проблемы с EFS DNS URL, я только смог подключиться через условие EFS IP. Так что я создал Баш скрипт, чтобы получить правильный IP, относящийся к зоне ...

нано /efsmount.sh

#!/bin/sh 

CURR_ZONE=$(/usr/bin/curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) 

if [ "$CURR_ZONE" == "us-east-1e" ];then 
    echo "172.xx.xx.xx" 
fi 
... more if statements to cover all zones 

можно монтировать с помощью этого скрипта

sudo mount -t nfs4 -o nfsvers=4.1 $(/efsmount.sh):/ /efs 

Теперь мой вопрос ... как мне авто монтировать с помощью fstab?

Что-то вроде этого не работает

$(/efsmount.sh):/ /efs nfs  auto,noatime,nolock,bg,nfsvers=4.1,intr,tcp,actimeo=1800 0 0 

Благодаря

+1

Fstab не является средой программирования, и вы не можете вставлять динамическое содержимое в него. вы можете генерировать файл динамически, но он читается как статический текст, независимо от того, что вы пытаетесь сделать внутренне. –

+0

Спасибо ... любые альтернативы, чтобы получить это смонтировано при загрузке? – Jsp

+2

внешний скрипт в cron или какой-либо другой среде автоматического триггера, которая требует от вас монтирования. то вы можете определить IP-адреса и напрямую подключить mount. –

ответ

0

я был в состоянии автоматического монтирования файловой системы EFS во время загрузки с init.d скрипт. Ниже приведены инструкции, которые я выполнил: http://www.archisoft.ca/ami/lemp/#setting-up-efs-with-auto-mounting

Этот скрипт init.d запускается во время загрузки и проходит через функцию до тех пор, пока сеть не станет доступной, а затем не установит EFS как можно скорее.

EFS устанавливается до начала веб-сервера, поэтому каталоги сайтов, находящиеся в EFS, распознаются веб-сервером NGINX без проблем.

Я думал, это может помочь кому-то!

0

Обновление: В настоящее время EFS уже позволяет использовать общий URL-адрес, который не зависит от зоны доступности (он всегда указывает на правильную точку доступности).

Вам только нужно использовать запись FSTAB как этот:

'file-system-id'.efs.'aws-region'.amazonaws.com:/ /path/to/dir nfs4 nfsvers=4.1 0 0 

Старый ответ:

У меня была такая же проблема монтирования томов EFS в мой /etc/fstab зависит от зоны доступности.

От experoinc.com - Amazon’s Elastic File System: Kicking the Tires:

Наконец, это не забава, имеющий EFS исчезают, когда машина перезагружается, поэтому рассмотрим добавив EFS крепление к/и т.д./Fstab вашей машины изображения. К сожалению, у вас есть разные точки монтирования для каждой зоны доступности, поэтому немного сложно выпекать в AMI для каждого региона, как обычно. Возможно, было бы разумно настроить сценарий инициализации для запуска при загрузке.

В настоящее время решение, которое я использую, заключается в создании помощника монтирования (/sbin/mount.efs-nfs4) и его использовании для монтирования томов EFS.

Код и инструкции для этого помощника приведены в этом Github Gist: https://gist.github.com/rarylson/9095c56137a60a7fdb7bb2b420f0ad04.

Короче говоря, используя его, вы можете поместить такую ​​строку в /etc/fstab без указания наличия зоны в URL и с использованием типа efs-nfs4 «поддельные» файловой системы:

'file-system-id'.efs.'aws-region'.amazonaws.com:/ /path/to/dir efs-nfs4 nfsvers=4.1 0 0 

, а затем работает:

mount /path/to/dir 

Файловая система EFS будет смонтирована во время загрузки после перезагрузки.

0

Для меня использование fstab (как рекомендует amazon) не работает, когда я вручную остановился и начал свой экземпляр EC2. Который для меня является причиной автоматизации - мне нужно решение для сценариев аварийного восстановления, холодная загрузка и при выходе в автономном режиме по вертикали (например, при ручном добавлении RAM в экземпляр EC2 вам необходимо «остановить» его , «добавить RAM», затем «запустите»). Для меня он работал, чтобы сделать

crontab -e 

, а затем добавьте строку

@reboot sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-123ddddd.efs.us-east-1.amazonaws.com:/ /data