ネットワークエンジニアやサーバエンジニアでも、ロードバランサーやリバースプロキシという単語を聞く機会があるかと思います。プロキシの基本は、クライアントのWEB閲覧の際に、目的のWEBサイトのコンテンツを、代行取得してきてくれる技術です。
では、リバースプロキシは、WEBサーバサイドでどういう働きをしてくれるのでしょうか?
今回はその、ロードバランサーもとい、リバースプロキシの真髄と近未来的な技術について、解説していきます。
ロードバランサーの役割と効果
ロードバランサーは別名、リバースプロキシとも呼ばれ「外部の接続から、Webサーバを守る」働きをしてくれます。
クライアントから出されたWEBページ閲覧要求のパケットは、ファイアウォールやルータを抜けて、WEBサーバへ到達します。
いまどきWEBサーバ1台だけでは、あっという間にレスポンス過多となり、遅延やサービス停止に陥ってしまいますので、通常は2台~4台のWEBサーバが同様のWEBサービスを提供するよう、待ち構えています。
ロードバランサーは、WEBサーバ群の前段でパケットを待ち構え、その通信パケットを各WEBサーバへ振り分ける役割担うのです。
この機能はパーシステンス機能といい、設定により「サーバA、B、Cへ交互に振り分ける」「クライアント負荷の高いサーバAを見逃し、サーバBへ振り分ける」「クライアントの接続元によって、サーバへ振り分ける」など、自由自在な設定が可能です。
また、プロキシさながら「キャッシュ機能」も持ち合わせており、キャッシュに残った最新のコンテンツであれば「わざわざWEBサーバへ問合せず、クライアントへキャッシュデータを渡す」役目も担ってくれます。
「それではロードバランサーの役割のほうが大変ではないか?」と思われるかもしれませんが、ロードバランサーは、L3スイッチにも使用されている、ASICが搭載されています。
ASICはパケットフォワーディングを得意としたCPUであり、WEBサーバのそれよりも、パケットの取り扱いに長けているのです。
なお、ロードバランサーの役割はWEBコンテンツだけにありません。
メールサーバやDNS、DHCPやADサーバなどの「社内で常時動作しなくてはならないシステムツール」の前段でも構えることができ、各部門の耐障害性や保守性を向上させる役割も担うことができます。
ロードバランサーのセキュリティ技術
ロードバランサーの役割はなんだかファイアウォールにも類似していますが「ロードバランサーあっての、セキュリティ技術」をテーマに、ご紹介していきます。
ロードバランサー自身のノンストップ技術
前述で「サーバA、B、Cへ交互に振り分ける」パーシステンス機能をご紹介しましたが、その際にサーバAが故障などにより、サービスを停止してしまったとします。
その場合、ロードバランサーは、サーバAへのフォワーディングを速やかに停止し、正常稼働中のサーバBなどへ、通信を振り分ける制御を行います。
これをモニター機能といいますが、この切り替えはすこぶる早い性能を発揮します。
モニター機能は、常にWebサーバ等に対して死活監視(ヘルスチェックといいます)を行なっており、通信不能を確認すると、即時、該当サーバへの振り分けを停止するのです。
この制動により「Webサーバは、常に全台オンライン」じゃなくても良くなり、Webサーバのメンテナンス性が飛躍的に向上しました。
また、そのロードバランサーは、ファイアウォールと同じく、HA構成を構築することができます。
HA構成は通常、同型の機器が2台で構成され、Active役とStandby役を担います。
Active役は、通常通りの通信制御を行い、Standby役は、Active役の障害発生時に通信を開始し「ユーザの体感や遅延を感じることなく」速やかに切り替わってくれるのです。
「完全に故障しても、パケットをフォワーディングしてくれる」機能を持つロードバランサーもあります。
この機能は、故障発生時に、送信側と受信側のインタフェースを直結し、パケットを継続してフォワーディングしてくれます。
まるでゾンビのような機能ですが、これをフェイルスルーといいいます。
フェイルスルーは、同様のロードバランサーを2台以上確保してHA構成を組む必要がなく、低コストに冗長化構成を組む事が出来るのが、最大の強みであります。
フェイルスルーの要件は、例えば、サーバAとサーバBへ処理を振り分けるとすると、サーバAと同様のIPアドレス情報を持たなくてはなりません。
また、サーバAも同様に、ロードバランサーと同じIPアドレス情報を持ちますので、該当セグメントにおいては、サーバAは、隔離された状況となります。
これは、サーバAが別の管理セグメントを持っていることで、解決します。
WAFにSSL、何かと芸達者なロードバランサー
今や、ロードバランサーの目玉ともなっている両機能です。
本来であれば、WAF機能(Web Application Firewall)はファイアウォール、SSL機能はWebサーバが搭載して然るべき機能でした。
ですがこれらの機能は処理が重く、遅延の発生源ともなりかねないため、ロードバランサーに白羽の矢が当てられた形となります。
ロードバランサーによるWAF機能は、Webサーバの保護に特化して最適化された機能を持っており、総合的なファイアウォールやUTMの一歩先を行くセキュリティーを構えています。
また、ロードバランサーがSSLアクセラレータ機能を持つことにより、WebサーバはSSL暗号化の処理をする必要がなくなりました。
SSL処理を施したHTTPSコンテンツを提供するには、HTTPコンテンツを提供するそれより、約4割増の処理が必要とされています。
これを、前段のロードバランサーでSSLオフロード処理(HTTPSからSSLを剥がす=HTTPに切り替える、という意味です)をすることで、Webサーバは、単純にHTTPコンテンツのみを提供するだけで済んでしまうのです。
「各Webサーバへ処理を振り分け、SSLアクセラレータを担う」これだけでも、かなり優秀なアプライアンスと言えますね。
クラウド型ロードバランサーにより、世界で分散化されるWEBサイト
クラウド型のロードバランサーは、サービスとして存在します。例えば、クライアントが日本のオフィシャルWebサイトへアクセスしようとすると、日本にあるWebサーバへアクセスしに行かなくてはなりません。
これを外国現地へのロードバランサー宛に割り振り、外国現地のロードバランサーから国内のWEBサーバへフォワーディングすることで、通信の最短化を実現することができます。
わざわざ、外国のホスティングサービスやデータセンターを利用して外国専用のWebサーバを構築する必要もなくなり、単一のWebサーバのみで運用が可能となるのです。
クラウド型ロードバランサーの強みは、それだけではありません。
例えば、外国現地のクラウド型ロードバランサーが現地でダウンした際は、直近の国のクラウド型ロードバランサーへ接続先を切り替えてくれる、という機能を持ちます。
更に、クラウド型ロードバランサーは、アプライアンスを購入する必要がなく、サービス契約によるものですので、ロードバランサー故障時や障害時に、保守作業を行う手間が格段に軽減されます。
世の中がクラウド化を是非とする理由が、ここにあるわけですね。
近年では、SNSなどで呼びかけられた、特定企業へのアクセス過多やDDoSアタック(F5アタックなど)が目立ちますが、このようなロードバランシングテクノロジーで「Webサーバの保護」と「アクセス先の分散化」が実現できるのです。