TOP書籍連動> 基本的なWebシステムの高性能化手法




まるごと PostgreSQL!
商用データベースに匹敵するWebシステム構築手法

第4回:アクセス分散とスケールアウトの条件

著者:大垣靖男(OHGAKI, Yasuo)   2005/4/27
1   2  次のページ
基本的なWebシステムの高性能化手法

   前回までで、スケールアウトに欠かせないアクセス分散について理解できたと思います。今回は、まずIPTablesとIPRoute2によるアクセス分散の実際を解説します。
IPTables/IPRoute2によるアクセス分散

   IPTables(FreeBSDではNetFilter)は、TCP/IPネットワークのパケットの受信/送信/ルーティングを制御するプログラムで、Firewall構築に利用されます。IPTablesは多くの機能をサポートしていますが、中でもNAT(Network Address Translation)機能が負荷分散を行う機能を持っています。送信元のアドレスの変換を行うSNATと、送信先のアドレス変換を行うDNATの2種類のNAT機能がありますが、このうちDNATがアクセス分散に利用できます。

   図10の構成では、IPTablesを実行するコンピュータはFirewall(ルータ)のように動作させ、実際にネットワークリクエストを処理するサーバーは別のコンピュータで実行させる必要があります。

IPTablesによるアクセスの分散
図10:IPTablesによるアクセスの分散


   iptablesコマンドでDNATの設定を追加する書式は、リスト1のようになります。

リスト1:DNATの設定追加の書式
iptables -A PREROUTING -t nat -p tcp -i <interface> -d <global_ip_adress> --dport 80 -j DNAT --to-distination <start_ip_address>-<end_ip_address>

   IPTablesを利用した負荷分散では、グローバルアドレスをプライベートIPアドレスに変換/分散します。リスト2の例では、グローバルアドレスを記述すべき箇所に、便宜上IPアドレス10.10.10.10を記述しています。

リスト2:DNATの設定追加の具体例
iptables -A PREROUTING -t nat -p tcp -i eth0 -d 10.10.10.10 --dport 80 -j DNAT --to-distination 192.168.1.100-192.168.1.200

   この例では、10.10.10.10の80番ポート(http)へのアクセスは192.168.1.100〜192.168.1.200の範囲のIPアドレスのコンピュータへ分散されます。

   IPTablesは、ネットワークの帯域制御やトンネリングを行うプログラムとして開発されました。よくIPRoute2の利用方法として紹介されるのが、複数のISPへの接続を行う例です(図11)。

IPRoute2による複数のISPへの接続
図11:IPRoute2による複数のISPへの接続


   この複数のISPへのアクセスを、ちょうどリバースプロキシのように逆にするとWebサーバーへのアクセス分散に利用できます(図12)。IPRoute2は、IPTablesよりルールベースの細かいネットワークトラフィック制御が可能です。

IPRoute2による負荷分散
図12:IPRoute2による負荷分散


1   2  次のページ

書籍紹介
まるごと PostgreSQL! Vol.1
まるごと PostgreSQL! Vol.1 日本での市場シェアNo.1(オープンソースRDBMS部門)データベースソフトPostgreSQLの最新情報を、開発メンバーを含む豪華執筆陣が多面的かつ詳細に解説します。PostgreSQL用クラスタリング/レプリケーションソフト、PostgreSQL⇔Oracle移行、PostgreSQLによる大規模サイト構築法、新バージョンPostgreSQL 8.0先行レビュー、PostgreSQL用.NETデータプロバイダ等々、他では読めない貴重な記事が満載です。
発売日:2004/12/08発売
定価:\1,890(本体 \1,800+税)
大垣 靖男
著者プロフィール
大垣靖男(OHGAKI, Yasuo)
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て、エレクトロニック・サービス・イニシアチブ有限会社を設立。Linuxはバージョン0.9xの黎明期から利用してるが、オープンソースシステム開発やコミュニティへの参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトのPostgreSQLモジュールのメンテナ、日本PostgreSQLユーザ会の四国地域での活動等を担当している。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第4回:商用データベースに匹敵するWebシステム構築手法(4)
基本的なWebシステムの高性能化手法
  スケールアウトの条件
商用データベースに匹敵するWebシステム構築手法
第1回 PostgreSQLの現状
第2回 Webシステムの高速化
第3回 アクセス分散の基礎とラウンドロビンDNS
第4回 アクセス分散とスケールアウトの条件
第5回 HTTPセッションの永続性確保
第6回 HTTPキャッシュと出力キャッシュ
第7回 クエリキャッシュとキャッシュの効果
第8回 HTTPキャッシュの効果
第9回 メッセージダイジェスト関数
第10回 メッセージダイジェスト関数の実装