ロードバランサーとは?特徴やDNSラウンドロビンの違いを徹底解説!
近年、多数のシステムが導入されるとともに、問題になってくるのが、
「サーバーの負荷」
です。
システムが高品質になるとともに、扱われるデータ量は多くなり、負荷の分散が大きな課題になってきます。
そんな中で、負荷を分散させる方法として「ロードバランサー」があります。
今回は、この「ロードバランサーとはなにか」に加えて、DNSラウンドロビンという仕組みについて説明していきます。
ロードバランサーとは
ロードバランサーとは何かを説明します。
ロードバランサーとは、ざっくりと説明すると
「外部からのアクセスを複数のサーバーに振り分けて負荷分散を行う装置」
のことです。
ロードバランサーの特徴
ロードバランサーの特徴について解説していきます。
インターネットアクセスが一つのサーバーに集中すると、システムがダウンすることがあります。
ここにロードバランサーを入れることで、それぞれの機器やそれぞれの性能のパフォーマンスの低下を防ぐことができるのが特徴です。
ロードバランサーの種類
ロードバランサーの種類について解説していきます。
細かい説明をすると難しくなりますが、通信経路によって
・One-Arm
・Two-Arm
の2種類に分けられます。
「One-Arm」
メリット:負荷がより軽減されること
デメリット:通信経路が複雑でわかりづらい
「Two-Arm」
メリット:通信経路が簡潔でわかりやすい
デメリット:機器の障害対応には作業が必要
現在、ロードバランサーの開発には多くの会社が取り組んでいますが、今回は、Amazonに絞って解説していきます。
Amazon社が開発しているロードバランサーは
・Network Load Balancer(NLB)
・Application Load Balancer(ALB)
・Classic Load Balancer(CLB)
NLBは毎秒数百万のリクエストを処理する事ができ、効率の良いロードバランサーです。
トランスポートレイヤーでルーティングが行われるのが特徴です。
動的なルーティングが可能で、1つのサービスから多くのタスクを持つこともできます。
2つ目はApplication Load Balancer(ALB)です。
アプリケーションレイヤーでルーティングが行われるのが特徴です。
こちらもNLBと同様に動的なルーティングが可能です。
3つ目はClassic Load Balancer(CLB)です。
CLBはNLBとALBの機能を併せ持ったような方式です。
ルーティングは、トランスポートレイヤーでもアプリケーションレイヤーでも可能ですが、静的なマッピングとなります。
そのため、サービスと同じ数だけのコンテナインスタンスが必要なAWSのロードバランサです。
コンテナインスタンスとは、コンテナとインスタンスを組み合わせた言葉のことを言います。
※1.コンテナとは、サービスを構成するアプリケーション・ミドルウェアや、それらに関する依存関係をひとまとめにしたもののこと
※2.インスタンスとは、あらかじめ定義されたコンピュータプログラムやデータ構造などを、メインメモリ上に展開して処理・実行できる状態にしたもの
ロードバランサーのメリットとデメリット
ロードバランサーは、負荷を分散させるためには、非常に有効な手段ですが、導入に関してメリットとデメリットがあります。
ロードバランサーのメリット
ロードバランサーのメリットは、3つあります。
・セッションを維持できる
・サーバーを監視できる
・柔軟性の高い負荷分散を実現できる
まず、ロードバランサーによって、
「前回使っていたサーバーとは違うサーバー」
にアクセスすることになっても、セッションを維持できる点がメリットです。
セッションとは、通信の始まりから終わりまでを意味する一連の流れを言います。
例えば、ECサイト。
通常ECサイトでは、
1.商品をカートに入れる
2.ブラウザを閉じる
3.再度ECサイトを訪れる
というような操作をした場合、再度訪れたときにも、以前カートに入れた商品は残っています。
もしも、これが
「再訪する度にカートが空になっている」
という仕様だと、ユーザーとしては使い勝手が悪くなります。
そのため、通常セッションにログインした情報やカート情報などを保管しておきます。
(データを保管するものには、クッキーとセッションがありますが、ここでは細かくなるので割愛します)
通常、セッションはサーバーに保管される情報なので、サーバーが変わればセッションは保持されません。
一方で、ロードバランサーを利用すれば、負荷分散のために訪れたサーバーが、前回のサーバーとは違っていたとしても、同じセッションを利用することができるのです。
次に、サーバーを監視できるという点。
ロードバランサーでは、通信を振り分ける際に、故障していないサーバーを選んで利用先を振り分けます。
つまり、常に分散先のサーバーを監視している事になり、故障したサーバーを利用するリスクが減ります。
最後に、柔軟性の高い負荷分散を実現できる点です。
柔軟性とは、分散効率のことを言います。
ロードバランサーは「リーストコネクション」という負荷分散のアルゴリズムを採用しています。
リーストコネクションでは、負荷の少ないサーバーを優先して自動的にリクエストを割り当てていきます。
そのため、常にサーバーに対して最適なアクセスの量を計算しながら、負荷分散を行うことができます。
ロードバランサーのデメリット
ロードバランサーのデメリットは、2つあります。
まず自社に適したサービスを選びにくいといった点が挙げられます。
ロードバランサーは、前述したAmazon社を始め、多くの会社がサービスを展開しています。
それぞれの会社でロードバランサーの強みや特徴は異なります。
自社に優先すべき要素を明確化した上で、価格・性能と相談して購入を決めなければなりません。
専門のサーバーエンジニアなどでない限り、これらの最適な選定は難しいでしょう。
次にロードバランサー自体のコストが高い点です。
ロードバランサーを導入するのに100万単位のコストがかかります。
また、ロードバランサーを扱うには専門的な技術も必要です。
そのため、自社に専門的技術を持っている人がいなければ雇い入れなければなりません。
ロードバランサーとDNSラウンドロビンの違いとは
ロードバランサーを調べていると、「DNSラウンドロビン」というキーワードも同時に出てくる事が多いです。
では、これらの違いについて見ていきましょう。
DNSラウンドロビンとは
DNSラウンドロビンとは、1つのドメインに複数のIPアドレスを自動的に割り当て振り分けることで、サーバーの機能を向上させます。
サイトにアクセスする際、URLはDNSサーバーによってIPアドレス(ネット上のサーバーの住所のようなもの)に変換されます。
この変換先であるサーバーを複数用意することで、複数のサーバーへのアクセスを促し、結果として負荷を分散させる事ができる方法です。
DNSラウンドロビンとロードバランサーの違い
DNSラウンドロビンがロードバランサーに比べて優れていることは大きく分けて2つあります。
・コストが抑えられるので導入のハードルが低い
・操作が簡単
ロードバランサーを導入する場合は、専用の機器を購入する必要がありましたが、DNSラウンドロビンは設定を変えるだけで実現が可能です。
設定方法は今回は割愛しますが、
「DNSラウンドロビン Windows」
「DNSラウンドロビン Linux」
など、OSを指定して検索すれば、設定方法が出てきます。
更に、設定だけなので操作は非常に簡単です。
次にDNSラウンドロビンがロードバランサーに比べて劣る点を挙げます。
・サーバーの負荷状態を考慮せずアクセスの振り分けを機械的に行う
・故障したサーバーにもアクセスを機械的に送ってしまう
・セッションを管理できないのでECサイト向けではない
まず、サーバーの負荷状態を考慮しないという点です。
DNSラウンドロビンは、サーバーがパンクしそうでもアクセスの振り分けを機械的に平等に行ってしまいますので、アクセスが多く集まるサイトでは不向きでしょう。
対してロードバランサーはサーバーを常に監視して、パンクしそうなところには送らないなど適宜アクセスの振り分けの対応をしてくれます。
そのため、同じサーバースペックでも、より効率的に分散が可能です。
次に、DNSラウンドロビンは、故障したサーバーにもアクセスを機械的に送ってしまいます。
ロードバランサーは、きちんとサーバーが動作しているのかを確認します。
そのため、1つのサーバーが故障したとしても、問題なくユーザーはアクセスが可能です。
DNSラウンドロビンは、1つのサーバーが故障しても、残りのいくつかのサーバーは動いている分、故障に気付きにくいとも言えるでしょう。
「壊れた機器を復旧させる」事が遅れてしまう原因にもなります。
最後に、DNSラウンドロビンは、一連の流れであるセッションを管理できません。
ですから、ECサイト向けではないという点で注意が必要です。
ネットワークエンジニアはAMELAに
今回は、ロードバランサーについて見てきました。
近年は、多くの企業がECサイトを展開しています。
楽天市場やAmazonへの出店だけなら問題はありませんが、自社のECサイトを運営する際には、こういったネットワーク機器の検討も必要と言えるでしょう。
ただ、現在社内にネットワークエンジニアやサーバーエンジニアがいない企業の場合、どうしてもこういった部分を最適に設計するのが難しいです。
そういった場合は、是非AMELAにご相談ください。
ネットワークに強いエンジニアやサーバーに強いエンジニア。
様々な要望に応えられる人材が揃っています。