米アマゾン ウェブ サービス(AWS)は2016年8月に、新しいロードバランシングサービス「AWS Application Load Balancer(ALB)」の一般提供を全リージョンで始めた。「コンテントベースのルーティングが可能」と喧伝されているが、それは具体的にどういうものか。ALBの機能を説明したうえで、性能検証の結果を紹介する。
Amazon Web Services(AWS)の新しいロードバランシング(負荷分散)サービス「Application Load Balancer(ALB)」の代表的な機能は、パケットの内容に応じたコンテントベースのルーティングだ。詳しくは後述するが、これはレイヤー7(L7)スイッチが備える機能。ALBは、L7スイッチ相当のロードバランシングサービスといえる。
従来、AWSのロードバランシングサービスには「Elastic Load Balancing(ELB)」が存在したが、機能は限定的だった。コンテントベースのルーティングを行うには、サードパーティーのソフトを仮想マシンのEC2に導入して利用する必要があった。
ALBの登場により、標準サービスとしてコンテントベースのルーティングが可能になったほか、それ以外の機能強化も行われた。料金体系が異なることから、システムの要件によって、従来のロードバランシングサービスと新しいALBの使い分けが必要になる。
そこでこの記事では、従来のロードバランシングサービスと比較してALBの機能を紹介する。さらに新しいALBについて性能検証を行う。
本題に入る前に、サービス名称についての説明が必要だ。ALBの一般提供に伴い、従来のロードバランシングサービスELBは「Classic Load Balancer(CLB)」という名称に変更された。ELBは、新しいALBと従来のCLBを合わせたロードバランシングサービスの総称として用いられる。
コンテントベースのルーティング
新しいALBの代表的な機能であるコンテントベースのルーティングとは何か。まずは、クライアント(Webブラウザー)-ALB-Webサーバーという単純なシステム構成で説明しよう。
クライアントは「http://xxxx.yyyy.co.jp/○○○/」といったURLを使って、ALBを経由してWebサーバーにアクセスする。その際、コンテントベースのルーティングでは、ALBがURL末尾の「○○○」という部分に基づいて、異なるWebサーバーにリクエストを振り分ける。
例えば「http://xxxx.yyyy.co.jp/AAA/」というリクエストはAサーバーに、「http://xxxx.yyyy.co.jp/BBB/」というリクエストはBサーバーに振り分ける。
そのメリットを説明するために、複数のサブシステムから成る人事システムを取り上げる(図1)。給与計算サブシステムが2台の仮想マシン上で稼働しており、「http://xxxx.yyyy.co.jp/kyuyo/」というURLあてのリクエストをALBによって負荷分散している。そこに、勤怠管理サブシステムを稼働させる2台の仮想マシンを追加する。