2007年02月23日

パソコン1台ではじめるロードバランサ体験

はてなブックマークに登録

昨日書いたの通り,記事を寄稿したWEB+DB PRESS Vol.37が,今日発売になりました.それを記念して(?),記事の内容が簡単に実験できるパッケージを公開します.
これは,VMWareを使って,だれでも直ぐにロードバランサの実験を始められるパッケージになっています.何台もマシンを集めたり,Linux をインストールする必要は一切ありません.無償配布されているVMWare Playerがあれば,いつでもどこでも実験ができます.

もちろん,このブログで去年の夏に公開した4つのエントリ

の実験もできます.

ダウンロードはこちらからどうぞ(75MB程です).

使い方は,ダウンロードしたパッケージに付属の ReadMe.txt をご覧下さい.また,同じ内容を以下に引用しておきます.

■■ この負荷分散実験パッケージについて ■■
これは,手軽にいつでもどこでも LVS による負荷分散実験ができるパッケージです.DSAS blog で 2006年の8〜9月に掲載された4つの記事(※1)の実験と,WEB+DB PRESS Vol.37(http://www.gihyo.co.jp/magazines/wdpress/archive/Vol37)の特集2の記事の実験ができるようにデザインされています.

※1
・こんなに簡単! Linuxでロードバランサ (1)
 (http://dsas.blog.klab.org/archives/50664843.html)
・こんなに簡単! Linuxでロードバランサ (2)
 (http://dsas.blog.klab.org/archives/50665382.html)
・こんなに簡単! Linuxでロードバランサ (3)
 (http://dsas.blog.klab.org/archives/50675098.html)
・高トラフィックに対応できるLinuxロードバランサを目指して 〜 LVSをNATからDSRへ
 (http://dsas.blog.klab.org/archives/50678999.html)


実験に必要なものは全て,1つの VMWare のディスクイメージに納められています.ですので,VMWare Player がインストールされている環境でしたら,いつでもどこでも LVS を試すことができます.

負荷分散実験をしようと考えた場合,物理的あるいは論理的なマシンが最低3台(LVSを動かす負荷分散機が1台と,負荷分散対象となる Web サーバが2台)必要になります.今回のパッケージでは,LVS マシンは VMWare で動作します.Web サーバは VMWare の中でさらに UML(User Mode Linux) を使って仮想環境を作り,その中で動作します.

これを使えば,単純な LVS による負荷分散実験をするためには,VMWare Playerを一つ起動すればよく,この場合に必要なリソースは約300MBのディスク容量と,256MBのメモリのみです.(VMware Player をインストールするためのディスク容量は,これとは別に必要になります).VRRPを使った LVS の冗長化実験をする場合でも,2つのVMWare Playerを起動すれば実験でき,この場合は約600MB程度のディスクと384MBのメモリが必要になります(理想的には,VRRP実験の場合なら,3つの VMWare Playerを起動した方がわかりやすいかと思います).

実験用の環境にインストールされている OS は Debian です.LVS や VRRP の動作に必要な ipvsadm コマンドや keepalived デーモン,そして LVS 用のカーネルも全て Debian のパッケージを使っています.例外は UML 用のカーネルと(KLab謹製の)補助スクリプト類のみです.UML 用のカーネルは vanila カーネルのソースからコンパイルしており,また補助スクリプト類のライセンスも GPL としますので,今回の配布物は全て再配布可能になっています.


■■ 配布物 ■■
本パッケージに含まれるファイル/ディレクトリ構成は,以下のようになっています.


├lv1/
││
│├─LVS.vmdk
│└─lv1.vmx
│
├lv2/
││
│└─lv2.vmx  
│
├cl01+WebServers/
││
│└─cl01+WebServers.vmx
│
├lv1+WebServers/
││
│└─lv1+WebServers.vmx
│
├lv2+WebServers/
││
│└─lv2+WebServers.vmx
│
├cl01/
││
│└─cl01.vmx
│
└OnlyWebServers/
 │
 └─OnlyWebServers.vmx


各フォルダの名前は,後述する VMWare 起動時の選択メニューの名前と対応しています.フォルダに含まれている各 .vmx ファイルは,起動する OS 環境のコンフィギュレーションに合わせてパラメータを調整しています.しかしながら,VMWare のディスクイメージは各環境に共通になっています."lv1" 以外の環境を起動する場合は,lv1 フォルダにある LVS.vmdk のファイルを,起動したい環境のフォルダにコピーして起動してください.

■■ 起動と終了 ■■

●VMWare
VMWare Player がインストールされてなければ,http://www.vmware.com/ja/products/player/ からダウンロードしてインストールしてください.

○起動できる環境の種類
前述の通り,今回のパッケージで起動できる環境の種類は,次の7種類あります.

(1)  lv1
(2)  lv2
(3) cl01+WebServers
(4)  lv1+WebServers
(5)  lv2+WebServers 
(6) cl01
(7) OnlyWebServers

WebServers と付いている環境(3, 4, 5, 7)では,UML による Web サーバが3台(w100, w101, w102)起動します.LVS 用の環境は1, 2, 4, 5 になります.LVS の負荷分散実験のみ行う場合は lv1 を起動します.keepalived による VRRP の実験を行う場合は,lv1 と lv2 両方を起動する必要があります.cl01 はクライアント用の環境です.

起動したい環境用の .vmx を(lv1\LVS.vmdk をコピーしてから)ダブルクリックすると,VMWare Player が起動します.LVS.vmdk をコピーした後最初に起動する場合,ダイアログが開いて UUID を作り直すか尋ねられますので,"Create" を選択して OK ボタンを押してください.

○Linux の起動の方法
VMWare Player を起動するとまもなくブートローダである GRUB のメニューが表示されます.起動したい環境を上下キーで選択してリターンキーを押せば,Linux が起動します.(VMWare Player の中でキーボード操作をするには,まず VMWare Player の画面をクリックします.VMWare Playerからフォーカスを外すには Ctrl キーと Alt キーを同時に押します.ただし Linux の起動がある程度進むまで,VMWare Player からフォーカスを外さないでください.早い段階で外すと Linux がキーボードを認識できずに,起動後のキー入力ができなくなります.)

○終了の方法と注意点
VMWare Player を終了するには,Linux のコンソール上で /sbin/halt コマンドを実行してください.しばらく待てば Linux が終了し,同時に VMWare Player も終了します.終了後まれにロックファイルが残ってしまって,次回起動できなくなることがあります.その場合,LVS.vmdk と .vmx ファイル *以外* を手で削除して下さい.

●Web サーバ
3, 4, 5, 7 の環境で起動すれば,自動的に UML による Web サーバが3台分起動します.VMWare Player 上で動作する Linux が終了するときには,Web サーバも一緒に終了するので,特段明示的に終了させる必要はありません.

○個別に Webサーバを終了する
個々の Web サーバを終了させたい場合は,普通にログインしてシャットダウンするか,或いは UML の制御用のスクリプトを使って,VMWare Player 上の Linux 環境から終了させる事ができます.

制御スクリプトを使って,例えば w101 を終了させるには

 /etc/init.d/uml_servers stop w101 

とします.w101 を指定しない場合,起動している全ての Web サーバを終了します.

○個別に Web サーバを起動する
終了させた Web サーバを起動するには,同様にスクリプトを使って

 /etc/init.d/uml_servers start w101 

などのようにします.


■■ ログイン ■■

●VMWare 環境へのコンソールログイン
○ユーザとパスワード
VMWare Player で起動した Linux にログインするには,普通のマシンにログインするのと同様,
ロンプロンプトにユーザ名とパスワードを入力してログインします.ログインできるユーザは root のみで,パスワードは設定されていません.ですのでログインプロンプトに root と入力すれば直ぐに使えます.

○仮想端末
Alt キーとファンクションキー(F1 〜 F3)のどれかのキーを同時に押すことで,仮想端末を切り替えることができます.VMWare 環境の Linux 用の仮想端末は F1 〜 F3 上で動作しています.ですので,Alt-F1, Alt-F2, Alt-F3 で表示される3つの仮想端末で,同時に並行してログインすることができます.

●キーボード環境
起動直後は,キーボード環境が英語モードになっています.日本語モードにするには,ログイン直後に

  /root/change_keymap jp

とします.また,Ctrl キーと Caps Lock キーを入れ替えるには

  /root/change_keymap swapCC

とします.

一度実行すれば設定は保存されますので,次回起動時からは実行する必要はありません.


●Web サーバへのログイン
○ユーザとパスワード
VMWare Player の Linux と同様,Web サーバの Linux にログインするにも,root アカウントを使います.パスワードはこちらも設定されていません.

○仮想端末
w100,w101,w102 の仮想端末はそれぞれ,VMWare Player 上の Linux の仮想端末の,F4〜6,F7〜9,F10〜12に割り付けられています.つまり,Alt-F4,Alt-F5,Alt-F6 で w100 のログイン画面に,Alt-F7,Alt-F8,Alt-F9 で w100 のログイン画面に,Alt-F10,Alt-F11,Alt-F12 で w100 のログイン画面に切り替えられます.

●ssh ログイン
ネットワークの設定を整えれば,VMWare を動かしているマシンから実験環境へ ssh を使ってログインできます.但し ssh ログインするために設定を変更した場合,環境によっては今まで使えていたネットワークが使えなくなることがあります(その場合でも,設定を元に戻せば,再び使えるようになるはずです).以下の設定をするときは,この点に留意してから変更してください.

○VMWare Playerを Windows で動かしている場合
Administrator 権限を持つユーザで,次の操作をします.(以下の用語は Windows XP の場合のものです.Windows 2000の場合,少し事情が違うかもしれません.)

1) コントロールパネル → ネットワーク接続 を開きます
2) 「VMware Network Adapter VMnet1」を探して右クリックし,「プロパティ」を選択します
3) 一覧から「インターネットプロトコル(TCP/IP)を選択し,「プロパティ」ボタンをクリックします.
4) 表示されたパネルの一番下にある「詳細設定」ボタンをクリックします.
5) 「IP 設定」タブの「追加」ボタンを押します.
6) 表示されたパネルに,以下の値を入力します
    IPアドレス: 192.168.31.1
 サブネットマスク: 255.255.255.0
