構築開始
構成図から月のランニングコストを概算で算出し、稟議を通しました。
ランニングコストの計算はオフィシャルのコスト計算ツールを使いました。
・言語をJapaneseに変更
・リージョンをアジアパシフィック(東京)に変更
・無料利用枠のチェックを外す
・EC2インスタンス(説明、インスタンス数、月の使用率、スペックタイプ)を指定
・EC2にくっつけるEBSボリュームを指定。
↑EBSボリュームのストレージ容量は単純にサーバーに乗せるファイル容量以外にも、容量に比例してIOPSが増えるので、あまり小さくしすぎると複数接続時に耐えられなくなるようです。私はAWSの方に100GB取っておけばそれなりに安心といわれたのでそうしました。
・データ転送量は動画サイトとかでなければ、そこまでシビアにならなくても良いっぽい。自分は既存システムのApacheログから1日の転送量目安を算出して31倍したものを入力しました。
オフィスとAWS間のVPNを設定する
VPCを作る
AWSのアカウント作ったりIAMの設定したりという初期設定は他サイトで説明してくれているので省略します。
オフィスのルーターはYAMAHAのRTX1210なので、下記サイトの通りに設定し、
VPN接続設定ファイルをダウンロードしました。
●Amazon VPCとの接続 Amazon VPCの仮想ネットワーク(IPsec)を設定する
ルーターへの設定ファイル流し込みの部分ですが、うちはNTTからルーターをレンタルしているので、
NTTの方に設定ファイルを渡してやってもらいました。
適当にLAMPのEC2立ててみて、ブラウザからローカルIPアドレスでアクセス出来ることを確認して完了です。
完了と思いきや、VPN経由の通信が不安定・・・
VPN環境できたし環境作りこんでいくぞ!なんて意気込んでいた矢先、なんだかSSHでの通信がたまに固まる現象が発生。
どうやら、小さい通信であれば問題無いのに例えばTOPのようなコマンドだとターミナルが固まってしまいます。
Apacheでも「It'works!」みたいなシンプルページなら見れるのに、普通に作りこんだページは閲覧できず、、。
だいぶハマって丸一日ほど調べつくした結果、MTUの設定がルーターと合っていないということがわかりました。
MTUとは"1回の転送(1フレーム)で送信できるデータの最大値を示す伝送単位のこと"です。
今回のケースで言うと、サーバーから飛んでくるMTUがデカすぎて、ルーターの方で一度分解して、通して、再構成、みたいなことが行われたために、通信エラーとなっていました。
下記のコマンドで、AWS上に立てたLAMPサーバーのローカルipアドレスを指定して、1500から順に下げていき
どこから正常に通信可能かを調査しました。
結果1252というのが通信が上手くいくMTU値でした。
ping -f -l (調べたいMTU値 例えば1300とか) -n 1 (接続ipアドレス 192.168.xx.xx)
LAMPサーバーの方で下記のようにMTU値を設定してやると、スムーズに通信することが出来るようになりました。
sudo ip link set dev eth0 mtu 1252