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に入ります。
その後、ロードバランサーの作成。
種類は3 + 1ありますが、
ELBの動きをnginxを使ってhttp通信で確認したいのでApplication Load Balancerを選択。
ロードバランサーの設定
リスナーはデフォルトでhttpのポート80が設定されているのでそのまま。
アベイラビリティーゾーンにVPCと負荷分散させたいEC2を設置してあるSubnetを設定します。
注意点はアベイラビリティーゾーンが同じではないのとIGWが設定してあること。
セキュリティーグループ
EC2にログインする時のsshとhttpがインバウンドルールに設定してあるセキュリティーグループを選択。
ルーティンググループ
ここでルーティングを設定していきます。
ヘルスチェックのパスに負荷分散したいルートを設定します。
特に要件がないのですべてデフォルトで設定。
負荷分散させたいEC2インスタンスを登録。
説明の状態が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 nginx
nginxを起動
ELBのDNS名をURLに入力して確認します。
更新ボタンを押すことで切り替わることが確認できました。
試しにインスタンスを一つ起動停止にしてみると、このような結果となります。
ステータスがhealthyからunusedに変化したことが確認できます。
正常?がいいえとなります。
この状態でELBのDNS名にアクセスすると起動しているEC2インスタンスの
index.htmlが表示されることが確認できました。
監視もできるので原因調査もできますね。
エラー
もしこのようなエラーが出た場合は、ターゲットにEC2インスタンスが設定してあるかを調べましょう。
もし何も表示されない場合はセキュリティーグループを見直してみましょう。
httpとポート80が設定されてないことが多いです。