
php5(もうあんま関係ねえけどな)アップローダーをECSに配置する(4) EFSで複数タスクのファイルを共有
今回はphpとかいうより単純にインフラの話に近くなっている。要求される技術力もはや並とは言い難い。どうせこんな拙いドキュメントで理解できる奴なんていねえんだからちゃんと勉強するきっかけになるといいなってことで。
何も考えずにファイル置き場はEFSにしてしまおうってことで。S3使うように改造できないならもうこれしかない、かも
efsの作成

この辺よりやる。ここで

カスタマイズを押すとより詳細な設定が現われる(多すぎぃ)

ここで「へ〜バックアップとかアーカイブモードとかあるんだ〜」とかざっくり確認したら大体defaultのまま次へを押して

まあこでもdefault vpcになってることを確認する。実はセキュリティーグループの設定がいるけど、これは後でトライアンドエラーの方で戻ってこよう。

こういうのも特に何も考えず「作成」する

ec2からメンテナンスする
前に作っといたメンテナンス用のec2でmountする。ecsではこういうのやれなくもないけど設定がめんどい
$ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 [EFS File System DNS Name]:/ /mnt

DNS名はここで取れる、で
admin@ip-172-31-10-144:~$ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-0d43cd7e72cc13d9b.efs.ap-northeast-1.amazonaws.com:/ /mnt
mount: /mnt: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.
dmesg(1) may have more information after failed mount system call.
とかなった場合はnfs-commonが入ってないのと
$ sudo apt update; sudo apt install -y nfs-common
これを入れても応答がない場合セキュリティーグループがよろしくない。まあ先述の通りセキュリティーグループは何も割当てておらん

これはefs側にセットすること

などとすると、とりあえずmountできるので
admin@ip-172-31-10-144:~$ ls /mnt
admin@ip-172-31-10-144:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 178M 0 178M 0% /dev
tmpfs 44M 528K 44M 2% /run
/dev/nvme0n1p1 7.7G 1.4G 5.9G 19% /
tmpfs 219M 0 219M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/nvme0n1p15 127M 148K 127M 1% /boot/efi
tmpfs 44M 0 44M 0% /run/user/1000
fs-0d43cd7e72cc13d9b.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt
(容量が無限なので8.0Eとかなってる)
ここに/mnt/data を作っている(アップロード後で確認するからumountしないでね)
admin@ip-172-31-10-144:~$ sudo mkdir /mnt/data

アップロードしてみる

実は4〜6は揮発しちゃったやつなので存在がないが00008だけはうまいことアップロードできてるようで、ec2で確認すると
admin@ip-172-31-10-144:~$ find /mnt/
/mnt/
/mnt/data
/mnt/data/00008.jpg
などと正しく共有ディスクに保存されているのがわかる。
タスクを2つにしてみる
で、こうなったら今DBはネットワークで接続しているしファイルシステムもネットワークなのでタスクを2つにしても一応動くはずだ、ってことでやってみよう。

サービスを2つにすると

このように2つめがデプロイされてくる。そしたら


このように2つのIPでサービスを維持している。どっちでもいいからアップロードして

ただしく両方のIPでアクセスを確認することを確認できればこのセクションは終わりだ。もったいないからタスクは1に戻しとこう。あとメンテ用のec2も停止させとく
次回はいよいよファイヤーウォールを使ってこの2つとか3つとか動いてる奴を1つに見せていくよ〜。この場合セッションの話もあるけどな
あとがき
ここまでくるとphp5なんて話はもうあんま関係ない。要求スキルセットはさらに上昇していくよ。