ロードバランサーとは、その名の通りサーバーにかかる負荷を、平等に振り分けるための装置のことを指します。これによって1つのサーバーにかかる負担を軽減したり、停止状態を防ぐことができたりします。ここではロードバランサーの仕組みについて分かりやすくご紹介します。
目次
ロードバランサーとは?
ロード(load、負荷)+バランサー(Balancer、平衡を保つためのもの)で、サーバーやネットワークに関連する用語であり、装置の名称です。この仕組みにより、Webサイトへのアクセス集中やサーバー故障などの場合でも、アクセス中の利用者に安定したサービス提供を継続可能になります。
まず、そもそも各種サーバーへのロードとは何かについてふれたあと、ロードをバランス良く処理するための、ロードバランサーの仕組みを解説します。
ロード(負荷)とは?
インターネットから各種サーバーにアクセスがあると、サーバーはその機器に搭載されているCPUやメモリーなどのリソースを使って指示を処理します。その結果が利用者のパソコンに送られて、指示内容がブラウザに表示されます。
アクセス数がわずかで、処理数が少ないうちは問題となりません。ところが何らかの理由でアクセスが集中し処理数が激増すると、利用者のブラウザでのページ表示が極端に遅くなったり、表示されなくなったりします。この滞っているときが、高い負荷の状態です。
さらに負荷の程度やその対象は一定ではないため、負荷を軽減するために絶対に安全な解決策はありません。やはりある程度の余裕と柔軟性のある対策が必要です。その一つが、この記事の主題であるロードバランサーの導入です。
ロードバランサーの種類
一口にロードバランサーと言っても、機器を配置(構成)する位置により以下の2種類に分類できます。
(1) Two-Arm (inline) | (2) One-Arm | |
---|---|---|
配置場所 | 通信経路上 | 見た目はサーバー類と並列 |
メリット | 構成がシンプルでわかりやすい | 負荷軽減、ロードバランサー自体がボトルネックにならない |
デメリット | ロードバランサー自体を冗長化しないと機器の障害対応ができない | 通信経路を把握しづらい |
この記事では(1)Two-Arm (inline)をもとに、以下解説を進めていきます。
ロードバランサーでサイトの負荷を分散することで、アクセス不可状態を最小限にとどめるので、ユーザーのサイト行動時のストレス軽減に役立ちます。また、ベアメタルサーバーのオプションではあなた専用のロードバランサーを提供できます。
ロードバランサーの仕組み
Two-Arm (inline)型では図のように、インターネットと各種サーバーの間にロードバランサーを配置します。このときにロードバランサーに設定するIPアドレスを、仮想IPアドレスと呼び、Webアクセスを一手に受け付け、配下の適切なWebサーバーに割り振ります。割り振り方・内容によって、L4やL7のロードバランスと呼ばれます。
L4:IPアドレスとポート番号によって割り振る
L7:通信内容に応じて、リクエストを特定のサーバー群に割り振る
次にロードバランサーにきたリクエストが、実際の各種サーバーに転送されます。具体的には、各種サーバー側に割り振られたIPアドレス宛に対して送信されています。
そして、複数ある実際のサーバーの一つへ自動振り分けされて、負荷を分散することができます。
さらにロードバランサーでSSLアクセラレーターを使用することにより、本来サーバーごとに必要なSSL証明書を1本化したり、暗号化通信の負荷を軽減できたりします。
ロードバランサーの役割と機能
それでは、役割と機能についてさらに詳しくみていきましょう。負荷分散の目的もあわせて説明していきます。
速度低下を防ぐ
SEO(検索エンジン最適化)の観点から、Webサイトのページ表示速度の高速化は重要です。そのためWebサイトの人気が出てアクセス数が増加しても、ページ表示速度が低下しないように対策しなければなりません。
サーバーに負荷がかかると、処理に時間がかかり、利用者は重く感じてしまいます。その主な原因は、処理件数が増加してサーバーのリソース(CPUやメモリーなど)を奪い合うためです。
そこでロードバランサーの登場です。実際のサーバーも1台から複数台に増やすことで、負荷を分散します。その結果、Webサイトのページ表示速度の低下を防ぎ、高速化することができます。
ダウンしたサーバーへ送らない
1台のサーバーで運用している場合、万一故障するとサービスは停止し、修理しなければ元の状態に戻すことはできません。
一方ロードバランサーの仕組みでは、実際のサーバーを複数台で構成しているため、万一そのうちの1台が故障しても他のサーバーに自動切替すれば、利用者は継続してアクセスすることができます。
故障したサーバーを修理してロードバランサーの仕組みに戻せば、再び従来の構成と機能を回復することができます。
サーバーのメインテナンス
サービスを一時停止せずに、サーバーのメインテナンスを行うことができます。これはロードバランサーの設定を、メインテナンス中のサーバーに振り分けしないようにすることで実現可能です。
特定のユーザーのアクセスを同じサーバーへ送る
Webアプリケーションのトランザクションの整合性を維持するために、過去に振り分けたサーバーと同じサーバーに送る機能があります。これを「パーシステンス」といいます。これにより、一連の処理を保つことができます。
負荷分散の役割を持つDNSラウンドロビンとの違い
ロードバランシング(負荷分散)を実現する手段は、ロードバランサーだけではなく、DNSラウンドロビンという簡易的な方法もあります。両者の違いを把握することは、より良いロードバランシング手法を導入するうえで大切です。
DNSラウンドロビンとは
ロードバラシングの一つで、ロードバランサーを使用しない手法です。DNSサーバーの設定ファイルの一部(この場合ゾーンファイル)に、設定情報を書き込むことで実現できます。
DNSサーバーには、ドメイン名とサーバーに割り振られているIPアドレスを結びつける機能があります。この対応しているIPアドレスを複数登録します。するとリクエスト毎に、登録した異なったIPアドレスを順番に返してきます。利用者によるアクセス毎に異なるサーバー(Webサーバーなど)につながるため、負荷を分散することができます。
このように、DNSラウンドロビンはDNSの設定ファイルの書き換えだけで、結果的にロードバラシングを実現できますが、デメリットもあります。詳しくは下記の比較表をご覧ください。
(参考1)webサーバーに対する負荷分散 DNSラウンドロビンとロードバランサー
(参考2)NSDとDNSラウンドロビン
ロードバランサーとDNSラウンドロビンの比較表
ロードバランサー | DNSラウンドロビン | |
---|---|---|
価格 | 装置代が高価 | 比較的安価(設定のみ) |
サーバー障害検知 | 可能で、故障のサーバーには転送しない | 通常は不可能で、故障のサーバーに転送するため、利用者には不具合となる |
通信の継続性 | 有り、オンラインショッピング向き(パーシステンス) | 無し |
柔軟性(効率) | 現在のコネクション数が最も小さいサーバーに転送可能(リーストコネクション) | 負荷の大小に関係なく、あくまで順番通りに割り振る |
負荷分散でサービス停止を防ぎましょう
ここまでいかがでしたか。ロードバラシングの仕組みは、アクセス数の多いWebサイトを運営するためには必要不可欠です。その仕組みには、ロードバランサーとDNSラウンドロビンがあり、ロードバランサーの方が機能的に上回っています。
カゴヤ・ジャパンではベアメタルサーバープランにて、専用ロードバランサーをオプションとして提供しています。ロードバランサー自体の冗長化にも対応しています。利用を検討されてみてはいかがでしょうか。
KAGOYA FLEX
カゴヤ・ジャパンは、自社国内データセンターを基盤に、月額4,400円の低価格からクラウド導入を強力サポート。
VMware ベースの仮想サーバーと物理サーバーの組み合わせで最適なコストバランスをご提案いたします。
回線引き込みや、ライセンスの持ち込みなど柔軟な対応も可能です。