よくわからないALBを触ってみた!
今回は職場でALBというものが出てきてよくわからなかったので記事にしました!
この記事のゴール
・ALBがなんぞやか判明する
・ALBの設定方法がわかる
前提
AWSを使用する
ALBとは
ALBとはApplication Load Balancerの略になります。
AWSのEBL(Elastic Load Balancer)の第2世代に当たります。
第一世代はCLB(Classic Load Balancer)、ALB登場により、ELBがCLBと呼ばれるようになりました。
ALBとCLBの違い
こちらのサイトの表が参考になります。
https://aws.amazon.com/jp/elasticloadbalancing/features/
Load Balancerとは
以下の2つの役割があります。
① 大量のアクセスを負荷分散しサーバーにリクエストを送る
② 可用性の担保
① 大量のアクセスを負荷分散しサーバーにリクエストを送る
② 可用性の担保
1台のサーバーが障害で停止した際に、残っているサーバーでサービスを提供することができます。
AWSで実際に設定してみる
今回の構成
マルチAZで以下のような形で作成します。
設定
1. VPCの作成
AWSのマネジメントコンソールから「VPC」を選択します
サイドメニューのVPCを選択します
「VPCの作成」ボタンを押下します
「名前タグ」と「IPv4 CIDRブロック」に任意の値を設定し「VPCの作成」ボタンを押下します
VPCを新規で作成すると、ルートテーブルとネットワークACL、セキュリティグループが自動的に作成されます。
EC2インスタンスにパブリックDNSを使用するので設定を変更します
作成したVPCを選択し、「DNSを解決」を選択します
「DNS ホスト名」下の「有効化」チェックボックスにチェックを入れ、「変更の保存」を押下します
2. サブネットの作成
VPCのサイドメニューから「サブネット」を選択します
「サブネットの作成」ボタンを押下します
それぞれに以下を設定し、「作成」ボタンを押下します
名前タグ : 任意の名前
VPC : 先ほど設定したVPCを選択
アベイラビリティーゾーン :ap-northeast-1a
IPv4 CIDRブロック : 192.168.1.0/24
※ 後にVPC内にELB(ALB)を設定する場合は、20IP以上空いている必要があります
以下の画面が表示されたら、「閉じる」ボタンを押下します
アベイラビリティーゾーン :ap-northeast-1cにしてもう一つsubnetを作成します。
3.ルートテーブルの設定
ルートテーブルはサブネット単位で設定ができ、サブネット内のEC2のインスタンスのネットワークルーティングを制御します。
AWSマネジメントコンソールから以下の操作を行い、ルートテーブル作成画面を表示します。
VPC → ルートテーブル → ルートテーブルの作成
名前タグに任意の値、VPCに作成したVPCを選択し「作成」を押下します
作成完了画面が表示されたら「閉じる」ボタンを押下します
3−1.サブネットとルートテーブルの関連付
作成したサブネットはVPC内のどれか1つのルートテーブルに紐付ける必要があります。
作成したルートテーブルにチェックを入れ、画面下の「サブネットの関連付け」タグを選択し、「サブネットの関連付けの編集」ボタンを押下します
作成したサブネットにチェックを入れて「保存」ボタンを押下します。
4.インターネットゲートウェイの作成
VPC内のEC2インスタンスが外部と通信できるように設定を行います。
AWSマネジメントコンソールより以下の操作で作成画面を表示します。
VPC → インターネットゲートウェイ → インターネットゲートウェイの作成
名前タグに任意の値を設定し、「インターネットゲートウェイの作成」を押下します
作成したインターネットゲートウェイにVPC紐付けます
AWSマネジメントコンソールから以下の操作で設定画面を表示します。
VPC → インターネットゲートウェイ → アクション → VPCにアタッチ
「使用可能なVPC」に作成したVPCを選択し、「インターネットゲートウェイのアタッチ」ボタンを押下します
4-1.ルートテーブルにインターネットゲートウェイを設定する
VPC内のリソースからインターネットアクセスを許可するためには、publicサブネットが関連付されているルートテーブルに、インターネットゲートウェイのルートを含んでいる必要があります。
AWSマネジメントコンソールより以下の手順で設定画面を表示します
VPC → ルートテーブル
設定対象のルートテーブルにチェックを入れ、画面下の「ルート」タブを選択し、「ルートの編集」を押下します
送信先に「0.0.0.0/0」(全ての送信先)を設定し、ターゲットにInternet Gatewayを選択します。Internet Gatewayを選択すると作成したインターネットゲートウェイが表示されるので設定対象の物を選択、「ルートの保存」を押下します
ルートテーブルの編集完了画面が表示されたら「閉じる」ボタンを押下します。
5.EC2を作成する
VPC、publicサブネット内にEC2インスタンス(仮想サーバー)を作成します。
5-1. 公開鍵・秘密鍵の作成
EC2では公開鍵暗号方式で暗号化します。EC2へログインするためには公開鍵・秘密鍵が必要になります。
AWSマネジメントコンソールより以下の操作を行い、設定画面を表示します。
EC2 → サイドメニューよりキーペア
「キーペアの作成」ボタンを押下し、名前に任意の値を設定し、「キーペアの作成」ボタンを押下します
作成が完了するとキーペアファイルがダウンロードされます、このタイミングでしかダウンロードできないので、消してしまった場合は再度作成が必要になります。
5-2. セキュリティグループを作成する
通信の許可設定を行います
AWSマネジメントコンソールより以下の操作を行い、設定画面を表示します。
EC2 → セキュリティグループ
「セキュリティグループを作成」ボタンを押下します。
セキュリティグループ名、セキュリティグループの説明に任意の値を設定し、VPCに作成したVPCを選択肢、「セキュリティグループを作成」ボタンを押下します
5-3. セキュリティグループのルールの設定
EC2インスタンスにsshでログインできるようにルールの設定を行います
先ほど作成が完了したセキュリティグループの画面より、「インバウンドルールを編集」ボタンを押下します。
「ルールを追加」ボタンを押下し、以下を入力・選択し「ルールを保存」ボタンを押下します
タイプ:SSH
ソース : マイIP(マネジメントコンソールにアクセスしているグローバルIPが指定される)
※プロトコルとポート範囲は自動入力になります
5−4. EC2インスタンスの作成
AWSマネジメントコンソールより以下の操作でEC2の作成画面を表示します
EC2 → インスタンス
「インスタンスの起動」ボタンを押下します
「無料枠のみ」にチェックを入れ、Amazon Linax 2 AMI(HVM), SSD Volume typeの「選択」ボタンを押下する
「次のステップ: インスタンスの詳細の設定」ボタンを押下する
以下の項目を設定し、「次のステップ: ストレージの追加」を押下する
ネットワーク:作成したVPC
サブネット : 作成したサブネット
自動割り当てパブリックIP : 有効
「次のステップ: タグの追加」ボタンを押下します。
設定は行いません。
「次のステップ: セキュリティグループの設定」を押下します
この画面も設定は行いません。
「既存のセキュリティグループを選択する」を選択し、作成したセキュリティグループにチェックを入れ「確認と作成」ボタンを押下します
確認画面が表示されるので、「起動」ボタンを押下します
キーぺあの設定が画面が表示されるので、チェックボックスにチェックを入れ、「インスタンスの作成」ボタンを押下します
※ ここで指定するキーペアは5-1で作成したキーペアになります
5-5. EC2インスタンスに接続する
5-1で作成したキーを~/.ssh/ディレクトリに移動し以下のコマンドで権限を変更し、sshでEC2に接続します
chmod 600 ~/.ssh/AWSのキー.pem
ssh -i ~/.ssh/AWSのキー.pem ec2-user@EC2のパブリックIP
接続が成功すると以下の画面が表示されます
5-6. Apacheをインストールしwebアクセスを確認
EC2のIPやパブリックDNSを使用して、webからアクセスできるように設定します。
EC2にsshでログインした状態で以下のコマンドを実行します。
sudo yum install httpd -y
sudo service httpd start
# 自動起動設定
sudo chkconfig http on
セキュリティグループの設定でhttpのアクセスは許可していないのでルールを追加します。
AWSマネジメントコンソールで以下の操作を行いインバウンドルールの編集画面を表示します。
EC2 → セキュリティグループ
画面下のタブより「インバウンドルール」を選択し、「インバウンドルールの編集」ボタンを押下します
「ルールの追加」ボタンを押下し、以下の設定を行い「ルールを保存」ボタンを押下します
タイプ : HTTP
ソース : 任意の場所
※ プロトコル、ポート範囲は自動入力となります
EC2のパブリックIP or パブリックDNSでアクセスし以下のテストページが表示されれば成功です!
5-1~5-6の手順で2つ作成したサブネットのもう片方に紐づくインスタンスも作成します
6. ELBの作成
6-1. ELB用のセキュリティグループを作成
AWSマネジメントコンソールより以下の操作を行い、設定画面を表示します
EC2 → セキュリティグループ → セキュリティグループの作成
以下の設定を行い、「セキュリティグループを作成」ボタンを押下します
セキュリティグループ名 : 任意の値
説明 : 任意の値
VPC : 作成したVPCを選択
■インバウンドのルール(「ルールを追加」ボタンを押下します)
タイプ : HTTP
ソース : 任意の場所
※ プロトコル、ポート範囲は自動入力になります
6-2. ELBの作成
AWSマネジメントコンソールより以下の操作を行い、ELB作成画面を表示します。
EC2 → ロードバランサー → ロードバランサーの作成
Application Load Balancerの「作成」ボタンを押下します
以下の項目を設定し、「次の手順: セキュリティ設定の構成」ボタンを押下します
■ 基本的な設定
名前: 任意の値
スキーマ: インターネット向け
IPアドレスタイプ: ipv4
■ アベイラビリティーゾーン
VPC: 作成したVPC
サブネット: 作成した2つのサブネット
「次の手順: セキュリティグループの設定」を押下します
「既存のセキュリティグループを選択する」にチェックを入れ、6-1で作成したセキュリティグループを選択し、「次の手順: ルーティングの設定」を押下します
名前に任意の値を設定し、残りはデフォルト設定のまま「次の手順: ターゲットの設定」ボタンを押下します
インスタンスを追加し「次の手順: 確認」ボタンを押下します
完了画面が表示されたら「閉じる」ボタンを押下する
7. アクセス確認
状態がactiveになったことを確認し、ELBのDNSでwebからアクセスします
作成したEC2にログインし、/var/www/html/index.htmlを作成します。
その際に2つのEC2でhtmlの中身を変えてください。
私の環境では以下で作成しています。
ap-northeast-1a: htmlの中身「HELLO WORLD2!」
ap-northeast-1c : htmlの中身「HELLO WORLD!」
ELBのDNSでブラウザでアクセス
7-1. ap-northeast-1aに紐づくEC2インスタンスを停止しアクセス
「HELLO WORLD!」と表示されます
7-2. ap-northeast-1cに紐づくEC2インスタンスを停止しアクセス
「HELLO WORLD2!」と表示されます
ELBにec2インスタンスを登録しているので、EIPは使用しなくても大丈夫です!
設定が大変でしたが、一通り設定すると流れを覚えることができてよかったです!
こんなに簡単に設定できるクラウドサービスの恩恵だと思います!オンプレミスだと大変そう・・・
最後まで読んでいただきありがとうございました!
この記事が気に入ったらサポートをしてみませんか?