2 - 近畿大学

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 xxx@mail.com
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