「あなたのサイトは、きちんと100%稼働していますか?」
Webサイトは、様々な個人や企業が情報発信のために作成されております。2020年7月時点には、約12億サイトが公開されているようです。(参考: https://news.netcraft.com/archives/2020/07/27/july-2020-web-server-survey.html )
この記事を読まれている方の中にもサイトを運用されている方はたくさんいらっしゃるのではないでしょうか?
そんな、みなさんに1つ質問です。「あなたのサイトは、きちんと100%稼働していますか?」
定常時に安定してサイトが表示されているのは、普通なことかもしれません。
しかし、テレビや他のサイト、SNS で紹介された際の急激なトラフィック需要が発生している際も問題ありませんでしょうか?
はたまた、Web サイトへの攻撃やインフラ側に障害が発生していても問題なく表示されてますか?
ここまであげると 100% 稼働していると言い切れないことが大半だと思いますので、それをどのように解決できるか、この記事でご紹介したいと思います。
一般的なWebシステムの構成 / 課題点
Webサイトは下記図のように構成されていることが一般的です。
図の中に書かれている “ADC” は アプリケーションデリバリーコントローラ と呼ばれる L4-7 ロードバランサに加えて、様々な機能が付与された機器となります。
基本的な負荷分散の機能だけでなく、セキュリティの機能やコンテンツキャッシュの機能を持っており、安定したサービスを提供する役割をになってます。
それでは、なぜ ADC を入れてもサービスが止まってしまうことがあるのでしょうか?
主に下記3つの課題があると考えられます。
- トラフィックが予想より多く来るなどリソース不足
- 通信がきちんと把握できていないアプリケーション側の問題
- 外部から攻撃で帯域の圧迫
3つのポイントにフォーカスして、あなたのサイトを安定させるための方法をこの記事では紹介いたします。
VMware NSX® Advanced Load Balancer™ とは
この記事で紹介する NSX Advanced Load Balancer は、様々な特徴で従来の ADCと異なります。
主な違いは、下記5つの特徴です。
- 設定を行うコントローラ とデータ転送する サービスエンジン が分離していること
- サービスエンジン間で処理の負荷分散が可能なため、伸縮性を実現
- サービスエンジンは、仮想版だけでなく、物理サーバへのインストール、コンテナ版も提供
- これによりパブリッククラウドを含めた、様々な環境での実行が可能
- 様々な環境への連携が実装されており、各種自動化可能
- 流れるトラフィックに関する情報の収集分析を実現
それでは、安定したサイトの実現にこれらの特徴がどのようにお手伝いできるかご紹介します。
リソース不足を解消! 分散型アーキテクチャによる伸縮性
まず一つ目に紹介するのは、リソース不足を発生しにくくする分散型アーキテクチャです。従来型のロードバランサは、 Active / Standby な冗長構成が行われております。2台での冗長構成を行っていても、Standby 側の1台は障害が発生した際にしか稼働しません。また、Active 側もトラフィックの急増に耐えられるようにリソース確保が行われてるため、定常時には10〜20%程度しか使われないことが現状です。大規模環境では、このような Active / Standby 側構成がシステムや環境ごとに構築されております。そのような環境でどのような問題が考えられるでしょうか?
一つ目は、リソースを有効活用することができないことです。
複数システムのうち、1つのリソースだけでトラフィックが急増し、リソースが足りなくなりそうな時に何かできることはありますでしょうか?処理できる上限は、1台の ADC であることは変わらないので、リソースを増やすには、ハードウェアを交換したり、CPU / Memory を増やすことが必要となってしまいます。周りのハードウェアにリソースの余裕があったとしても、転用できません。
二つ目は、管理ポイントが多くなってしまうことです。
ADC は、Active / Standby のペア毎に、管理する必要があります。そのため、システム全体で利用する ADC の数が多くなればなるほど、管理ポイントが増えていきます。それにより、トラブルシュートやソフトウェアアップデートの際に必要な作業が多くなります。
これを解消するのが、 分散型アーキテクチャを利用している NSX Advanced Load Balancer です。
NSX Advanced Load Balancer では、データを転送するサービスエンジンには設定を行うことができません。全てコントローラで制御します。それによって、先ほど挙げた管理ポイントが多くならず、大規模な環境も管理することができます。アップグレードする際もワンクリックで全てをあげることが可能です。
また、このサービスエンジンは、様々な環境で動かすことができます。
VMware vSphere® 基盤だけでなく、コンテナ環境や Linux サーバへの直接インストールすることが可能です。パブリッククラウド向けには、それぞれの環境動くバージョンを提供しております。AWS版 Azure版 はこちらからアクセス可能です。
様々な箇所で動かせるだけがサービスエンジンの特徴ではありません。最大の特徴は、複数のサービスエンジンで一つのサービス(仮想 IP )の処理を分散して行うことができることです。各サービス毎に 代表する サービスエンジンが自動で選択されます。しかし、着信したトラフィックは、他のサービスエンジン向けに 再転送を行い、処理自体を他のサービスエンジンに任せることが可能です。
下記、動画をご覧ください。
複数台でサービスを分散させて処理することができるため、簡単に Scale In / Scale Out させて、柔軟にキャパシティを変更させることができます。また、ARPを利用し代表のサービスエンジンをシームレスに動かすことができるため、ダウンタイムを無くしてアップグレードすることの実現にも役立っております。
リアルタイム分析で、アプリの通信状況の把握
従来、アプリケーションの遅延や問題を調べるには、専用のモニタリングツールを使うことが一般的でした。これらは、様々な箇所からの情報を利用することで、アプリケーションに関わる様々な情報を可視化することができます。しかし、実際に導入するには、対応している OS に専用のエージェントをインストールしたり、ライブラリを既存のアプリケーション内部に埋め込んだりすることが必要となり、導入するハードルが高くなっているのが現状です。
NSX Advanced Load Balancer では、サービスエンジンでトラフィックを処理するだけではなく、流れているトラフィックに関する情報を取得しております。取得された情報は、コントローラに転送されており、コントローラ上で可視化することができます。
実際の様子は下記動画をご覧ください。
従来のアプリケーション可視化手法では、様々な箇所にエージェントをインストールしたり、プログラムの回収が必要でしたが、アプリケーション通信が、 NSX Advanced Load Balancer を経由するだけでこれらの情報を取得することができます。
また、取得した情報を用いた検索も簡単に行えます。例えば下記のような検索ができます。
- レスポンスタイムが 特定時間以上かかっているもの
- 原因が端末側なのか、サーバ側なのかなどをさらに深掘りすることが可能
- 特定のOSからのアクセス
- HTTP Status Code が 期待されていないもの
- これにより、そもそも不正にアクセスされているのか
- サイト内部でのリソースの指定が間違っているのか
これにより、正常に動いていると思われるウェブサイトも実アクセスを確認することで発生しうる問題を発見することが容易にできるようになります。
簡単に Web サイトを守る Intelligent WAF!
いくら正常な Web サイトであっても、外部に公開されている限り、攻撃の対象となります。 Web アプリケーションの脆弱性を攻撃することが行われておりますが、攻撃自体を防ぐ方法は複数の手法が考えられます。セキュリティパッチを当てたり、プログラム自体の修正を行うことで、脆弱性を塞ぐことができます。また、簡単に対応できないものもあるため、 WAF (Web Application Firewall) を入れて防ぐことが行われます。
しかし、WAF 自体に課題がないわけではありません。主に下のような課題があります。
- パフォーマンスに上限がある
- 可視化が不十分
- ルール設定が複雑なため、全てのルールを適用して負荷がかかる
NSX Advanced Load Balancer で WAF を行うと上記課題を簡単に解決できます。
まず、パフォーマンスは、この記事の前半でも取り上げた分散型アーキテクチャで解決することができます。通常の ADC と同様に通常の WAF のパフォーマンスの上限は 1台分のパフォーマンスとなりますが、 NSX Advanced Load Balancer は、複数で分散処理させることができるため、WAF を有効にしても必要なリソースを簡単に伸縮させることができます。
続いて、可視化の部分も先ほど述べてきました。複数に分散された サービスエンジンから情報を収集し、コントローラで可視化を実施いたします。セキュリティの可視化も同じように実施することができます。
最後にルール設定ですが、カテゴリーに分けられているため、それごとに有効 / 無効にすることが可能です。これにより必要最低限のルールを適用することが可能です。また、可視化の部分で実際のどのルールが適用され通信できなくなっているか。という情報も可視化することができるため、正常にできるはずの通信が落とされたとしても簡単に特定することができ、それも元に例外処理を簡単に適用することができます。このルールセット自体も、設定をすることで自動ダウンロードすることも可能です。
[まとめ] NSX Advanced Load Balancer で安定したサイトを実現
この記事では、安定した Web サイトの構築に必要なポイントとして、下記3つをあげました。
- トラフィックが予想より多く来るなどリソース不足
- 通信がきちんと把握できていないアプリケーション側の問題
- 外部から攻撃で帯域の圧迫
今までの Webシステムでは、 ADC、アプリケーション可視化ツール、WAF など様々なツールを利用することで安定するように構築されてきておりました。しかし、用途によって様々なツールがあると管理ポイントが増えて複雑になることが想定されます。
NSX Advanced Load Balancer では、今まであった様々なツールで解決していたものを、1つのソリューションだけで実現することができます。また一つのソリューションのため、管理自体も簡単に行うことができるのがポイントです。
もしご興味を持っていただけたならば、ぜひ下記リソースにもアクセスしてみてください。
- NSX Advanced Load Balancer 製品ページ
- Hands-on Labs (HOL)
- こちらのサイトで、”NSX Advanced Load Balancer” で検索してみてください。
- IT 価値創造塾 NSX Advanced Load Balancer 紹介ページ