どうもこんにちは
今回AWSを触ることが出来る機会を頂いたのでいくつか試したのでメモしておきます
やりたいことはタイトル通り、本番稼動中のEC2インスタンスと同じ条件データのインスタンスを動かしたいということです
#環境
インスタンスタイプ: m3.2xlarge
ボリューム: 200GB(180GB使用中)
このインスタンスは何をしているのかというと
EC2内でMySQLが起動しています
本来RDSでMySQLを稼動させるべきでしょうが、なぜかEC2を選択したようです
#概念
今までAWSもコンソール画面も触ったことが無かったのでサービスに関しての概念が不足していました
まず
マシーンイメージ、インスタンス、ボリューム、スナップショットがどういう風に繋がっているのか理解していませんでした
マシーンイメージ(AMI)は、インスタンス(EC2)を生成するためのもの
インスタンス(EC2)は処理を実行するためのCPUやメモリを持っていて
ボリューム(EBS)はインスタンスが使うハードディスク
スナップショット(S3)はボリュームのバックアップという認識
AMIからEC2とEBSを同時に作成することが出来ます
EC2は使うボリュームを選択することが出来、稼働中のEC2からAMIの作成も出来ます
ボリュームからはスナップショットを作成することが出来ます
スナップショットからボリュームとスナップショットのコピーを作成することが出来ます
では検証用テストインスタンスを作成するステップに移ります
#テスト環境を作成する
実際本番環境とほぼ同じ環境を作成するのはAWSを知ると簡単です
※ほぼ同じというのはLinuxなどの内部設定は同じなんですがIPは本番と違うものになります
手順は
1.稼動しているEC2インスタンスからイメージを作成
2.イメージからインスタンスを作成
の2ステップ
1.はAWSコンソールの画面左にある「インスタンス」を選択
そして本番環境のインスタンスのチェックボックスにチェックを入れる
右クリックして「イメージ」->「イメージの作成」
でAMIの作成が開始されます
注意点として
稼動中のEC2からイメージを作成するとAMIだけではなく、その時点のスナップショットが作成される
EC2稼働中にイメージを作成する時、インスタンスは停止しないと思っていたがEBSが170GBも使用しているせいかスナップショットを作り終えるまでインスタンスが停止した(5分くらい)
インスタンスが停止したのはかなり焦りました、本番が5分止まるんですからね…
2.はAWSコンソールの「AMI」を選択
1.で作成したインスタンスイメージのチェックボックスにチェックを入れる
右クリックして「作成」
「インスタンスタイプの選択」画面に遷移するので本番環境と同じインスタンスタイプを選択
「インスタンスの詳細設定」画面で、僕の場合特に設定せずに進みました
「ストレージの追加」画面では、本番と同じ容量を「サイズ(GiB)」に入力
「インスタンスのタグ付け」画面では特に設定せずに進みます
「セキュリティグループの設定」画面では「セキュリティグループの割り当て」項目の「既存のセキュリティグループを選択する」にチェックして、表示されたセキュリティグループ一覧の中から本番と同じものを選択しました
「インスタンス作成の確認」画面で設定を確認し、右下の「作成」ボタンを押します
すると「既存のキーペアを選択するか、新しいキーペアを作成します。」というのが出てくるので「既存のキーペアの選択」を選択し本番と同じキーペアを選択します チェックも入れて「インスタンスの作成」を押してインスタンス作成開始
インスタンス作成の時に
インスタンスと1.で作成されたスナップショットからボリュームが作成されます
その作成されたボリュームをインスタンスで使って同じデータ、同じスペックの環境を構築しているということです
IPは本番と違うIPが設定されます
インスタンスを削除するとこのインスタンスに設定されているボリュームも自動で削除されるようです
#EC2インスタンスは変更せずにボリュームだけ変更する
テストデータを削除してもう一回同じ環境を整えたいけどインスタンス削除してからまた生成するのはたるいー
という時はボリュームだけを変えてあげます
必要なものとして
稼動しているEC2インスタンス
スナップショット
ルートデバイス
が必要になってきます
手順としては
1.戻したい時点のスナップショットからボリュームを作成
2.稼動中EC2インスタンスを停止
3.2.で停止したインスタンスを選択しボリュームをデタッチ
4.1.で作成したボリュームを2.で停止したインスタンスにアタッチ
5.EC2インスタンスを起動
です
気をつける点として
4.のボリュームアタッチの時に本番環境と同じルートデバイスを入力しないと接続が認識されません
ルートデバイス確認方法は、インスタンスにチェックを入れると下のほうに出てくる
「説明」「ステータスチェック」「モニタリング」「タグ」
の「説明」の左のほうに書いてあります
ルートデバイス /dev/xvdb
みたいな ここの値は個々で変わると思います
この /dev/xvdb を一致されていないといけません
#まとめ
知っていれば簡単ですが初めてだったのでビビりながらの作業でした
もっと触ってAWSに慣れておきたいです