見出し画像

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要のセキュリティーグループを作る。2049ポートの開放が必要だ。

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

efs sgを合てている

などとすると、とりあえず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つめがデプロイされてくる。そしたら


18.183.234.121でも
43.207.215.204でも同じのが動いとる

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

ただしく両方のIPでアクセスを確認することを確認できればこのセクションは終わりだ。もったいないからタスクは1に戻しとこう。あとメンテ用のec2も停止させとく

次回はいよいよファイヤーウォールを使ってこの2つとか3つとか動いてる奴を1つに見せていくよ〜。この場合セッションの話もあるけどな

あとがき

ここまでくるとphp5なんて話はもうあんま関係ない。要求スキルセットはさらに上昇していくよ。


この記事が気に入ったらサポートをしてみませんか?