【AWS】知識ゼロから理解するRDS超入門
AWSのデータベースサービス「Amazon RDS」を初心者にもわかるように解説します。未経験には難しいMultiAZ構成やレプリケーションは、マスター/スレ...
2018-11-26 18:59 2019-02-20 11:17
Auto Scalingする前に知っておいてほしい7つの疑問とその答えについて解説していきます。
これから、あなたのAWSインフラ環境でAuto Scalingをしたいと思っている人やそもそもAuto Scalingってなに?という初心者の人にぜひとも読んでいただきたいです。
そのため、極力専門用語を使わずに解説していきます。
それでは、早速1つ目の疑問からいっていきましょう。
そもそもAuto Scaling(オートスケーリング)とは何か知っていますか。
すでに知っている人も少なくないとは思いますが、ここで一度Auto Scalingについて簡単におさらいしておきましょう。
AWSのHP公式ページではこのように説明しています。
AWS Auto Scaling はアプリケーションを監視し、安定した予測可能なパフォーマンスを可能な限り低コストで維持するように、自動的に容量を調整します。
もっと具体的にいうと、Auto Scalingとはアクセス量やCPU使用量に応じて、EC2インスタンスの数を自動的に増減させてくれるものなのです。
次に、これを使うことでどんなメリットがあるのかを解説していきます。
まとめると、Auto Scalingには以下の3つのメリットがあるのです。
Auto ScalingではEC2インスタンスの異常を検出し、自動的にインスタンスを終了します。
その後、新しいインスタンスを起動も自動的に行うので、耐障害性がかなり強いです。
また、複数のAZ(アベイラビリティーゾーン)でAuto Scalingを設定すると、1つのAZが利用不可能となっても、もう一方のAZで新しいインスタンスを起動できるため、可用性の向上にも繋がります。
さらに、EC2インスタンスを必要な量だけ自動的に追加・削除してくれるので、アクセスが少なくリソースをあまり必要ない時には、EC2インスタンスを適切な量に減らし、コスト効率の向上にも一役買ってくれます。
そして、逆に突然の大量アクセスにもEC2インスタンスの追加により対応することができます。
Auto Scalingを行う際には、EC2インスタンスの元となるイメージが必要です。
そのため、まず初めに初期設定をした元となるEC2インスタンスからAMIでイメージを作成して、このイメージからEC2インスタンスを構築します。
これが基本的なAuto Scalingで行うEC2インスタンスの構築方法です。
Auto Scaling時にAMIからEC2インスタンスを構築する際にEBSも一緒に自動構築させます。
これは、AMI = 「EBS ボリュームの中のデータ(スナップショット) とインスタンスを構成する管理情報」を含む起動テンプレートであるためです。
つまり、元となるEC2インスタンスからイメージさえ作成しておけば、Auto Scalingするのはそこまで難しくないということです。
しかし、ここで「どうやって最新のデータでEC2を構築するの?」という疑問が湧いてきます。
1番初めは、AMIでイメージを作っておいてそれを元にEC2インスタンスを構築するようにしておくだけで確かに大丈夫です。
ですが、ここからさらにEC2インスタンスの中身のファイルの修正や追加をしたいとなった時はどうすれば良いでしょうか。
すでにEC2インスタンスが複数起動している状態では、そのEC2インスタンスの中身をむやみにいじるのは危険ですし、ちょっとの変更をするためだけにシステムを止めるようなことはしたくありません。
そこで、マスターEC2インスタンスを使います。
マスターEC2インスタンスとは、新しくAMIを作成する時のみに使用して、Webサーバとして使用しないEC2インスタンスのことです。
これを作っておくと、起動しているEC2インスタンスの中身をむやみにいじる必要ないですし、とても安全な設計となります。
また、Auto Scalingで作成されたEC2インスタンスには起動時まず「git pull」をするといった仕組みにしておくと、gitに上がっている範囲の変更ならわざわざ新しくAMIをつくる必要はありません。
マスターEC2インスタンスで新しくイメージを作成したら、既存の古いAMIで構築したEC2インスタンスに加えて、新しいAMIを構築します。
その後、古いAMIで構築したEC2インスタンスを潰すことで、新しいAMIで構築したEC2インスタンスのみが残り更新することができます。
ELB(Elastic Load Balancing)は、アクセス量を均等に振り分けてくれるものです。
これがないとせっかくAuto Scalingしてもアクセスが均等にならずにサーバーへの負荷分散ができなくなってしまいます。
では、いったい新しく構築したEC2インスタンスに対してELBからのアクセスを流すにはどうすればいいでしょうか。
これはすごくカンタンです。
Auto Scalingグループに属しているEC2インスタンスをELBでバランシングすれば、その後Auto Scalingで作成されたEC2インスタンスも自動的にELBに適応され、アクセスを分散してくれます。
そのため、ELBにどうやってターゲティングするかはそこまで考えなくても勝手にやってくれるのです。
Auto Scalingで新しく構築させるEC2インスタンスは、EC2インスタンスが最も少ないAZ上で自動的に起動します。
そのため、どちらか一方のAZのみにEC2インスタンスが構築させることはありません。
しかし、例外としてはインスタンス起動が失敗した場合には、起動が成功するまでもう一方のAZで起動するような仕組みになっています。
したがって、異常事態にも迅速に対応することができるのです。
Cloud Watch(クラウドウォッチ)で決めたアラームを閾値として、その閾値を越えると新しくEC2インスタンスを構築します。
例えば、起動中のEC2インスタンスがCPUの使用率が60%以上になったら、Auto Scalingして新たにEC2インスタンスを起動するというような設定をすることができます。
これもすごくカンタンなので、ざっくりとした流れをここに書いておきます。
この記事では、「Auto Scalingする前に知っておくべき7つのこと」というテーマでAuto Scalingをしようと思った時に突き当たる疑問の答えをまとめていきました。
Auto Scalingは一見とっつきにくいですが、実はカンタンに実装することができます。
今回、解説した点を押さえてぜひ充実したインフラ環境を構築してみてくださいね。
学生Webエンジニア PLANインターン生 PHP Laravel Python HTML CSS JS
【名前】 "ゆざ"
【関連】 株式会社PLAN / MIYABI Lab / Tmeet(twitterユーザーマッチングサービス) /
【MIYABI Lab運営】23歳/同期がト◯タやMicr◯softに就職する中、ベンチャーに未経験でWebエンジニアになるのを選んだ脳科学専攻の理系院生◆人見知り日本縦断◆機械学習/Web歴5ヶ月
【AWS】知識ゼロから理解するRDS超入門
AWSのデータベースサービス「Amazon RDS」を初心者にもわかるように解説します。未経験には難しいMultiAZ構成やレプリケーションは、マスター/スレ...
【AWS】Auto Scalingする前に知っておくべき7つのこと
Amazon EC2 Auto Scaling(オートスケール)を使用すると、CPU使用率等に応じてEC2の台数を自動的に増減できます。ここでは、初心者の持つ疑問を通し...
WordPressの基本構造を理解してオリジナルテーマを作ろう(後半)
WordPressのテーマを自作するために必要なテンプレートファイル(functions.phpやstyle.css)の役割やファイル構造を理解して、どのようにオリジナ...
WordPressの基本構造を理解してオリジナルテーマを作ろう(前半)
WordPressのテーマを自作するために必要なテンプレートファイル(functions.phpやfront-page.php)の役割やファイル構造を理解して、どのようにオ...
【Heroku入門】無料枠サーバーを24時間スリープさせない方法
フリープランのHerokuサーバーでは、30分以上アクセスがないと自動的にスリープしてしまいます。ここでは、Herokuサーバーを寝かせない方法につい...
【入門編】Laravelのディレクトリ構造とMVCの処理の流れを理解する
Laravel初心者が学習する際にわかりにくいLaravelのディレクトリ構造を具体的な例を交えて解説します。MVCの基本であるビュー、モデル、コントロー...
【初心者向け】PythonによるHeroku環境で簡単LINEBot開発
誰でも簡単にLINEBotをpythonを使ってHeroku環境で開発できる方法を解説します。ここでは、LINE Messaging APIを用いることでおうむ返しをするBot...
AWSでWebサーバー構築!踏み台サーバーでセキュアなネットワークを構築する(第5回)
連載の第5回です。メインEC2に対して直接SSH接続できる状態というのは、セキュリティの観点からあまり望ましくありません。MySQLやEBSが紐づいたメ...
AnacondaでのTensorFlow環境構築と基礎的な使い方
Anaconda(アナコンダ)のインストールからJupyter notebook(ジュピターノートブック)とTensorFlow(テンサーフロー)の基本的な使い方を初心者...
脱初心者!MNIST beginnerに隠れ層を加えたニューラルネット解説
TensorFlowのチュートリアルであるMNIST beginnerの応用して、隠れ層と活性化関数を加えたニューラルネットワークで手書き文字識別を解説します。...
AWSでWebサーバー構築!Apache2.4, PHP7, MySQLの導入と初期設定(第4回)
連載の第4回です。今回は作成したEC2インスタンスにWebサーバーとしての機能を持たせるため、Apache2.4のインストールおよびhttpd.conf等の各種設...
AWSでWebサーバー構築!EC2を作成してSSH接続する(第3回)
連載の第3回です。前回作成したVPC・サブネットにおいて、セキュリティーグループに保護されたEC2インスタンスの作成・設定およびSSH接続の確立ま...
初心者必読!MNIST実行環境の準備から手書き文字識別までを徹底解説!
Pythonによる機械学習をプログラミング初心者にもわかりやすいように、TensorFlowチュートリアルのMNIST beginnerを使って、手書き文字(MNIST)識別...
AWSでWebサーバー構築!専門用語の解説とVPC環境を構築する手順(第2回)
連載の第2回です。AWSにてVPCネットワークを構築してWebサーバーを設置・運用するためには、AWS内で利用される重要単語について正しく理解しておく...
知識ゼロで機械学習・AIを理解するために必要なニューラルネットワークの基礎知識
機械学習・AIを理解するために必要なニューラルネットワークの基礎について、これから機械学習を勉強したい人、プログラミング未経験の人にもわか...
Canvaで簡単におしゃれなアイキャッチ画像を作ろう!使い方を徹底解説!
PhotoshopやIllustratorを使えなくてもCanvaなら誰でも簡単におしゃれなアイキャッチ画像が作れます。豊富なデザインテンプレートを組み合わせるだ...
プレビュー機能付きの記事編集画面の作り方(Laravel5)
記事編集フォームにはプレビュー機能の実装が必須です。記事を保存する処理とプレビューを表示する処理を共存させるにあたり、ボタンをクリックし...
AWSでWebサーバー構築!VPC設計に必要なIPアドレスとサブネットの基礎知識(第1回)
連載の第1回です。AWSのVPCネットワークを設計して実際に構築するためには、IPアドレスの基礎を理解することが非常に大切です。EC2 Webサーバーを...
MIYABI Labホームページを製作しました
様々な理由でプログラミングの勉強を困難だと感じてしまっている方のお役に立てれば嬉しいです。これからも小さなWebサービスを作り続けていき、技...
ゆざ、株式会社PLANを卒業します。
2年間インターンとしてお世話になった株式会社PLANを卒業します。AWS,Laravel,Pythonなどの技術的なことだけではなく、エンジニアとして、社会人と...