本文へジャンプします。

ニフティクラウド探検隊 3層モデルのシステムを簡単に構築したい!

こんにちは。

ニフティでインフラを守るお仕事をしている五月女です。

00_ss
最近は、パソコンやスマートフォンの利用が当り前となり、利用者の環境毎に個別にアプリケーションを作って配布するのではなく、プラウザ経由で利用する、いわいる「ウェブアプリケーション」を利用する機会が増えつつあると思います。

スケジュール管理やWebメール、ドキュメント管理など企業活動に必要なもの。
他にも、ブログやECサイト、オンラインバンク、ソーシャルゲームといった多くのサービスがウェブアプリケーションとして提供されています。
実際、ウェブアプリケーションの作成が必要になる機会も増えているのでは無いでしょうか。

こうしたアプリケーションを作成する際のシステム構成としては、「ウェブサーバ」「アプリケーションサーバ」「データベースサーバ」にて構成される「3層モデル」が用いられる事が多いです。
ところが、実際に構築してみると、構成に合わせたネットワークの設計やアクセス制御の設定が必要になったりと、意外と手間がかかり面倒な事が分かります。

特に、サーバの増減が自由自在なクラウドの恩恵を最大限活用するためには、アクセス規模に合わせてシステム構成を刻々と変化させる必要があり、毎回設定を変更する事が、煩わしく感じるかもしれません。
しかし、ニフティクラウドには、そういった面倒で煩雑な手間を省き、専門的な操作無く実現する機能がちゃんと用意されています。

今回は、ニフティクラウドのファイアウォール機能を利用して「簡単に3層モデルを実現する方法」を紹介します。

※内容は、2012年02月現在時点の情報です。
※ニフティクラウドで提供されている「CentOS 5.6 64bit Plain」を対象とした記事です

「3層モデル」とは

ウェブアプリケーションのシステム構成としてよく利用される「3層モデル」は、他にも「3層構成」や「3層アーキテクチャ」等と言われ、こうした構成をまとめて、多層アーキテクチャと呼んだりします。

ウェブアプリケーションの3層モデルは下記3層を指す事が多いです。

  • ウェブサーバ
  • アプリケーションサーバ
  • データベースサーバ

01_3layerstructure
具体的なソフトウエアと結びつけると、各層は下記の様な構成になるのではないでしょうか。

  • ウェブサーバ(以下 WEBサーバ)
    • Apache HTTP Server、Microsoft Internet Information Services(IIS)、Nginx、lighttpd 等
  • アプリケーションサーバ(以下 APLサーバ)
    • Apache Tomcat、JBoss、WebSphere Application Server(WAS)、ASP、PHP、Ruby、Perl 等
  • データベースサーバ(以下 DBサーバ)
    • MySQL、PostgreSQL、Oracle Database Server、MongoDB 等

動作を簡単に表すと次の様になります。

  1. サービスの利用者が、WEBサーバへアクセスし入力を受付
  2. WEBサーバがAPLサーバに利用者への情報表示に必要な処理を依頼
  3. APLサーバが必要な情報をDBサーバに要求して取得
  4. APLサーバがDBサーバより取得した情報より、必要な処理を実施
  5. APLサーバがWEBサーバへ返却
  6. WEBサーバが利用者へデータをお届け

では、具体的にニフティクラウドでこの「3層モデル」を実現する方法を確認していきます。

ニフティクラウドの機能の確認

3層モデルの実現方法の前に、ニフティクラウドの機能についておさらいします。

ニフティクラウドのネットワーク

標準の状態にて、ニフティクラウドから各サーバへ提供されるネットワークは2つあります。
一つが「グローバルネットワーク」。
もう一つが「プライベートネットワーク」です。

図にしてみると大体こんな感じです。
02_niftycloudnetworks それぞれのネットワークの特徴は下記の通りです。

  • グローバルネットワーク
    • グローバルIPが割り当てられる
    • 自身の管理下のサーバも含め、ニフティクラウドの他のユーザと共有
    • インターネットに直結
  • プライベートネットワーク
    • プライベートIPが割り当てられる
    • 自身の管理下のサーバも含め、ニフティクラウドの他のユーザと共有
    • 超高速!(*1)
ニフティクラウドのファイアウォール

ニフティクラウドのファイアウォールは、一般的なファイアウォールとしての機能を一通り備えており、
さらに、コントロールパネルから簡単に設定したり、APIから制御し、設定を自動化するといった事が可能です。

ファイアウォール

お客様のサーバーへの通信を、あらかじめ定義されたルールに従ってフィルタリングする機能です。
サーバーより上位のレイヤーでフィルタリングを行うことで、複数のサーバーに一括でファイアウォールを適用することができます。
設定と管理は、コントロールパネルやAPIで行うことができ、お客様の運用効率が飛躍的に向上します。
http://cloud.nifty.com/service/sec.htm#fw

ファイアウォール機能の紹介は「中の人」が書いた下記記事が、実例を交えており詳しいですので、合わせてご覧ください。

さて、各機能の詳細な説明は公式サイトに任せるとして、
ここでは、ファイアウォールの持つ重要な機能の説明をします。

一つが「グループ」で、もう一つが「接続元種別」です。

「グループ」機能

ニフティクラウドのファイアウォールでは、フィルタリングルールを「グループ」という単位で管理します。
グループ毎に個別のフィルタリングルールを作成し、特定のグループにサーバを追加する事でフィルタリングルールを適用します。

特徴として、同一グループ内の通信はIN/OUT共に制限なく利用出来ます。
そして、インターネットを含む、グループ外との通信について制御する事が可能です。

03_firewallgroup 図中、同一グループ「GroupA」に属するサーバ(1)サーバ(2)の間は制限無く通信出来ますが、
「GroupA」に属するサーバ(1)と「GroupB」に属するサーバ(3)の間は通信が制限された状態です。

グループ外とのフィルタリングルールに利用出来る要素は、「プロトコル種別」「宛先ポート」「IN/OUT種別」「接続元種別」が利用出来ます。

05_firewallsettingwindow

「接続元種別」機能

接続元種別として選択可能な対象に「グループ」があります。

例えば、ファイアウォールグループ「GroupA」にて次の様な設定を入れます。

インターネットを含むすべてのネットワークから、80番ポートに対するTCP通信を許可する

06_firewallsettingsgroupa 次にファイアウォールグループ「GroupB」にて次の様な設定を入れます。

「GroupA」に属するサーバからのみ、8080番ポートに対するTCP通信を許可する

07_firewallsettingsgroupb すると、次の様な通信制御されたネットワークが構成されます。

04_firewallaccessroute この通信経路を展開すると、仮想的に下記の様になり、仮想的に2層構造が実現出来た事が分かります。

08_firewallaccsessroutelogicalexpan この様に、ニフティクラウドのファイアウォール機能では、接続元種別とグループ化されたフィルタリングルールを組み合わせる事で、仮想的にネットワークを構成する事が可能です。(*2)

ニフティクラウドで3層モデルを実現する

実際に、ニフティクラウドを使ってウェブアプリケーションを提供する事を想定し、ファイアウォール機能を利用して3層モデルを作っていく過程を考えてみました。

最小構成からのスタート

クラウドによるコストの最適化を最大限に活用するため、ウェブアプリケーションをスモールスタートで開始します。
最初はWEBサーバ、APLサーバ、DBサーバを同一のサーバに同居させる事でコストを最小限に抑えます。

09_smallstart

WEB/APL/DBサーバの分離

公開後、提供を開始したサービスは順調にアクセスを伸ばしてきました。
今後の、アクセス増を見越し、拡張可能な構成にすべく、WEBサーバ、APLサーバ、DBサーバを分離させます。

10_webapldbseparation
分離させる作業は簡単です。
既存のファイアウォールグループ「WEBandAPLandDB」を「WEB」に名称変更し、新規に「APL」「DB」というファイアウォールグループを作成します。
そして、新しく作成したAPLサーバ、DBサーバを、それぞれ各グループに追加すれば完了です。
コントロールパネルからの操作すれば、5分とかからない操作です。(*3)

以上の操作で、ニフティクラウド上で3層モデルが実現出来ました。
あっけないほど簡単です。

11_webapldbseparationlogicalexpansi

スケールアウトを考慮した3層モデルへ

WEBサーバ、APLサーバ、DBサーバが分離出来ればあとは、アクセス増減に応じて、WEBサーバ、APLサーバを柔軟に増減させて対応可能です。
増減に伴うネットワークの設定は、各ファイアウォールグループへサーバを追加・削除すればOKです。

