[AWS] ALBのIPターゲットをLightsailインスタンスで活用する

こんにちは、菊池です。

ALB(Application Load Balancer)が、IPアドレスターゲットに対応しました。

[新機能] ALBのターゲットにIPアドレスを指定可能になりました

VPC内のEC2インスタンス以外のリソースを指定可能になり、ALBの活用の幅が広がります。その一例としてAmazon Lightsailでの利用方法を紹介します。

Lightsailでの活用

Amazon LightsailはAWSのVPS(Virtual Private Server)サービスで、EC2に比べてシンプルな操作、料金体系で利用することが可能です。

Lightsailのインスタンスは、設定上不可視なVPC内に起動しますが、VPC Peeringを有効化することでデフォルトVPCとプライベート接続することが可能です。

AWS LightsailのVPC Peering機能を試してみた #reinvent

VPC Peeringすることで、デフォルトVPCからLightsailインスタンスへプライベートIPで到達可能になりますので、ALBのターゲットに指定することが可能です。

lightsail-with-alb-000

これにより、Lightsail単体ではできなかった、以下の機能を利用することが可能になります。

  • マルチAZ構成での冗長化・負荷分散
  • SSL終端のオフロード
  • AWS Certificate Managerによる無料SSL証明書の利用
  • AWS WAF/Shieldの利用

負荷分散以外のメリットについては以下の記事も参照ください。

1台のEC2でもELBを使うメリットについてまとめてみました

やってみる

では、実際にマルチAZ構成のALB + Lightsailの環境を作成してみます。

Lightsailのコンソールから、インスタンスを作成します。

lightsail-with-alb-001

Lightsailでも、AZの指定が可能です。以下の画面では、Tokyoリージョン、AZ-A(ap-northeast-1a)が選択されています。変更する場合は、[Change Region and Zone]を選びます。

lightsail-with-alb-002

リージョンを選び、AZも変更する場合には[Change Availability Zone]を選択します。

lightsail-with-alb-003

通常のEC2などと同様に、AZが選択可能です。

lightsail-with-alb-004

イメージは、Amazon Linuxを選択しました。

lightsail-with-alb-005

インスタンス起動時に、Apache(httpd)のインストール/起動を実行します。[Add launch script]から、EC2のユーザーデータと同様に任意のスクリプトを実行できます。

lightsail-with-alb-008

今回実行したスクリプトは以下です。

#!/bin/bash
yum install -y httpd  # httpdインストール
chkconfig httpd on   # 自動起動を有効
service httpd start   # httpd起動
echo "Lightsail az-a" > /var/www/html/index.html   # テストページを作成
iptables -A INPUT -p tcp -s 172.31.0.0/16 --dport 80 -j ACCEPT   # iptablesでデフォルトVPCからのhttpを許可
iptables -A INPUT -p tcp --dport 80 -j DROP   # 上記以外からのhttpを拒否
service iptables save   # iptablesを保存

Lightsailでは、Firewall設定でポートの許可/拒否が可能ですが、ソースIPでの制限はできません。今回はALB経由のみを許可し、インターネットから直接のアクセスは禁止したいため、iptablesを使って制限しています。

lightsail-with-alb-009

同様に、AZ-Cにもインスタンスを作成します。

インスタンスが起動できたら、ブライベートIPを確認しましょう。インスタンスを選択すると遷移する、インスタンス個別の画面で、割り当てられたプライベートIPが確認できます。

lightsail-with-alb-006

2つのLightsailインスタンスのプライベートIPを、ALBのターゲットグループに登録します。

lightsail-with-alb-010

問題なければ、両方ともhealtyステータスになるはずです。

lightsail-with-alb-011

ちなみに、ALBのリスナーはACM(Amazon Certificate Manager)の証明書を使ってHTTPSにしました。アクセスすると、ALB経由でLightsailのページが確認できました。

lightsail-with-alb-012

まとめ

IPアドレスターゲットの活用方法の1つとして、LightsailをマルチAZ構成にしてみました。

もともと、Ligthsailは拡張が見込まれる環境には向いていませんが、Lightsailを使っていて負荷が多くなってきたケースなど、EC2への移行までの一時的な対応として使えるのではないでしょうか。