7) 開いた各パネルの「OK」ボタンを,パネルを開いたのと逆の順序でクリックしていきます.

以上で,ssh ログインできるようになります.Windows 用の ssh のクライアントは PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/) 等があります.PuTTY の使い方などは前述のサイトなどをご覧下さい.

○VMWare Player を Linux で動かしている場合
root ユーザで,以下のコマンドを実行します

 ifconfig vmnet1:1 192.168.31.1

○ログイン先マシンとアドレス
実験環境用の DNS サービスは動作していませんので,ssh ログインするにはログイン先を IP アドレスで指定する必要があります.マシン名とアドレスの対応は,次のようになっています

  lv1: 192.168.31.11
  lv2: 192.168.31.12
 cl01: 192.168.31.200
  wbs: 192.168.31.201
 w100: 192.168.31.100
 w101: 192.168.31.101
 w102: 192.168.31.102

wbs は,(7)の環境用です.

w100 〜 w102 へのログインは,はじめちょっと時間がかかります.気長に待ってあげてください.


■■ 実験 ■■
●クライアントを選択する
実験を進める前に,まずはクライアント環境にどれを使うかを決めます.選択肢は

a) VMWare Player を動かすマシンをクライアントとして使う
b) クライアント用の VMWare Playerを起動する

の2つがあります.

