ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

AWSのロードバランサの設定方法

EC2を複数台立ち上げ、アクセスに応じてサーバを振り分けるためのロードバランサの設定についてまとめます。

インスタンスを複製する

既存のインスタンスを元にイメージを作成する

ロードバランサの振り分け先は同じ構成であるべきなので、既存のインスタンスからイメージを作成し、それを元に別のインスタンスを作成します。 インスタンスは、『Create Image』から作成することができます。

インスタンスを作成する

IMAGESのAMIsを見ると、イメージが作成されています。 これをもとに、インスタンスを作成します。

これは、『Launch』より実行できます。

インスタンス作成画面

上記イメージを元にしてインスタンスを作成します。 これは、以前書いた以下の記事と同じ手順で行なえます。

ただ、Security Groupを設定しなおさなきゃいけないみたいです。 これは、イメージ作成元のインスタンスと同じグループを選べば効率的かな、と思います。

どうしてデフォルトで同じ設定が反映されないんだろう。。。

ロードバランサを作成する

ロードバランサの作成画面を開く

メニューの『Load Balancer』より『Create Load Balancer』を選択します。

ロードバランサを作成する

ロードバランサ名の入力以外はそのまま進んでよいと思います。 「Manually Add Instances to Load Balancer」については、ロードバランサの割り当て先に該当するインスタンスを選択します。

以上でロードバランサの設定は完了です。 あとは、DNS Nameに表示されているURLにアクセスすれば、自動的に振り分けてくれます。

注意として、ロードバランサの詳細の中の各インスタンスが『Out of Service』となっていると、なんらかの問題が起きているので、内容を確認して対応しましょう。

ちゃんと負荷とか計測した上で適切な構成が組めるよう勉強頑張るお。。。

AWSのRDSの使い方(MySQLインスタンス作成〜EC2からの接続まで)

前回のEC2に引き続き今回はRDSについて学んだので、覚え書きを残します。 以下は、あいかわらず最小限の構成で設定するための手順です。

インスタンス作成画面まで

RDS Management Consoleを開く

インスタンス作成画面を開く

上記ページの『Launch a DB Instance』より、インスタンス作成画面を開きます。

インスタンス作成画面

Step 1:Engine Selection

データベースエンジンを選択します。 今回はMySQLを選択します。

Step 2:Production?

本番環境の場合、Multi-AZ Deploymentという設定を有効にすることが推奨されているようです。 Multi-AZ Deploymentは、スタンバイインスタンスにデータを複製するため信頼性が高くなりますよ、という特徴があるようです。

こちらは今回は無効化しておきます。 なぜならお金がかかりそうだから。

Multi-AZ Deploymentについては以下をどうぞ。

Step 3:DB Instance Details

データベースの詳細を設定できます。

いくつか設定すべき項目がありますが、以下のとおりに設定します。 なぜならお金がかかりそうだから。

  • Multi-AZ Deploymentはnoにする(Step 2でしなかったっけ?)
  • DB Instance Class(データベースの種類)はmicroにする
  • Allocated Storage(割り当てる容量)は最小にする(ここでは5GB

Step 4:Additional Config

ここではさらなる設定ができます。 そのまま次に進みます。

Step 5:Management Options

こちらはバックアップなど、管理に関する設定です。 そのまま次に進みます。

Step 6:Review

いままでの設定が確認できます。 問題がなければ、『Launch DB Instance』でインスタンスの作成が完了します。

EC2からデータベースに接続する

ファイアウォールの設定

デフォルトの状態では、MySQLに使用しているポート(3306)は閉じているので、これを有効にしなければなりません。

データベースのインスタンスの詳細にSecurity Groupsという項目があるので、そのリンクをクリックしてEC2のSecurity Groupsに移動します。 該当するグループを選択すると詳細が表示されるので、『Create a new rule』からMySQLを選択し、『Apply Rule Changes』を選択します。

これで、データベースへの接続の準備が整いました。

EC2から接続

あらかじめEC2にSSHで接続しておきます。 次に、以下のコマンドでMySQLに接続します。

mysql -h [ホスト] -u [ユーザ名] -p

ホストは、データベースのインスタンスを選択したときに表示されるEndpointの部分です。 ユーザ名と、コマンド実行時に聞かれるパスワードは、ともにインスタンス作成時に設定したものです。

もちろん、mysqlコマンドはmysqlが入っていないと実行できません。 以下のコマンドで、あらかじめ入れておきましょう。

sudo yum -y install mysql

以上で完了です。 とりあえずEC2とRDSの必要最小限の設定は分かりましたが、じゃあこれからどうすればいいのかというと、さっぱり分かりません。

AWSのEC2の使い方(インスタンス作成〜接続まで)

EC2でインスタンスを作成→接続まで終わったので、覚え書きを残します。 以下は、最小限の構成で設定するための手順です。

AWSにログイン〜インスタンス作成まで

EC2 Management Consoleを開く

リージョンを選択する

ここではAsia Pacific(Tokyo)を選択しました。 ここは日本なのです。

インスタンス作成画面を開く

『Launch Instance』からインスタンス作成画面を開きます。

インスタンス作成画面

Step 1: Choose an Amazon Machine Image (AMI)

ここではAmazon Linux AMIの64-bitを選択します。

Amazon Linux AMIとは、AmazonによってサポートされたLinuxイメージらしいです。 詳しくは以下をどうぞ。

Step 2: Choose an Instance Type

ここではインスタンスの種類を選択できます。

特になにも設定しなくてよいので、『Next: Configure Instance Details』で次のステップに進みます。

Step 3: Configure Instance Details

ここではインスタンスの詳細を設定できます。

特になにも変更しなくてもよい(と思う)ので、『Next: Add Storage』で次のステップに進みます。

Step 4: Add Storage

ここではストレージの追加が行なえます。

ここでも特になにも設定しなくてよい(と思う)ので、『Next: Tag Instance』で次のステップに進みます。

Step 5: Tag Instance

次に、インスタンスにタグをつけます。 タグについては、以下をどうぞ。

デフォルトでNameというKeyがあるので、適当な名前(MyWebServerなど)をつけます。 できたら、『Next: Configure Security Group』で次のステップに進みます。

Step 6: Configure Security Group

ここではファイアウォールを設定します。

ポートはデフォルトではSSH22番しか開いていないので、他も開けるならここで設定します。 例えばHTTP80番)を開けるには、『Add Rule』より『HTTP』を選択すればよいです。

問題なければ、『Review and Launch』を選択します。

Step 7: Review Instance Launch

ここで諸々の設定を確認できます。 問題なければ『Launch』を選択します。

すると、「Select an existing key pair or create a new key pair」というタイトルのポップアップが出ます。 ここは、以下の手順で行ないます。

  1. 『Create a new key pair』を選択する
  2. 『Key pair name』に適当な文字列を入力する
  3. Key Pair(pemファイル)がダウンロードされる

最後に、『Launch Instances』を選択すると、完了です。

接続方法

SSHで接続するには、『Instances』メニュからインスタンスを選択し、『Connect』を選択すると、接続方法が表示されます。

まず、pemファイルのパーミッションを変えます。

chmod 400 hoge.pem

次に、pemファイルを使って接続します。

ssh -i hoge.pem ec2-user@XXX.XXX.XXX.XXX

以上です。 サクッと完成しましたが、現状いくら請求されるかなどまったく分からない程度には無知なのです。