[[Sheepdog/概要]]

*sheepdogの利用方法 [#hb1c06d9]

** corosyncの設定 [#e8e5b726]
sheepdogの設定に入る前にcorosyncの設定を行います.~
corosyncはクラスタ環境を構築するために利用するIPアドレスを指定する設定が必要です.
/etc/corosync内にcorosync.conf.sampleがあるので,同じディレクトリにcorosync.confをいう名前でコピーします.
 $ cd /etc/corosync
 $ sudo cp corosync.conf.example corosync.conf
次にcorosync.confを編集します.
ここではIPアドレス192.50.109.182をクラスタ環境の構築に利用します.

 # Please read the corosync.conf.5 manual page
 compatibility: whitetank
 
 totem {
     version: 2
     secauth: off
     threads: 0
     interface {
         ringnumber: 0
         bindnetaddr: 192.50.109.182 # クラスタ環境の構築に利用するIPアドレス
         mcastaddr: 226.94.1.1
         mcastport: 5405
     }
 }
 
 logging {
     fileline: off
     to_stderr: yes
     to_logfile: yes
     to_syslog: yes
     logfile: /tmp/corosync.log
     debug: off
     timestamp: on
     logger_subsys {
         subsys: AMF
         debug: off
     }
 }
 
 amf {
     mode: disabled
 }

** sheepdogの設定 [#a691dda8]
sheepdogの利用にはcorosyncとqemu-kvmを使用します.
各ソフトウェアのインストール方法は[[こちら>Sheepdog/インストール方法]]を参考にしてください.

まずクラスタ環境に使用するディスクスペースの設定を行います.~
ここでは,クラスタ環境に提供するディスクをstore_device,store_deviceをマウントしているディレクトリをstore_dirとしています.~
store_dirとして提供するディレクトリはxattrをサポートしている必要があります.~
そのため,マウントオプションでxattrを有効にしておきます.~
例として,ext3でのオプションの指定方法を書いておきます.
 $ sudo mount -o remount,user_xattr /store_device

次に,マウントしているディレクトリをクラスタ環境に提供します.
--(注)sheepdogはcollieという名前のプログラムで起動しますが,collieで指定するstore_dirには何も入っていないことを先に確認してください.

 $ sudo sheep /store_dir
デフォルトではTCPの7000番ポートが使用されます.ポート番号を変更したい場合は,
 $ sudo sheep --port 7000 /store_dir
でポート番号の変更が可能です.
また-dオプションをつけるとデバックメッセージの表示が可能です.
 $ sudo sheep --port 7000 /store_dir -d
最新のsheepdogでは、sheep /store_dirで-dのオプションまでつきます.~
sheepdogのディレクトリに起動スクリプトも用意されています.
 $ cd sheepdog
 $ sudo sudo script/start-sheepdog
なお,sheepdog起動時に現在動作しているsheepdogを停止させるスクリプトも同時に動作するため,start-sheepdogの起動はscriptディレクトリの指定から行う必要があります.
また,start-sheepdogで起動した場合,/tmp以下にXX.XXXXXX(Xには数字が入ります.)という名前のディレクトリが作成され,そのディレクトリがstore_dirとなります.

start-sheepdogが起動すると各ノードは自律的にクラスタ環境を構築します.
どのノードがクラスタ環境を構築しているかは以下のコマンドで確認できます.
 $ collie node list

ここでは8台でクラスタ環境を構築したとします.
この際に,collie node listでは,以下のような表示がでるはずです.(IPアドレス,Node idは各環境によって異なります.)

 $ collie node list
    Idx	Node id (FNV-1a) - Host:Port
 ------------------------------------------------
 * 0	3751ad4d1b9d6dcb - 192.50.109.182:7000
   1	492815213580505c - 192.50.109.185:7000
   2	d0c7ee6eee054e72 - 192.50.109.187:7000
   3	d208d1cfb8fb0451 - 192.50.109.184:7000
   4	dfefba81b1c87f1f - 192.50.109.186:7000
   5	e48b7ede454ea360 - 192.50.109.189:7000
   6	eb7f884fecfa4f35 - 192.50.109.188:7000
   7	ed01cd77b045713e - 192.50.109.183:7000


ファイルシステムの構築を行います.~
copiesは冗長構成を行う数を指定します.~
ここでは,3台のマシンにデータを複製するように指定しています.
 $ collie cluster format --copies=3

** VMイメージの作成 [#xc3e4f17]
sheepdogで利用するVMイメージはqemu-imgを用いて作成します.
インストールのページでgitを用いてダウンロードしたqemu-kvmをインストールしていれば,VMイメージのフォーマットにsheepdogが追加されているはずです.
 $ qemu-img create -f sheepdog Alice 40G

VMイメージが正しく作成されたかは,以下のコマンドで確認できます.
 $ collie vdi list
   name        id    size    used  shared    creation time  object id
 --------------------------------------------------------------------
   Alice        1   40 GB  0.0 MB  0.0 MB 2010-05-02 13:16  8015d16700000000

- エラーが出る場合には,以下の点を見直してみてください.
--collie で指定するディレクトリはユーザ拡張属性が利用可能か.(ext3 であれば, マウントオプションに user_xattr がついているか
-- sheepで指定するディレクトリが空の状態で起動しているか
-- collie cluster format を実行したか

また,既に作成した他のフォーマットのVMイメージからsheepdog用のVMイメージに変換することもできます.
 $ qemu-img convert -f raw -O sheepdog ~/amd64.raw Bob

** VMの起動 [#jdabb5c8]
仮想マシンの起動は以下のコマンドで行います.
 $ qemu-system-x86_64 --drive format=sheepdog,file=Alice

CDドライブから起動する場合には、-cdromのオプションでisoイメージを指定し,-bootオプションでdを指定します.
$ qemu-system-x86_64 --drive format=sheepdog,file=Alice -cdrom <iso_file> -bood d
 $ qemu-system-x86_64 --drive format=sheepdog,file=Alice -cdrom <iso_file> -bood d

VMの情報はcollie vm listで表示することができます.~
 $ collie vm list
 Name            |Vdi size |Allocated| Shared  | Status
 ----------------+---------+---------+---------+------------
 Alice           |    40 GB|   0.0 MB|   0.0 MB| not running

qemu-system-x86_64でVMを起動すると,VNCがlocalhostの5900番ポートで待ち受けます.~
画面を表示するにはサーバ上でVNC Viewerを使用するか,SSHのX11 forwardingなどを使用して,VNCの画面をリモート上で表示します.~
今回の例だと,192.50.109.182のサーバ上でVMを起動したので,192.50.109.182のサーバにSSHのX11forwardingを有効にしてログインした後,vncviewerを起動します.
 $ ssh 192.50.109.182 -X
 サーバにloginします.
 $ vncviewer localhost:5900
vncviewerが起動すると,PC上に画面が表示されるはずです.

#ref(qemu-vnc.png)

また,先程表示したVMの情報も起動しているノードのIPアドレスが表示されます.
 $ collie vm list
 Name            |Vdi size |Allocated| Shared  | Status
 ----------------+---------+---------+---------+------------
 Alice           |    40 GB|   0.0 MB|   0.0 MB| running on 192.50.109.182


以下に自動自動のためのスクリプトを書いておきます.
debianですと,/etc/rc.localに記述すると良いと思います.
2010年5月3日にこのスクリプトでsheepdogがOS起動時に自動的に起動することを確認しています.(store_dirは適宜書き換えてください)
 /usr/sbin/corosync
 /bin/rm -rf /store_dir/*
 /usr/sbin/sheep /store_dir

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS