Weitere ähnliche Inhalte
Ähnlich wie XS Japan 2008 Xen Mgmt Japanese (20)
Mehr von The Linux Foundation (20)
Kürzlich hochgeladen (20)
XS Japan 2008 Xen Mgmt Japanese
- 1. 軽量言語( JRuby )による Xen 管理 API の応
用
2008年11月20日
井澤 信悦(いさわしんえつ)
伊藤忠テクノソリューションズ株式会社( CTC)
IT エンジニアリング室 プラットフォーム推進部
- 2. XenAPI 1.0 概要
• データモデルを標準化
分散永続オブジェクトを操作
• 標準 XML-RPC
リモート API コール用標準ワイヤープロトコル
バインディングで言語非依存
HTTP/S で通信 , ステイトフルなセッションベース
• レガシーインターフェイスは非推奨
xend-http-server(8000), xend-tcp-xmlrpc-server(8006)
• 長期安定
xen-api-server(9363) 新規推奨: Xen-API インターフェ
イス
Xen 3.1.0 で公式にリリース
- 3. Xen サーバー と その管理
分散処理 と 集中管理
マ
商用管理
ネ
システム(ツール)
ー
ジ
ャ
ー
virt-
商用
manager
xm エージェ Ruby/JRuby
ント
libvirt
programming
Java
pyxen libxen(C/C++) RubyGem
library package
Tool
↑ XML-RPC(sockets) ↓ Xen
C#
Python
9363
xen d
C/C++
Ruby
Apache
/dev/xen/*
Other
xml-rpc
xmlrpc-client.jar
Kernel(Dom0)
↑ Hyper Call ↓ http(s) クライアントモジュー
ル
Xen ハイパーバイザー
- 5. クラスメソッド例
• ゲッターとセッター
プロパティ
uuid,label,state,other_config(stringMap type), など
reference to related objects( 例 : metrics)
MAC,MTU,qos,device_config,status_code
• VM (ゲスト OS )
start,(un)pause,(hard/clean)_shutdown,
(hard/clean)_reboot,suspend,resume,clone,etc…
• メトリックス
memory/total/actual/free,VCPUs/number,last_updated,etc…
• その他
create,destory,plug,unplug,get_all,location
- 6. プログラミング
• 参照 と UUID
参照 : XML-RPC 上のエンコードされた文字列 ( オペーク )
サーバーが生成し , サーバーだけが理解 ( セッション上のみで有効 )
UUID : 永続的なオブジェクト ID 名 (OSF DCD フォーマット )
相互変換メソッド : get_by_uuid, get_uuid
• XML-RPC ライブラリ
session.login_with_password(string uname, string pwd)
入力パラメータを用意し , 実行して、結果を得る
結果は HashMap のような複雑なデーター構造の場合がある
値を取り出すには、特別に操作が必要な場合が多い
• High-level Class Library
ホストオブジェクトの生成 (xen ホストへログイン ) してハンドルを
得る
目的オブジェクトへの参照を得て、そのメソッドを呼び出す
( プロパティから得たり , 新規に作成したり , 名前、 UUID などで検
索する )
- 7. 設定準備
• Xen サーバー側での構成
ポート , インターフェイス , 及び アクセス制御 の構成
/etc/xen/xend-config.sxp
(xen-api-server ((0.0.0.0:9363)))
そして xend を再起動
• 管理する側でのセットアップ
JDK セットアップ (1.5 以降 )
JRuby ダウンロード http://dist.codehaus.org/jruby/
tar zxf jruby-bin-1.1.3.tar.gz -C /usr
PATH 追加 (usr/jruby-1.1.3/bin)
jruby –S gem install xen
- 8. サンプルプログラム
require quot;rubygemsquot;
gem 'xen'
require 'xen‘
xh = Xen::Host.new('192.168.11.3', 9363)
xh.vms.each do |vm|
puts quot;VM UUID: quot; + vm.uuid + quot; Name-label: quot; + vm.name unless vm.is_dom0?
end
puts quot;Enter Guest OS name for rebootquot;
vmin = gets.chomp
xh.find_vm(vmin).clean_reboot!
エラーハンドリングは簡素化するために省きました
参照 : lib/ruby/gems/1.8/gems/xen-0.1.2.1/README
- 9. “xm create” コマンド と API
RubyGem パッケージを編集
lib/ruby/gems/1.8/gems/xen-0.1.2.1/lib/xen/vm.rb
:actions_after_shutdown => 'destroy'
kernel = quot;/boot/vmlinuz-2.6.18-xenquot;
:PV_kernel => '/boot/vmlinuz-2.6.18-xen'
:PV_args => 'root=/dev/sda1 ro 3' memory = 128
name = quot;ttyquot;
Ruby プログラムを作成
vif = [ '' ]
require quot;rubygemsquot;
dhcp = quot;dhcpquot;
gem 'xen'
disk = ['file:/xen/tty/rootfs,sda1,w']
require 'xen'
root = quot;/dev/sda1 roquot;
h = Xen::Host.new('192.168.11.3', 9363 )
network =Xen::Network.find_by_name quot;eth0quot;, h
vm = h.create_vm “ttyquot;, 128*1024*1024
vdi_sda1 = h.create_vdi quot;vdi1quot;, quot;file:/xen/tty/rootfsquot;
vbd1 = h.create_vbd quot;sda1quot;, vm, vdi_sda1
vif = h.create_vif vm, network, quot;00:30:48:88:81:07quot;
vm.start!
- 10. 参考情報
• Xen 管理 API プロジェクト
http://wiki.xensource.com/xenwiki/XenApi
• Xen サミット 2007 年4月
http://www.xen.org/files/xensummit_4/XenSummit_API_Slides_2007-04-
18_Ewan.pdf
• 英文マニュアル
http://wiki.xensource.com/xenwiki/XenApi?
action=AttachFile&do=get&target=xenapi-1.0.6.pdf
• 日本語マニュアル
http://gisawa.googlepages.com/XenAPIJ.pdf