プログラミングBlog

プログラミング学習用

ちょいちょい書いてます

AWS ELB ALB作成

ELBを作成してnginxの負荷分散を確認したい。

ELBとは

アプリケーションのトラフィックを複数のターゲット分けることで負荷分散を可能にする。
4種類のElastic Load Balancerが存在し、耐障害性を高めるのに必要な高い可用性、自動スケーリング、堅牢なセキュリティが特徴。

Elastic Load Balancing(複数のターゲットにわたる着信トラフィックの分配)| AWS

アプリケーションが落ちた際に、別のインスタンスに紐づけしておけば、
完全にサービスが止まることはないので
故障に備えた設計(Design for Failure)を行うことができますね。


ELBを作っていきます。
VPC Subnet RouteTable InternetGateWay SecurityGroup EC2Instance
このへんはあらかじめ作っておきましょう。

ELB

マネージメントコンソールからEC2に入ります。
その後、ロードバランサーの作成。
f:id:Tokuty:20210223231237p:plain
種類は3 + 1ありますが、
ELBの動きをnginxを使ってhttp通信で確認したいのでApplication Load Balancerを選択。
f:id:Tokuty:20210223143931p:plain

ロードバランサーの設定

リスナーはデフォルトでhttpのポート80が設定されているのでそのまま。
アベイラビリティーゾーンにVPCと負荷分散させたいEC2を設置してあるSubnetを設定します。
注意点はアベイラビリティーゾーンが同じではないのとIGWが設定してあること。
f:id:Tokuty:20210223144103p:plain

セキュリティーグループ

EC2にログインする時のsshとhttpがインバウンドルールに設定してあるセキュリティーグループを選択。

ルーティンググループ

ここでルーティングを設定していきます。 ヘルスチェックのパスに負荷分散したいルートを設定します。
特に要件がないのですべてデフォルトで設定。
f:id:Tokuty:20210223152502p:plain 負荷分散させたいEC2インスタンスを登録。
f:id:Tokuty:20210223145312p:plain
説明の状態がProvisioningからactiveになれば準備完了。
EC2インスタンスアプリケーションサーバーが起動状態で、DNSからアクセスすると負荷分散の確認ができます。
次はnginxの設定をしていきます。

Nginx設定

EC2にssh接続にてログインした後に、Extras Libraryからnginxをinstallしていきます。
aws.amazon.com

amazon-linux-extras installできるpackageの確認
amazon-linux-extras install nginx1 install
デフォルト設定だと/usr/share/nginx/html/直下のindex.htmlが
最初に表示されるページとなります。
index.htmlの中身をELBにて切り替わるのを確認したいので適当に変更しておきます。 /usr/share/nginx/html/index.html 場所
systemctl start nginxnginxを起動

ELBのDNS名をURLに入力して確認します。
f:id:Tokuty:20210223150148p:plain
更新ボタンを押すことで切り替わることが確認できました。
f:id:Tokuty:20210223150158p:plain
試しにインスタンスを一つ起動停止にしてみると、このような結果となります。
ステータスがhealthyからunusedに変化したことが確認できます。
正常?がいいえとなります。
この状態でELBのDNS名にアクセスすると起動しているEC2インスタンス
index.htmlが表示されることが確認できました。
f:id:Tokuty:20210223152650p:plain
監視もできるので原因調査もできますね。

エラー

もしこのようなエラーが出た場合は、ターゲットにEC2インスタンスが設定してあるかを調べましょう。
f:id:Tokuty:20210223143519p:plain
もし何も表示されない場合はセキュリティーグループを見直してみましょう。
httpとポート80が設定されてないことが多いです。

nginxについて

gakumon.tech