WEBサーバーを冗長化しており、新たにファイル共有をしたいディレクトリがでてきたため、NFSの設定で新規ディレクトリを追加したときのメモを残す
サーバー構成
ELB
WEBサーバー(2台)
NFSサーバー(1台) ※EC2使用
WEBサーバーでの作業
① 新規ディレクトリ作成
mountしたいディレクトリを新規作成する。
$ mkdir /var/www/hogehoge/public/freepages
② /etc/fstab 編集
新規に追加したいディレクトリPATHを以下のようにPATHだけ変更して追記する
ここに追記することでEC2再起動した際にも自動的に再mountされるようにするための設定。
[追加]
; 記入例) NFSサーバーPATH WEBサーバーPATH nfs rsize=8192,wsize=8192,timeo=14,intr
[host]:/var/www/nfs_shared/freepages /var/www/hogehoge/public/freepages nfs rsize=8192,wsize=8192,timeo=14,intr
NFSサーバーでの作業
① 新規ディレクトリ作成
NFSしたい新規ディレクトリを作成する。
$ mkdir /var/www/nfs_shared/freepages
② /etc/exports 編集
NFSサーバー側で作成する新規ディレクトリのPATHを追加
[追加]
/var/www/nfs_shared/freepages 192.168.14.0/24(rw,all_squash,sync)
AWSマネージメントコンソールでの作業
① NFSサーバーreboot
NFSサーバーをrebootし、上記で変更した/etc/exportsを反映させる
起動後はWEBサーバーのmountが壊れていないかを確認する
② ELBよりEC2を切り離す※2台構成の場合のみ
公開側に影響を与えないため、ELBよりEC2を切り離して作業を行う
③ ELBより切り離したEC2をrebootする
WEBサーバーをrebootし、上記で変更した/etc/fstabを反映させる。
起動後、新規で追加したディレクトリがmountされているか確認する。
新規ファイル、ディレクトリなど作成し動作確認。
作業中にここで1点問題がおきた。
NFSサーバー、WEBサーバーにそれぞれ「/etc/fstab」に追記したディレクトリが存在しないと自動的に紐づけがされなかった(もっと理解が必要…)
④ 問題ない場合、ELBにつけ直す
ELB付け直し後、EC2がInServiceになったら公開側に影響がないか確認する。
⑤ もう片方のEC2を②〜④の手順で実行する
問題ない場合、新規ファイル、ディレクトリなど作成し、問題なくNFSできていることを確認。
今回失敗したこと
WEBサーバーでmountポイントを共有したいディレクトリ毎に紐づけてしまっていたこと。
そのため今後同じような要望が上がった際には同じ手順を踏まなけれればならない。
回避策
WEBサーバーにはmountポイント用のディレクトリを別で持っておく。
ポイント用のディレクトリを1つ作成し、紐付けることでWEBサーバー内では共有したいディレクトリ・ファイルはポイント用ディレクトリの配下にシンボリックリンクをはることで対応可能になる。
そのため、今後同じような要望が上がっても、mountポイント用のディレクトリに対してWEBサーバー内でシンボリックリンクを貼るだけでサーバーの再起動などは不要となる。