2 平成 19 年度 卒業論文 ストリーミング配信における負荷分散システ ムの構築 負荷分散手法の研究 近畿大学産業理工学部電気情報工学科 作成者 学籍番号 03172019 上野 翔平 平成 19 年 1 月 24 日 指導教員 講師 白土 浩 共同研究者 05-9-82-003 福田 福田 近畿大学 産業理工学部 電気情報工学科 目次 i 目次 第 1 章 まえがき vii 第 2 章 背景? ix 2-1 ストリーミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix 2-2 負荷分散 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x 2-2-1 DNS ラウンドロビン . . . . . . . . . . . . . . . . . . . . . . . . . . . . x 2-2-2 ロードバランサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x 2-2-3 iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x 2-2-4 負荷分散方法の比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 第 3 章 検証実験 xiii 3-1 実験方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii 3-2 ストリーミングサーバの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . xv 3-3 www サーバの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi 3-3-1 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi 3-3-2 virtual host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii 3-3-3 snmp(Simple Network Management Protocol) . . . . . . . . . . . . . xix 3-3-4 MRTG(Multi Router Traffic Grapher) . . . . . . . . . . . . . . . . . . xx 3-3-5 iptables の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii 3-3-6 vmstat による情報収集 . . . . . . . . . . . . . . . . . . . . . . . . . . .xxvi 第 4 章 あとがき xxvii 第 5 章 謝辞 xxix 第 6 章 参考文献 xxxi 近畿大学 産業理工学部 電気情報工学科 ii 参考文献 近畿大学 産業理工学部 電気情報工学科 目次 xxxiii 図目次 iii 図目次 3-1 実験方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii 3-2 実験方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv 近畿大学 産業理工学部 電気情報工学科 表目次 iv 表目次 2-1 負荷分散方法の比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 3-1 テーブルとチェインの対応表 . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii 3-2 チェインの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii 3-3 iptables、virtual host、コンテンツサーバの対応表 . . . . . . . . . . . . . . .xxvi 近畿大学 産業理工学部 電気情報工学科 表目次 v pagenumberingarabic 近畿大学 産業理工学部 電気情報工学科 第1章 まえがき まえがき vii 第2章 背景? 2-1 ストリーミング ix 第2章 x 2-2 背景? 負荷分散 主な負荷分散方法として、DNS ラウンドロビン、ロードバランサ、iptables 等があり、実 際に負荷分散を行う際には負荷分散を行う対象、負荷分散に使う機器、分散先のサーバの性 能などを考慮し負荷分散方法を選択する必要があり、本研究では学内で低コストで運用が可 能という点を重視し負荷分散方法を選択します。 2-2-1 DNS ラウンドロビン インターネット上においてドメイン名と IP アドレスを対応づける DNS を用いて負荷分散 を行なう方法です。具体的には一つのドメイン名に対し複数の IP アドレスを割り当てておく ことで、登録したドメインにアクセスがあるたびに登録した IP アドレスを順番に答えるこ とにより 1 台のコンピュータへアクセスが集中するのを防ぎます。 2-2-2 ロードバランサ 外部ネットワークからのアクセスを全て管理し、その下に設置された複数のサーバにアク セスを転送する装置です。ロードバランサは分散先の各サーバが快適な応答速度を保つこと を目的としています。同等の機能を持つ複数のサーバで単純なサービスを運用する分には各 サーバにアクセスを均等に配分する負荷分散装置を用意すれば十分ですが、サーバの能力に ばらつきがある場合や複雑なサービスを運用する場合は、各サーバの反応速度に応じてアクセ スを転送するなどの高度な機能を持つ負荷分散装置であるロードバランサが必要となります。 2-2-3 iptables Linux に実装されたファイアウオール機能で, カーネル 2.4 以降に実装されています。iptables には,あらかじめ用意された filter、nat、mangle と言う 3 つのテーブルが存在し、このテー ブルには機能が異なるチェインが存在し、どのような処理を行うかをルールとして設定しま す。iptables では,コンピュータ間でやり取りされるパケットを各テーブルのチェイン単位に 分類しルールの記述にしたがって検査が行われます。 近畿大学 産業理工学部 電気情報工学科 2-2 負荷分散 2-2-4 xi 負荷分散方法の比較 ここで以上の 3 種類の方法に対し、利点と欠点を表にまとめます。 表 2-1: 負荷分散方法の比較 負荷分散方法 利点 欠点 DNS ラウンドロビン DNS の機能のため安価 分散方法が単調なため 拡張性に乏しい ロードバランサ 理想的に分散 高価 iptables Linux 標準のソフトウェア ソフトウェアのため動作が のため安価 鈍くなる場合がある 学内と学外を繋ぐ回線の帯域が非常に狭いため、効率的な通信を行うために学内に設置さ れたサーバに対して学内外の不特定のクライアントがアクセスした場合に、学内からのアク セスは学内のサーバへ、学外からのアクセスは学外のサーバへとそれぞれアクセスが分散さ れる環境を構築します。その条件を満たすにはクライアントの IP アドレスを参照しそれぞれ のサーバへ転送する必様があり、低コストで実現するために iptables による負荷分散方式を 採用し研究します。 近畿大学 産業理工学部 電気情報工学科 第3章 検証実験 3-1 実験方法 iptables を用いた負荷分散システムとして以下の方法で実現します。 iptables を設定したコンピュータに www サーバを構築し負荷分散サーバとします。そのサー バの下に分散する数の www サーバを分散先サーバとして構築し負荷分散サーバに接続しま す。学内外にそれぞれコンテンツを配信するサーバをコンテンツサーバとし構築しインター ネットに接続します。分散先サーバの HTML ドキュメントに対応するコンテンツサーバから 情報を取得するよう記述します。 このときクライアントが web ブラウザ等で負荷分散サーバにアクセスすると iptables がクラ イアントの IP アドレスを判別し対応した分散先サーバへ転送します。クライアントは分散先 サーバより取得した HTML の記述にしたがい対応したコンテンツサーバから情報を取得し ます。 図 3-1: 実験方法 xiii 第 3 章 検証実験 xiv 以上の方法で負荷分散は実現できますが、使用するコンピュータの台数を抑えるため www サーバの virtual host 機能を用いて分散先サーバの役割を負荷分散サーバに添加します。 また、virtual host により www サーバの数を増やすことが可能なので負荷分散の方法が学内 からのアクセスなのか学外からのアクセスなのかの判別だったのを、それぞれの IP アドレス が奇数なのか偶数なのかという方法を追加して判別を行うこととします。つまりクライアン トは学内奇数 IP アドレス、学内偶数 IP アドレス、学外奇数 IP アドレス、学外偶数 IP アド レスの 4 種類に判別されるよう設定します。 図 3-2: 実験方法 近畿大学 産業理工学部 電気情報工学科 3-2 ストリーミングサーバの構築 3-2 xv ストリーミングサーバの構築 近畿大学 産業理工学部 電気情報工学科 第 3 章 検証実験 xvi 3-3 www サーバの構築 www サーバとは、インターネットサービスサーバの一種で、インターネットなどのネット ワークを通じて World Wide Web ブラウザなどのクライアントソフトウェアからのアクセス を受けると HTTP(Hypertext Transfer Protocol) に則り、要求に応じて HTML によって書か れたドキュメント情報や、それに付随する画像ファイルなどの情報を提供するサービスプロ グラム及び、そのサービスが動作するサーバコンピュータを指します。 3-3-1 Apache Apache はフリーソフトウェアとして配布されている WWW サーバソフトウェアです。長 所として豊富な機能を備えています。また、モジュールを組み込むことにより簡単に機能を 拡張することができます。Apache に新たな機能を組み込みたい場合は、好みのモジュールを 開発し組み込むのですが、ほとんどの場合はすでに多くのモジュールが開発され公開されて いるため、簡単に必要な機能を実装することができます。さらに、動作が軽快で高い安定性 を持ち、ほとんどの OS に対応しているため、商用も含め WWW サーバソフトウェアでは最 大のシェアを誇っています。 apache の設定 WWW サーバソフトウェアである Apache の設定を行います。Apache の基本的な設定は /etc/httpd/conf にある httpd.conf を編集することで行います。 近畿大学 産業理工学部 電気情報工学科 3-3 www サーバの構築 3-3-2 xvii virtual host 1 台の www サーバで複数の Web サイトを運用することを可能とする www サーバソフトの 機能の一つです。小規模なサイトをいくつも運用するような場合に virtual host を利用すれば 複数のコンピュータを用意せずに実現が可能です。また virtual host の実現には NAME ベー スと IP ベースの 2 種類があり、NAME ベースは 1 つの IP アドレスに複数のドメイン名を割 り当てる方法で、IP ベースはホストサーバに複数の IP アドレスを割り振ることにより、1 台 の www サーバで複数の Web サイトを同時に運用することを実現します。 apache における virtual host の設定 一台の www サーバで複数の Web サイトを運用するために virtual host の設定を行います。 iptables により 4 種類に分割される負荷分散システムに組み込むため、グローバル IP アドレ スでアクセスできる負荷分散サーバ用の www サーバと、その下にあるローカル IP アドレス でアクセスできる分散先サーバ用の IP ベースの virtual host を 4 種類設定します。 テキストエディタで virtual host の設定を記述する vhost.conf を作成します。 #vi /etc/httpd/conf/vhost.conf ¡VirtualHost IP アドレス:80¿ ServerAdmin [email protected] DocumentRoot ”/home/httpd/html/vh” ServerName IP アドレス ¡Directory ”/home/httpd/html/vh”¿ Options FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all ¡/Directory¿ ¡/VirtualHost¿ 近畿大学 産業理工学部 電気情報工学科 xviii 第 3 章 検証実験 テキストエディタで Apache の設定ファイルである httpd.conf を開き、vhost.conf を末尾 に組み込みます。 #vi /etc/httpd/conf/httpd.conf Include conf/vhost.conf ← 末尾に追加 virtual host の DocumentRoot となるディレクトリを作成します。ディレクトリは vhost.conf に記述した通に作成します。 #mkdir /home/httpd/html/vh virtual host を追加する場合は vhost.conf の記述の IP アドレスと DocumentRoot、Directory の内様を変更したものを、vhost.conf 内に追加し、その設定にあわせたディレクトリを作成 しネットワークの設定を行えば、その virtual host が使用可能となります。 近畿大学 産業理工学部 電気情報工学科 3-3 www サーバの構築 3-3-3 xix snmp(Simple Network Management Protocol) TCP/IP ネットワークにおいて、ルータやコンピュータ、端末などのネットワークに接続 された通信機器をネットワーク経由で監視・制御するためのプロトコルです。制御の対象と なる機器は MIB と呼ばれる管理情報データベースを持っており、管理を行なう機器は対象機 器の MIB に基づいて適切な設定を行ないます。 snmp の設定 サーバのネットワーク情報を取得するために snmp の設定を行います。 以下は snmp の設定の手順です。 apt コマンドにより net-snmp のインストールを行います。 # apt-get install net-snmp テキストエディターで net-snmp の設定ファイルである snmpd.conf を編集します。 # vi /etc/snmp/snmpd.conf com2sec local localhost private ← 追加 com2sec mynetwork 192.168.11.0/24 public group MyROGroup v1 mynetwork ← 追加 group MyROGroup v2c mynetwork ← 追加 view all included .1 80 access MyROGroup ”” any noauth exact all none none ← 追加 access MyRWGroup ”” any noauth exact all all none ← 追加 disk / 10000 snmpd.conf の編集を行ったら net-snmp を起動します。 # /etc/init.d/snmpd start chkconfig コマンドにより net-snmp を常時起動に設定します。 近畿大学 産業理工学部 電気情報工学科 第 3 章 検証実験 xx # /sbin/chkconfig snmpd on 3-3-4 MRTG(Multi Router Traffic Grapher) コンピュータが送受信したデータの量をグラフによって可視化するプログラムです。グラフ 部分を PNG フォーマット、付帯情報を HTML フォーマットで出力するため、ウェブサーバと 連携して結果を表示することが可能です。SNMP マネージャとして動作し、SNMP エージェ ントであるネットワーク機器やサーバ機からネットワーク・ラフィック情報を取得し、それを INPUT と OUTPUT の 2 系列としてグラフ上にプロットします。高い柔軟性を持ち、データ としてはネットワーク・トラフィックだけでなく、SNMP で取得可能な他の情報(CPU Load Average、Disk 使用率、メモリ空き容量等)や、外部コマンドの実行結果を利用することが できます。 MRTG の導入 サーバの稼働状況を可視化するために MRTG の導入を行います。 以下はの MRTG 設定の手順です。 apt コマンドにより MRTG の導入に必様なパッケージのインストールを行います。 # apt-get install zlib-devel libpng-devel gd-devel MRTG のホームページ (http://www.mrtg.jp/doc/等) からソースファイルをダウンロード してきて展開します。今回は mrtg-2.14.7.tar.gz を使用します。 # tar xvfz mrtg-2.14.7.tar.gz 展開されたディレクトリへ移動し以下の手順でインストールを行います。 # cd mrtg-2.14.7/ # ./configure # make # make install 近畿大学 産業理工学部 電気情報工学科 3-3 www サーバの構築 xxi MRTG の設定ファイル用のディレクトリを作成します。 # mkdir /usr/local/mrtg-2/cfg MRTG の設定ファイルを cfgmaker を用いて作成します。その際、以下のコマンドの IP ア ドレスの部分に監視したいサーバの IP アドレスを指定します。 テキストエディターで先ほど作成した MRTG の設定ファイル mrtg.cfg の編集を行います。 # vi /usr/local/mrtg-2/cfg/mrtg.cfg MRTG のインデックスページや画像ファイルを格納するディレクトリを作成します。それ 等は www サーバのディレクトリ内に作成します。 # mkdir -p /home/httpd/html/mrtg/icons MRTG の起動を行います。MRTG は過去 2 回の起動時のログを使用するため、mrtg.cfg 修 正後の起動を行った際に 2 回目までは必ず WARNING が出るので修正後のみ MRTG の起動 を 3 回行ないます。 # /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg MRTG を web 上で閲覧するためのインデックスページを indexmaker を用いて作成します。 MRTG を 5 分おきに実行するよう cron に登録します。 # crontab -e /5 * * * * /usr/local/mrtg-2/bin/mrtg/usr/local/mrtg-2/cfg/mrtg.cfg cron の設定を反映させるために cron を再起動します。 # /etc/rc.d/init.d/crond restart 近畿大学 産業理工学部 電気情報工学科 第 3 章 検証実験 xxii 3-3-5 iptables の設定 テーブル iptables には filter、nat、mangle と言う 3 種類のテーブルが用意されています。このテー ブルにより使用されるチェインが異なります。 次の表は各テーブルとで使えるチェインをまとめたものです。 表 3-1: テーブルとチェインの対応表 テーブル名 チェイン名 filter INPUT OUTPUT FORWARD nat OUTPUT PREROUTING POSTROUTING mangle OUTPUT PREROUTING 近畿大学 産業理工学部 電気情報工学科 3-3 www サーバの構築 xxiii チェイン 各テーブルで使用できるチェインには INPUT、OUTPUT、FORWARD、PREROUTING、 POSTROUTING があり、それぞれのチェインでは機能や役割が異なります。 次の表はチェインとその説明をまとめたものです。 表 3-2: チェインの説明 チェイン 説明 INPUT 受信したパケットに対するチェイン OUTPUT 送信したパケットに対するチェイン FORWARD 対象サーバを経由するパケットに対するチェイン PREROUTING 受信時にパケットのアドレス変換をするチェイン POSTROUTING 送信時にパケットのアドレス変換をするチェイン ルール コマンド ルールを設定するには iptables コマンドを使用します。iptables [ -t テーブル名 ] コマ ンド [ パラメータ ] テーブル名には、filter、nat、mangle が指定可能です。指定しない場 合は filter が指定されます。コマンドには iptables コマンドが実行する動作を指定します。 近畿大学 産業理工学部 電気情報工学科 xxiv 第 3 章 検証実験 負荷分散を行う iptables のルール 学内外奇数偶数でアクセス先を変更するためのルールを設定します。iptables にはルール の設定を記憶しておく機能が無いため, ルールをシェルスクリプトとして記述しておきます。 そのシェルスクリプトを実行することで iptables にルールを設定します。 近畿大学 産業理工学部 電気情報工学科 3-3 www サーバの構築 xxv #!/bin/bash /etc/rc.d/init.d/iptables stop #初期設定 /sbin/iptables -F /sbin/iptables -t nat -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -P INPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -P OUTPUT ACCEPT #内部偶数 /sbin/iptables -t nat -A PREROUTING -s 157.13.0.0/255.255.0.1 -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.1 #内部奇数 /sbin/iptables -t nat -A PREROUTING -s 157.13.0.1/255.255.0.1 -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.2 #外部偶数 /sbin/iptables -t nat -A PREROUTING -s 0.0.0.0/0.0.0.1 -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.3 #外部奇数 /sbin/iptables -t nat -A PREROUTING -s 0.0.0.1/0.0.0.1 -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.4 #マスカレード /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 157.13.62.0/24 -o eth1 -j MASQUERADE #再起動 /etc/rc.d/init.d/iptables save /etc/rc.d/init.d/iptables restart 以上の設定における負荷分散環境を表にまとめます。 近畿大学 産業理工学部 電気情報工学科 第 3 章 検証実験 xxvi 表 3-3: iptables、virtual host、コンテンツサーバの対応表 アクセス元 IP アドレス virtual host:アクセス先 IP アドレス コンテンツサーバ 学内偶数 IP アドレス vh1:192.168.1.1 学内 学内奇数 IP アドレス vh2:192.168.1.2 学内 学外偶数 IP アドレス vh3:192.168.1.3 学外 学外奇数 IP アドレス vh4:192.168.1.4 学外 3-3-6 vmstat による情報収集 近畿大学 産業理工学部 電気情報工学科 第4章 あとがき xxvii 第5章 謝辞 xxix 第6章 参考文献 xxxi 参考文献 [1] 日下部 茂, 富安 洋史, 村上 和彰, 谷口 秀夫, 雨宮 真人, “並列分散オペレーティングシステ ム CEFOS(Communication-Execution Fusion OS),” 信学技報, Vol.99, No.251, pp.25-32 (1999). [2] カテゴリー 1 並列分散処理アーキテクチャ技術 成果報告書, 並列・分散処理研究推進機 構, 平成 9 年 3 月 %bibitemMUSCAT 鳥居,近藤,本村,西,小長谷,“オンチップ制御並列プロセッサ MUSCAT の提案,” 情報処理学会論文誌,Vol.39, No.6, pp.1622-1631 (1998). xxxiii
© Copyright 2024 Paperzz