AWS ALB(Application Load Balancer)とは
AWS ALBはアプリケーション等の負荷分散に使われる、アプリケーション構築には不可欠なサービスです。
今回は、現役AWSエンジニアによるALBの概要や使い方、注意点を解説します。
それぞれ見ていきましょう。
ALBの概要
AWS ALB(Application Load Balancer)は、Amazon Web Services(AWS)が提供する負荷分散サービスです。
ALBは、インターネットトラフィックを複数のAmazon EC2インスタンスやコンテナに均等に分散するための機能を提供します。
これにより、アプリケーションの可用性を向上させ、スケーラビリティを確保することができます。
アプリケーション構築では基本的にALBで問題ありません。
アプリケーションの仕様により、固定IPアドレスが必要であったり、レイヤー4の負荷分散が必要な場合はELB/CLBを利用します。
ALBの使い方

ここでは、AWSにおけるALBの基本的な使い方を解説します。
Amazon EC2の負荷分散
EC2の上段(インターネット側)にALBを設置し、インターネットからのトラフィックを負荷分散します。
複数のEC2インスタンスをターゲットグループに登録し、ALBがリクエストを受け取ると、各インスタンスに対して負荷を均等に分散します。
これにより、トラフィックの増加に応じて自動的にスケーリングすることが可能となります。
ACM証明書の付与・HTTPS通信
ACM(Amazon Certificate Manager)のSSL/TLS証明書をアタッチすることができます。
ACM証明書を付与すると、HTTPS通信が可能となり、インターネットからALBまでの経路がセキュアな通信となります。
Amazon CloudFrontオリジン
CloudFrontのオリジンとして設定できます。
インターネット --- CloudFront --- ALB --- EC2と構築することで、キャッシュをしながら負荷分散ができるアプリケーションが作成可能です。
その他の使い方
他にも、コンテナサービスであるECSや、速度改善が期待できるGlobal Accelerator設定、Auto Scalling設定に利用されます。
ALB利用の注意点

次に、ALBを構築する際の注意点をご紹介します。
ターゲットグループのUnhealthに注意
ALBから負荷分散用に登録されたインスタンスやコンテナが正常に応答しない場合、そのターゲットは「Unhealth」となります。
「Unhealth」状態では冗長構成が組めていないことになるため注意しましょう。
しかし、登録機器が1台のみの場合や、登録している全てのインスタンスが「Unhealth」の場合は接続できてしまいます。
下記記事で詳しく解説していますので、ご参考ください。
Stickyセッションに注意
Stickyセッションは、同じクライアントからのリクエストを常に同じターゲットに送る機能です。
アプリケーションによっては、ユーザーのマイページ等を提供している事があると思います。
Stickyセッション設定をしていない場合、1台目のEC2に接続していたが、負荷分散機能で途中2台目のEC2に接続してしまうことがあります。
そうなると、ユーザーはマイページセッションが切れて再度ログイン画面に戻されてしまい、ユーザーエクスペリエンスに影響を及ぼしてしまいます。
ユーザーログインが必要なアプリケーションの場合は、Stickyセッション機能をONにしておきましょう。
ALB立ち上げ時のsubnet空きIPアドレス数に注意
ALBを立ち上げる際には、選択したsubnetに十分な空きIPアドレスがあることを確認してください。
ALBの仕様として、8つの空きIPアドレスが必要となります。
しかも、ALBに設定する2つのsubnetどちらも8個ずつ必要です。
IPアドレスが足りない場合は、「Not enough IP space available in subent-xxxx ELB requires at least 8 free IP addresses in each subnet.」というエラーが出力されます。
AWSの効果的な学習方法は?
最後に、AWSの効果的な学習方法をご紹介します。
自学自習はUdemy講座
オンラインプラットフォームであるUdemyは安価で手軽にAWSの学習が可能です。
しかし、上記で紹介したような実際のAWSエンジニアが実施している構築スキルまでは教えてくれません。初心者~中級者向けの講座が多くなっています。
私も受講した、初心者向けAWS講座を下記記事でまとめています。ご参考ください。
1人で学習が難しい場合はオンラインレッスン
1人で学習が難しい場合はオンラインレッスンがおすすめです。
最近では、AWS講座を提供するオンラインレッスンも増えてきました。
料金は高くなりますが、現役エンジニアからAWSについて学ぶことができます。
本ブログ執筆者のメンタリングも受付中
本ブログを執筆している[KAITech]もメンタリングを受け付けています。
オンラインレッスンは高くて手が出せないという方は私までお気軽にご相談ください。
下記から承っております。