○クライアント用の VMWare Playerを起動する場合
b) の場合は,負荷分散機用の VMWare Player とは別に,クライアント用の VMWare Player を起動するだけです.

○VMWare Player を動かすマシンをクライアントとして使う場合
a) の場合は,(ssh ログイン用に弄ったのとは別に)ネットワークの設定を変更する必要があります.ただしこの変更すると,場合によっては既存のネットワークの利用に悪影響がでる可能性がありますので,その点ご留意下さい.

変更手順は同じで,次のようにします.

・VMWare Player を Windows で動かしている場合
Administrator 権限を持つユーザで,次の操作をします.(以下の用語は Windows XP の場合のものです.Windows 2000の場合,少し事情が違うかもしれません.)

1) コントロールパネル → ネットワーク接続 を開きます
2) 「VMware Network Adapter VMnet8」を探して右クリックし,「プロパティ」を選択します
3) 一覧から「インターネットプロトコル(TCP/IP)を選択し,「プロパティ」ボタンをクリックします.
4) 表示されたパネルの一番下にある「詳細設定」ボタンをクリックします.
5) 「IP 設定」タブの「追加」ボタンを押します.
6) 表示されたパネルに,以下の値を入力します

    IPアドレス: 10.10.31.200
 サブネットマスク: 255.255.255.0

7) 開いた各パネルの「OK」ボタンを,パネルを開いたのと逆の順序でクリックしていきます.

・VMWare Player を Linux で動かしている場合
root ユーザで,以下のコマンドを実行します

 ifconfig vmnet8:1 10.10.31.200

・WEB+DB PRESS Vol.37 の記事の実験をする場合
WEB+DB PRESS Vol.37 の記事の実験をする場合は,ここで説明した設定以外にデフォルトゲートウェイの設定が必要になります.

クライアントが Windows の場合は,IP アドレスを追加したのと同じパネルにある,デフォルトゲートウェイの追加ボタンから,デフォルトゲートウェイを追加します.

1) 「追加」ボタンを押します
2) 表示されたパネルに,以下の値を入力します

  ゲートウェイ: 記事に指定された値を入力してください(2章と3章で異なります)
   メトリック: 1 (「自動メトリック」のチェックを外すと入力できます)


