Динамический IP в /etc/fstab

Я пытаюсь использовать эластичную файловую систему (EFS) в AWS... Моя цель - автоматически смонтировать ее с помощью /etc/fstab

Поскольку экземпляры EC2 автоматически масштабируются по доступным зонам, EFS монтирует IP-адреса в зависимости от зоны экземпляра. На данный момент 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

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

nano /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

Спасибо

3 ответа

Решение

Я смог автоматически смонтировать EFS во время загрузки с помощью скрипта init.d. Вот инструкции, которым я следовал: http://www.archisoft.ca/ami/lemp/

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

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

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

Для меня использование fstab (как рекомендует amazon) не работало, когда я вручную остановил и запустил свой экземпляр EC2. Что для меня является причиной автоматизации - мне нужно решение для сценариев аварийного восстановления, "холодной загрузки" и перехода в автономный режим для вертикального масштабирования (например, при ручном добавлении ОЗУ к экземпляру 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

Обновление: в настоящее время 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: пинать шины:

Наконец, неинтересно, что EFS исчезает при перезагрузке машины, поэтому подумайте о добавлении EFS-монтирования в / etc / 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 будет также смонтирована во время загрузки после перезагрузки.

Другие вопросы по тегам