こんにちは、ラーニングエクスペリエンス課の小倉です。
父の日に息子が選んでくれたイスがあるのですが、うちの猫たちに場所をとられて座れずにいます。オットマンもあるのですが、そこにはもう一匹の猫がいます。早く座れる日がくるといいなと思っています。
サーバーワークスでは、自由に勉強会を開催してスキルアップをしています。その中で私は毎週月曜日の朝、「30分AWSハンズオン」という30分でできるAWSハンズオンを2021年9月から継続して開催しています。その内容をブログで定期的に紹介していきます。AWSをご利用のみなさまのスキルアップにお役立ていただければと考えています。
5回目は、「Auto Healingを設定してみよう」をやります。Auto Healingを設定すると、EC2を指定した台数に維持することができます。もし障害でEC2が1台使えなくなっても、新しいEC2を自動で作成して復旧させることができ、可用性を高めることができます。Auto Healingの設定は、Auto Scalingの設定を少し変えるだけでできます。
ハンズオンの内容は、デフォルトVPCの1つのサブネットで、最小 1, 最大 1 にして EC2 1台を維持するAuto Scalingの設定をします。この設定にすることで、EC2に障害が発生してダウンしても、新しいEC2を自動で作成して1台を維持するようになります。
使用するAWSサービス
Amazon EC2 Auto Scaling
EC2 Auto Scalingとは、利用状況に応じて、自動でEC2インスタンスの数を増減する機能です。例えば、EC2インスタンスのCPU使用率が80%を超えたら、1台増やして負荷を軽減するような動きをします。
参考サイト: [AWS Black Belt Online Seminar]Amazon EC2 Auto Scaling 入門編
Amazon VPC
VPCとは、AWS内で作成できる仮想ネットワークです。今回はデフォルトVPC(AWSアカウントを作成したときに最初からあるVPC)を使用します。もしデフォルトVPCを削除してしまった方は、以下の手順を参考にしてデフォルトVPCを作成してください。
参考サイト: [AWS Black Belt Online Seminar]Amazon VPC
Amazon EC2
EC2とは、AWS上に仮想サーバーを提供するためのサービスです。インスタンスという単位で仮想サーバーが管理され、マネジメントコンソールから数クリックで、VPCのサブネット内にすぐに作成することができます。
参考サイト: [AWS Black Belt Online Seminar]Amazon EC2
構成図
今回の構成図です。
デフォルトVPCのサブネット1つを使って、Auto Scalingの設定をします。
ハンズオン手順
1. 起動テンプレートを作成します
Auto Scalingの設定をするためにまずは起動テンプレートを作成します。起動テンプレートでは、EC2を作成するのに必要なパラメータ(AMI, インスタンスタイプなど)を定義します。
画面上の検索窓で「EC2」と入力し、サービスの下に表示された [EC2] をクリックしEC2のコンソール画面を開きます。また今回のハンズオンは東京リージョンで実施しますので、右上のリージョンが東京になっていない場合は東京に変更しておきましょう。
ナビゲーションペイン(左メニュー)の [起動テンプレート] をクリックして起動テンプレート一覧の画面を表示した後、右上の [起動テンプレートを作成] をクリックします。
起動テンプレートを作成の画面が表示されますので、どのようなEC2をつくるのかを設定していきます。
起動テンプレート名 でテンプレートの名前をつけます。今回は yyyymmdd-handson としておきます(yyyymmdd は年月日で、例えば2023年6月27日なら 20230627 となります)。テンプレートバージョンの説明 は、今回はテンプレート名と一緒の yyyymmdd-handson としておきます(通常はこのテンプレートについての説明を書く欄になります)。
画面を下にスクロールして、アプリケーションおよび OS イメージ (Amazon マシンイメージ) は、[クイックスタート] - [Amazon Linux] - [Amazon Linux 2] を選択します。
画面を下にスクロールして、インスタンスタイプは、t2.micro を選択します(ここは、t3.nanoなど自由に変更していただいても問題ありません)。
画面を下にスクロールして、ネットワーク設定のセキュリティグループで、既存のセキュリティグループを選択、default のセキュリティグループを選択します。このとき、defaultはデフォルトVPCのセキュリティグループを選択します。もしデフォルトVPCのVPC IDがわからないときは、VPC のコンソールから確認します(確認方法は一番最後に記載してあります)
今回はアプリなどは入れずにAuto Healingの動作確認だけですので、ここまで設定できたら、[起動テンプレートの作成] をクリックします。
以下の画面が表示されれば、起動テンプレートの作成は完了です。
2. Auto Scaling グループを作成します
次にAuto Scaling グループを作成します。
起動テンプレート作成直後の画面で、[Auto Scaling グループを作成] をクリックします。もし、別のところをクリックして違う画面に遷移してしまった場合は、ナビゲーションペイン(左メニュー)の [Auto Scaling グループ] をクリックして、画面右の [Auto Scaling グループを作成する] をクリックしてください。
起動テンプレートまたは起動設定を選択するの画面が表示されますので、順番に設定していきます。
Auto Scaling グループ名 でAuto Scaling グループの名前をつけます。今回は yyyymmdd-handson-asg としておきます(yyyymmdd は年月日で、例えば2023年6月27日なら 20230627 となります)。
画面を下にスクロールして、起動テンプレート は、手順1 で作成した yyyymmdd-handson を選択します。右下の [次へ] をクリックします。
ネットワーク でデフォルトVPCを選択し、 アベイラビリティゾーンとサブネット でap-northeast-1a を選択します。
下にスクロールして右下の [次へ] をクリックします。
詳細オプションを設定するでは、今回はなにも変更せずに下にスクロールして [次へ] をクリックします。
もし、ロードバランサ配下での Auto Scaling をする場合は、ここでどのロードバランサを使うかを指定します。
グループサイズとスケーリングポリシーを設定するでも、今回はなにも変更せずに下にスクロールして [次へ] をクリックします。この設定では 最小 1 最大 1 希望 1 なので、1台を維持する設定となります。
負荷に応じて台数を増減させたいときはグループサイズで台数の最小と最大の設定とスケーリングポリシーでどういう条件で台数を増減させるかを設定できます。
通知を追加するでは、今回は設定しないので、[次へ] をクリックします。
タグを追加するでは、今回は設定しないので、[次へ] をクリックします。
キーにName, 値に <EC2インスタンスにつけたい名前> を入れることで、Auto Scaling で起動したEC2インスタンスにタグをつけることも可能です。
確認では、今までの設定内容が合っているかを確認し、下にスクロールして、[Auto Scaling グループを作成する] をクリックします。
これで Auto Scaling の設定は終わりです。設定をしたら、希望で指定した台数の EC2 が作成されます。
3. 動作確認をします
Auto Scaling グループの設定で、最小 1 最大 1 希望 1 で設定していて、1台 EC2 が起動している状態です。この状態で、起動している EC2 を削除してみます。
ナビゲーションペイン(左メニュー)の [インスタンス] をクリックしてインスタンス一覧の画面を表示します。Auto Scaling で起動した EC2 インスタンスを選択し、[インスタンスの状態] - [インスタンスを終了] をクリックします。
もし、ナビゲーションペインが表示されていない場合は、左上の ≡ をクリックして表示します。
確認画面が表示されるので、削除するEC2 インスタンスが合っていることを確認して、[終了] をクリックします。
数分待つと、自動で EC2 インスタンスが 1台自動で起動してきます。
これは Auto Scaling グループの設定で 最小 1 に設定していて、EC2 インスタンスを削除して 0 台にしたため、最小 1 になるように自動で起動しています。
Auto Scaling グループの設定画面で台数の増減のログを確認できます。
ナビゲーションペイン(左メニュー)の [Auto Scaling グループ] をクリックして Auto Scaling グループ一覧の画面を表示します。作成した Auto Scaling グループにチェックを入れ、画面下の アクティビティタブをクリックします。
アクティビティ履歴を確認するとEC2インスタンスの停止(Terminating) 、起動(Launching)を確認できます。
これで、ハンズオンは以上となります。
4. 後片付け
AWSのリソースは従量課金のため、作ったまま放置しておくとお金がかかってしまいます。そのため、ハンズオンが終わったら不要なリソースは削除しておきましょう。
Auto Scaling グループを削除します。
ナビゲーションペイン(左メニュー)の [Auto Scaling グループ] をクリックして Auto Scaling グループ一覧の画面を表示します。作成した Auto Scaling グループにチェックを入れ、画面右上の [アクション] - [削除] をクリックします。
確認画面が表示されるので、テキスト入力フィールドに 削除 と入力して [削除] をクリックします。
これでAuto Scaling グループの削除は終わりです。Auto Scaling グループを削除したらAuto Scaling グループで作成されたEC2インスタンスも削除されます。
次は起動テンプレートを削除します。
ナビゲーションペイン(左メニュー)の [起動テンプレート] をクリックして起動テンプレート一覧の画面を表示します。作成した起動テンプレートにチェックを入れ、画面右上の [アクション] - [テンプレートを削除] をクリックします。
確認画面が表示されるので、テキスト入力フィールドに 削除 と入力して [削除] をクリックします。
これで起動テンプレートの削除は終わりで、作成したリソースの削除が完了しました。
※ デフォルトVPCのVPC IDの確認方法
画面上の検索窓で「VPC」と入力し、サービスの下に表示された [VPC] をクリックしVPCのコンソール画面を開きます。ナビゲーションペイン(左メニュー)の [お使いのVPC] をクリックしてVPC一覧の画面を表示します。
VPCにチェックを入れ、画面下の 詳細 タブをクリックし、デフォルトVPCがはいとなっているのが、デフォルトVPCです。このVPCのVPC IDを覚えておきましょう。
まとめ
今回は Auto Scaling の機能を応用して Auto Healing を設定してみました。この設定をすることで、障害が発生したときでも自動でEC2インスタンスを起動してくれますので、手動での復旧作業が不要となり、運用負荷が軽減します。
また、今回は設定しませんでしたが、Auto Scaling グループの設定でEC2インスタンスの台数を自動で増減することも可能ですので、今回の手順を変更していろいろ試してみることで、より理解が深まると考えています。
参考資料
小倉 大(記事一覧)
アプリケーションサービス部ラーニングエクスペリエンス課 札幌在住
AWSトレーニングの講師をしています。
最近は5歳の息子と遊ぶのが楽しいです!
Twitter: @MasaruOgura