※デフォルトゲートウェイを変更した場合,インターネットなどの外部のネットワークへアクセスできなくなってしまいます.実験の終了後は,必ずこの設定を削除してください.(Linux の場合,デフォルトゲートウェイを削除するには,上記のコマンドのオプションの add を del に変更して実行してください.)


●起動するべき環境
○LVS 実験の場合
(1) + (3) の2つか,(4) を起動します.

○VRRP 実験の場合
(1) + (2) + (3) の3つか,(1) + (5) の2つを起動します.ネットワークケーブルの挿抜実験をする場合は,(1) + (2) + (3) の3つを起動してください.


●クライアントからのパケットを tcpdump で観察する場合
WEB+DB PRESS Vol.37 の記事では,クライアントマシンのアドレスは 10.10.31.100 になっていますが,本パッケージでは 10.10.31.200 にしています.tcpdump でクライアントからのパケットを観察する場合は,記事で指定されているアドレスを適宜読み替えてください.


●cl01 と web サーバのデフォルトゲートウェイ
VRRP の実験をするときには,デフォルトゲートウェイを変更する必要があります.これには

・cl01 の場合

 route del default gw 10.10.31.11
 route add default gw 10.10.31.10

・Web サーバの場合

 route del default gw 192.168.31.11
 route add default gw 192.168.31.10

とします.


●実験で用いるファイル
幾つか記事の記述と異なっている点がありますので,以下に説明します

○keepalived
ブログの記事では ipvsadm や keepalived を手動でインストールしていましたが,この環境では Debian のパッケージがインストールされています.ですので,幾つかファイルのある場所が異なっています.

 /usr/klab/sbin/keepalived   → /usr/sbin/keepalived
 /usr/klab/etc/keepalived.conf → /etc/keepalived/keepalived.conf

○Webサーバの DocumentRoot
Web サーバには apache がインストールされ,動作しています.DocumentRoot は

 /var/www

になります.幾つかのテスト用の HTML と CGI ファイルが既に用意されています.

○apache の制御
/etc/init.d/apache2 を使って下さい.

○keepalived.conf
/etc/keepalived/blog および /etc/keepalived/Web+DB の下に,記事の中で出てきた設定ファイルが置いてあります.実験時に参考にしてください.

(blog/ の下にある設定ファイルでは,sory server が 192.168.31.100 になっています.これは blog の記事中では 192.168.31.11 になっていましたが,今回の環境では負荷分散机上では apache が動作していないために,変更してあります.)


●ネットワークケーブルの挿抜実験
VRRP の実験で,lv1, lv2 のネットワークケーブルの挿抜実験がありますが,仮想環境では物理的なケーブルはありません.ネットワークケーブルを抜く代わりに,コマンドを使ってインタフェースをダウンさせてしまいます.ダウンさせるには,次のコマンドを実行してください.

 ifdown eth0

※この実験をするときは,lv1,lv2 に ssh でログインするのではなく,VMWare Player のコンソールから直接ログインしてください.

■■ 最後に ■■
●Windows 上で VMWare Player を動かす場合の時間の遅れについて
Windows 上の VMWare Player で今回の環境を動かしていると,時間が次第にずれていきます.解決策は幾つかあるようですが,今回は実験用環境なので,実害は特に無いと考え,対策はとっていません.

●VMWare Player以外の VMWare の製品での実行
おそらく問題なく動作すると思いますが,確認していませんし,確認のしようもありません.

●お約束
このパッケージの使用,この説明書の内容および各記事の内容は一切無保証です.説明に従って操作した結果意図しないことが起きた場合でも,KLab(株)は責任を負いかねます.

それでは,負荷分散環境を心ゆくまでお楽しみ下さいませ(^^


------------------------------------------------------------------------------------
http://www.klab.org/                                         (C)KLab Inc. since 2007
http://dsas.blog.klab.org/
klab_gijutsu2 at 13:25│Comments(0)TrackBack(3)lvs 

トラックバックURL

この記事へのトラックバック

KlabのDSAS開発者さんのパソコン1台ではじめるロードバランサ体験は基本的にDebianをターゲットにされているため、Red Hat Enterprise Linux/CentOSで構築する場合固有の便利な設定方法が書かれていないのでそれを紹介したいと思います。既にDSAS開発者さんの手順で環境を作...
2. WEB+DB PRESS Vol.37  [ blog.holidayworking.net ]   2007年03月02日 13:37
「Linuxロードバランサ構築・運用ノウハウ」を読みたかったので買った...
3. VMware Server 参考サイト  [ juyama.net ]   2007年05月30日 14:42
自宅のサーバ(DELL SC430)上ではVMwareServerを使ったVM(...

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント