Multi-AZ構成でWebサーバーを起動する

Multi-AZ構成でWebサーバーを起動する

前回までで、ELBと2台のEC2インスタンスを使ったMulti-AZ構成を作成しましたので、EC2インスタンスでWebサーバーを起動させます。

f:id:TOSHIOSHIMO:20191112190517p:plain

EC2のセキュリティグループでHTTP通信を許可する

EC2ダッシュボードにて、app1のセキュリティグループのインバウンドルールにHTTPを追加しておきます。app2も同様に設定しておきます。

この設定を行う目的は、ELB→EC2方向の通信でHTTP通信を許可するためです。この設定を行わないと、ELBからapp1/app2へHTTPトラフィックも流れませんし、ポート80番を使ったヘルスチェックもできません。

f:id:TOSHIOSHIMO:20191114193327p:plain

ELBのヘルスチェックの様子を確認する

EC2ダッシュボードより、ターゲットグループを選択します。

f:id:TOSHIOSHIMO:20191114193800p:plain

f:id:TOSHIOSHIMO:20191114193714p:plain

作成したターゲットグループ"test-tgt"を確認すると、ステータスが"unhealthy"となっており、説明の欄が"Health checks failed"となっています。

ELBが行うターゲットグループ配下のEC2インスタンスに対する死活監視がNGとなっています。

ヘルスチェックに使用しているポートは80番ですし、先程EC2インスタンスのセキュリティグループでインバウンド通信を許可しているのにも関わらずNGとなっています。

この事象が起きている理由は、EC2インスタンスでWebサーバーが起動していないからです。

Webサーバー(Nginx)を起動する

Webサーバーを起動するために、EC2インスタンスにログインする必要する必要があります。

ここで、AWS Session Managerを使うことを考えたのですが、色々調べてみるとパブリックサブネットに置かれたEC2にしかログインできないようですね。。

前回同様、一時的にElastic IPを付与する(一時的にPrivate Subnetでなくなる)方法で実施してみます。作業後にはElastic IPは関連付けを解除・開放しておきましょう。

dev.classmethod.jp

2つのEC2インスタンスにElastic IPを割り当て、SSHログインを行います。

f:id:TOSHIOSHIMO:20191114202701p:plain

具体的なSSH接続の手順は過去記事を参照してください。

 

toshioshimo.hatenablog.com

2つのEC2インスタンスにそれぞれログインし、Nginxをスタートさせます。

iMac:~ toshihirooshimo$ ssh -i "test5.pem" ec2-user@xxx-xxx-xxx-xxx
Last login: Fri Sep 20 11:42:45 2019 from m014013000160.v4.enabler.ne.jp
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ ps -ef | grep nginx
ec2-user 3414 3389 0 11:32 pts/0 00:00:00 grep --color=auto nginx
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo service nginx start
Redirecting to /bin/systemctl start nginx.service
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ ps -ef | grep nginx
root 3436 1 0 11:32 ? 00:00:00 nginx: master process /usr/sbinnginx nginx 3438 3436 0 11:32 ? 00:00:00 nginx: worker process
ec2-user 3440 3389 0 11:32 pts/0 00:00:00 grep --color=auto nginx
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$

EC2ダッシュボードに戻り、ターゲットグループ"test-tgt"のヘルスチェックの様子を確認すると、2つのEC2インスタンスのステータスが"healthy"となっていることが分かります。

f:id:TOSHIOSHIMO:20191114203847p:plain

Webコンテンツが表示されることを確認する

ブラウザのアドレス欄に、以下のように入力します。

http://(ELBDNS名)/index.html

f:id:TOSHIOSHIMO:20191114204443p:plain

無事にコンテンツが表示されました。

f:id:TOSHIOSHIMO:20191114204545p:plain

Amazon Web Services エンタープライズ基盤設計の基本

Amazon Web Services エンタープライズ基盤設計の基本