ELBとは
ELBは「Elastic Load Balancer」の略であり、ロードバランサー、つまり負荷分散をするサービスです。ロードバランサー自体は昔からあったものですよね。複数のサーバがあるときに、1ヶ所にアクセスが集中しないように、負荷をうまく分散するための仕組みです。これも、前回のWAFと同じように、かつてはアプライアンスなどで対応していたのを、AWSがサービスとして提供する、というわけです。
ELBの特長としてはやはり、簡単に導入できること、そして拡張性の高さでしょう。特にEC2インスタンスなどを自動で拡張するAuto Scalingと組み合わせて、「サーバが拡張したら、増えたサーバにもトラフィックを割り当てる」ができるのはELBならではのメリット。そして、AWSのDNSサービス「Amazon Route 53」や、監視・モニタリングを担うサービス「Amazon CloudWatch」などと柔軟に連携できるのも魅力です。
ELBの機能
ELBはAWSが提供するロードバランサー……だとして、もう一歩踏み込んで、どんな機能があるのかも見ていきましょう。
トラフィックを分散する
ロードバランサーの基本と言える機能ですね。アプリケーションへのトラフィックを、サーバに自動で分散させます。どのレイヤーでどう割り振るのかは、ELBの種類によって異なりまして、次の段落で詳しく解説します。
ヘルスチェックをする
ELBでは、割り振る先のサーバがちゃんと稼働しているのかもモニタリングできます。トラフィックを割り振ったけど、サーバが落ちてました……とかは困りますからね。定期的にサーバの稼働状況をチェックする「ヘルスチェック」をおこない、正常に稼働しているサーバに対してトラフィックを割り振り、とするのですが、「サーバは複数ないけど、ヘルスチェックのためだけにELBを使う」もアリです。
セキュリティ強化
セキュリティの観点だと、まずはELBも「セキュリティグループ」で管理できます。セキュリティグループはAWS内でのファイアウォール的な機能で、どんなトラフィックを通すのかを制御するもの。これにより、「インターネットに接続するELB」「内部だけで利用するELB」などを実現できます。
さらに、ELBにはSSL証明書を設定してHTTPSでの通信をおこなうこともできます。さらにさらに、AWSのサービスを使えばSSL証明書を無料で発行して、使うこともできます。
ELBの種類
現在(2023年10月)、ELBでは4種類のロードバランサーが提供されていまして、要件・用途にあわせて選ぶことになります。
ALB(Application Load Balancer)
まずはALB。これは、レイヤー7でトラフィックを振り分けるもの。つまり、HTTPやHTTPSプロトコルに対応でき、コンテンツベースのルーティングができます。たとえば、パスや、HTTPヘッダー、クエリの文字列などで振り分け先を指定できる。基本的にはWebアプリケーションで使うロードバランサーとなります。
NLB(Network Load Balancer)
NLBは、TCPやUDPなどが該当するレイヤー4でトラフィックを振り分けます。特長はなんといっても、高スループット・低レイテンシ。突発的にトラフィックが増える場合、ALBでは「暖機申請」といって、「このタイミングでトラフィックが増えそうです」という事前申請をしないと、対応しきれないことがあるのですが、NLBはこの申請なしでもOK。大規模で、大量のデータを処理しないといけないシステムなどに適しています。
GLB(Gateway Load Balancer)
2020年にリリースされたGLBは、ALB、NLBとはやや役割が異なり、AWS上に展開するセキュリティアプライアンスの死活監視やオートスケーリングなどをおこなうものです。オンプレミスでトラフィック監視などに使っていたアプライアンスを、そのままAWS上でも活用したい、という場合に、GLBを用いて構成することで、可用性や拡張性を比較的シンプルな構成で担保できるようになります。
CLB(Classic Load Balancer)
これは、レイヤー4/7に対応するロードバランサーなのですが、「Classic」という名のとおり、古いバージョンのものとなります。最初にAWSでELBとして提供されていたもので、その後「ALB」「NLB」の登場により、「CLB」と名を変えて今に至ります。特別にCLBでなければ対応できない要件がなければ、ALB/NLBを利用することが推奨されます。
ELBの利用料金
ELBももちろん従量課金ですが、基本的には「ロードバランサーを利用する時間」と「ロードバランサーキャパシティーユニット(LCU)の使用量」の2つに課金されます。はい、ここでよく分からないのが出てきましたね。「LCU」とはいったいなんなのか?ちょうどAWSの「よくある質問」にも説明がありました。
Q: ロードバランサーキャパシティーユニット (LCU) とは何ですか?
A: LCU は、Application Load Balancer の支払方法を決定するための新しいメトリクスです。LCU は、Application Load Balancer でトラフィックを処理するいずれかのディメンション (新しい接続、アクティブ接続、帯域幅、ルール評価) のうち消費量が最大のリソースを定義します。
確かに、ALBの料金にも、「新しい接続」「アクティブな接続」「処理タイプ(シイノキ注:おそらく帯域幅と同じと思われる……)」「ルール評価」のうち、使用量がもっとも高いものに対して課金される、とあります。
これはちょうどALBに関する質問だったので、ALBとなっていますが、要するに、ロードバランサーに対してどれくらい負荷をかけたのかによって課金されるよ、ということだと理解しました。
ちなみにこの概念はALBなどの新しいものに対して課金するために作られたものなので、CLBには適用されず、CLBでは処理したデータ量に対して課金されます。
そのうえで、それぞれの料金は下記のような形になります。
ALB
ALB利用:1時間あたり0.0243USD
LCU:1時間あたり0.008USD
NLB
NLB利用:1時間あたり0.0243USD
LCU:1時間あたり0.006USD
GLB
GLB利用:1時間あたり0.0135USD
LCU:1時間あたり0.004USD
CLB
CLB利用時間:1時間あたり0.027USD
処理されたデータ:1GBあたり0.008USD
※いずれも東京リージョン。2023年10月17日現在
まとめ
AWSを“ちゃんと”使おうとしたら、おそらく避けては通れない「ELB」。今回はロードバランサーとしての基本を中心に見てきましたが、たとえば、メンテナンスのときにも便利に使えたり(システムとして稼働させたままサーバメンテナンスできる)、サーバ1台の構成でもヘルスチェック機能で監視するために使えたり、かなりいろいろと使えそうです。
じゃあ、実際なにをどう使えばいいのか、となったときには、ぜひソニービズネットワークスにもご相談ください。AWSなんでも相談室も随時開催しております。以上、シイノキでした!