2016-07-07 18 views
3

我想在AWS使用彈性文件系統(EFS)......我的目標是把它用/自動掛載etc/fstab中動態IP在/ 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 

然而,有一些問題,EFS DNS地址的,我只能通過提供EFS IP的連接。所以,我創建了一個bash腳本,以獲得有關區的正確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自動掛載?

像這樣的東西用的init.d腳本在引導過程中不工作

$(/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。以下是我遵循的說明:http://www.archisoft.ca/ami/lemp/#setting-up-efs-with-auto-mounting

此init.d腳本在引導時啓動,並在函數中循環,直到網絡可用,然後儘快安裝EFS。

EFS在網絡服務器啓動前掛載,因此駐留在EFS中的站點目錄被NGINX Web服務器識別時沒有問題。

我認爲這可能有助於某人!

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安裝到你的機器映像的/ 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文件系統也將在引導時也在重新引導後掛載。

0

對我來說,當我手動停止並啓動我的EC2實例時,使用fstab(as amazon recommends)不起作用。對我來說,這就是自動化的原因 - 我需要一種解決方案來實現災難恢復場景,冷啓動和脫機垂直擴展(例如,當手動添加RAM到EC2實例時,您需要「停止」它,'添加內存',然後'啓動')。對我來說,它的工作要做

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