12_3layerstructurescaleout
アクセスが多い時、多くの処理を捌きたい時は各グループへ作成したサーバを追加し、アクセスが少ない時、負荷の低い時はサーバを削除すればあとはファイアウォールグループが自動的に設定したフィルタリングルールを適用してくれます。
13_3layerstructurescaleoutlogicalex

もっと便利に使ってみる

グローバルIPの削除

論理ネットワークとして、インターネット側のネットワークが不要なサーバが考えられます。

例えばインターネットへのアクセスを必要としない、APLサーバやDBサーバについては、インターネット側のグローバルIPを削除してしまっても良いでしょう。
削除する事で、万が一ファイアウォールグループへの追加を忘れてしまったりした際も安心ですし、サーバ代金が減額されます。

14_deleteglobalip

VPNの利用

全サーバのグローバルIPを削除してしまい、Virtul Private Network(VPN)経由でのアクセスのみを許可する事も出来ます。

ニフティクラウドのVPN接続サービスを利用する際は、プライベートLANオプションの申し込みが必須です。
このため、プライベートLAN利用開始時にプライベートネットワークが、他のニフティクラウドの利用者から独立します。
さらに、全サーバのグローバルIPを削除する事で、インターネットから直接サーバへアクセスする事を出来なくします。

その上で、VPN経由の接続をする事で、インターネットに生のデータを漏らす事無くサーバとデータのやり取りが可能になります。
そしてここでもファイアウォール機能を利用する事で、部署やチーム毎にアクセス出来るサーバ範囲を限定したり、流れるデータを見えなくするといった事が実現出来ます。

15_vpnaccess
ここまで出来ると、オフィスにあるサーバと遜色なく利用出来るのではないでしょうか。
さらに、操作のわかりやすいコントロールパネルとAPIを利用して、無尽蔵のサーバパワーを従量課金で、利用したい時に利用したい分だけ利用する事が出来ます。
この様にVPNとファイアウォールを併用する事で、ニフティクラウド上に仮想的な自社センターを確保する事も可能です。

まとめ

以上、簡単ではありますが、ウェブアプリケーションの3層モデルを例に、ニフティクラウドのファイアウォールを紹介しました。
この機能の魅力が少しでも伝わっていれば幸いです。

ファイアーウォールを利用した際に気になるのは、未利用時とのオーバーヘッドですが、ニフティクラウドのファイアウォールは自分が試した限り、サーバ自体の負荷は全然無く、ネットワークのオーバーヘッドも殆ど感じられません。
また、初期状態で2件まで無料で使え、有料版に切り替えれば最大55グループまで設定する事が可能です。

そして、ここで紹介したニフティクラウドのファイアウォール機能はAPI経由で実行出来ますので、構成変更作業自体を自動化する事だって可能です。
オンプレミス環境下で物理サーバを用いてシステム構築をしていたときの苦労が嘘の様な簡単さですね。
そういう意味で、寂しく感じる今日このごろです(´・ω・`)ウゥ

今回はファイアウォール機能や3層モデルの実現方法等を例を交えて簡単にまとめさせて頂きました。
さらに詳しい解説につきましては、2012/02/20発売のニフティクラウド解説本、
『ニフティクラウド IaaSによるシステム構築/活用入門』に上手くまとめられています。

本ブログにも登場する、石田さんと吉田さんが書かれた「ニフティクラウドによるシステムインテグレーション」(3層モデルの話)と、「ニフティクラウドのセキュリティ」(ファイアウォールの話)では、この記事では省略した内容を含めてとても詳しく解説されていますので、興味のある方は是非ご覧ください。


著者 石田健亮、岸本康二、仲山昌宏吉田雄哉渡辺一宏/ニフティ株式会社(監修)
書籍名 ニフティクラウド IaaSによるシステム構築/活用入門
発売日 2012年2月20日(月)
定価 3,129円(税込)
出版 翔泳社
ページ数 336ページ

*1: 1サーバで6Gbpsとか出る!!
*2: 説明の都合、細かな所は端折りましたが、おおよそこんな感じ。
*3: ファイアウォールグループの名称は適当に決めてください。
ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

福澤真

福澤真

ニフティクラウドのコンパネ開発、運用をしています。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。

世良迪夫

世良迪夫

ニフティクラウドのRDBなどを担当しています