2010年9月24日金曜日

OSGi環境におけるgetResourceAsStream

OSGi環境では、あるバンドルに含まれるリソースのURLを取得(getURL)すると、正しくImport/Exportの設定がされていれば
bundle://11.0:1/jp/sample/service/resources/jaxb.index
のようなURLで表現される。
したがって、他のバンドルからリソースにアクセスしようとした場合でも、Import/Exportの設定さえ正しければ取得することができる。

OSGi環境におけるLinkageError

OSGi環境でWebサービスを構築している際、以下のようなエラーメッセージが発生した。
java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "javax/xml/namespace/QName"
JDKで提供されているはずのjavax.xml.namespace.QNameが異なる??
googleで調べてみると、以下のような解説を発見。
http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html
JDKで提供されているようなクラスであっても、ライブラリ?(OSGiの場合はバンドル)ごとに参照先が異なると発生しうる現象のよう。
で、自分の環境をよくよくみてみると、ひとつのバンドルのPrivate-Packageにjavax.xml.namespaceを含んでしまっていることが判明。これをImport-Packageに変更することで解決された。

2010年9月17日金曜日

次期Open vSwitchでSR-IOVサポート予定

メモ。

Citrix社がOpen vSwitchでSR-IOVをサポートへ

現在の最新(1.1.0-pre2)では対応していないようなので、1.2で対応するのだろうか?
手元にIntel 10Gbit NIC 82599ESのチップを搭載したIntel X520-SR1があるので、対応しだい試験できる状態。

2010年9月11日土曜日

Bloglinesサービス終了

老舗RSSリーダのひとつであるBloglinesが10月1日でサービスを終了するらしい。
かなり長いこと愛用していたので大変残念。複数のRSSの記事をひとつのページにして、全ての記事をざざっと斜め読みが簡単にできるのがすごく好きだったのだが。
とりあえずlivedoor Readerに移行。けどBloglinesのような使い方はもちろんできず...時代はtwitterなのかなぁ。

2010年9月8日水曜日

HTML5 on Android (1) jQuery.flickable

Android用のアプリを軽く作りたいと思い、HTML5をUIとして利用してみた。
以下のサイトで紹介しているjQuery.flickableを使うことで、Androidからもflick動作できることを確認。
http://lagoscript.org/jquery/flickable

あと、jQuery.sliderと、Canvas上でのDnDをやりたいのだが、どちらも意図した動きをせず...
# マウスでは動くのだが。
# Canvasも正しく絵は表示されるのだが。

2010年9月5日日曜日

NEC IP8800の設定

初歩的なところで詰まったので、備忘録としてメモ。

1.Telnetの有効化
# line vty 0 2

2.遠隔ログイン時のenable有効化
# username USERNAME view-class allcommands

2010年9月3日金曜日

Open vSwitch 1.1.0pre1をインストール

Open vSwitch 1.1.0pre1が公開されたので、早速XCP環境にインストールしてみる。
インストールの方法は以下のURLを参照した。
http://d.hatena.ne.jp/kirikatan/20100523/1274554697
http://d.hatena.ne.jp/kirikatan/20100523/1274558355
http://d.hatena.ne.jp/kirikatan/20100523/1274631538

一点注意。
XenCloudPlatform DDKにsshでログインすると書かれているが、初回起動時はrootパスワードの初期化が行われるため、Open XenManager等で仮想マシンの画面を出力させ、パスワードを設定する必要あり。
その他は特に問題なくインストール完了。

OpenFlow slicing (QoS)に対応したということなので、QoS処理をあとで実験してみたい。
# ところで、OpenFlow slicing=QoSなのか??

2010年8月14日土曜日

Ubuntu10.04 on Xen Cloud PlatformにXen Toolsをインストール

UbuntuをXCP上にインストールして使ってみると、100Mbps程度しかスループットが出ない!!
おかしいと思ってethtoolを使って調べてみると、インタフェースが100base-Tまでしか利用できないようになっていた。さらに調べてみると、Xen Toolsが入っていないため、PV(para-virtualization)ドライバが入っていないのが原因のよう。そこで、早速以下のURLを参照してXen Toolsをインストール。

http://community.citrix.com/display/ocb/2008/07/02/Installing+Ubuntu+on+XenServer

1.まずゲスト環境(domU)にlinux-image-virtualをインストール

sudo aptitude install linux-image-virtual


2.仮想マシンのIDを調べる。

xe vm-list name-label=Ubuntu params=uuid --minimal


3.仮想マシンに対して、HVMブートフラグの削除と、pygrubを使ってブートするように変更

xe vm-param-set uuid=UUID HVM-boot-policy=
xe vm-param-set uuid=UUID PV-bootloader=pygrub


4.コンソールの設定をする。

xe vm-param-set uuid= PV-args="console=tty0 xencons=tty"


5.仮想ディスクをブート可能に変更する。

xe vm-disk-list uuid=UUID

このコマンドにより、VBDのUUIDを取得する。

xe vbd-param-set uuid=UUID bootable=true

この際、CDドライブ等がすでに存在している場合、複数のVBDがbootableのため起動できないというエラーが出るため、CDドライブのbootableをfalseにする必要がある。

6.仮想マシンを起動し、xen toolsをインストールする。Xen ToolsはOpenXenManagerを使ってCDを認識させ、その中にあるdebファイルからインストールする。

sudo dpkg -i xe-guest-utilities_0.5.0-579_amd64.deb



これにより、仮想マシンから900Mbps以上のスループットが確認された。
ただし、XCP0.1.1ではうまくいかない模様。XCP0.5でのみ確認。

(2011年2月15日追記)
別環境でUbuntu10.04条にXen Toolsをインストールしたところ、上記のままでは起動時にBlank Screenとなってしまい、コンソールから制御ができなかった。
こちらを参考に、consoleの設定を、

xe vm-param-set uuid= PV-args="console=hvc0 xencons=hvc"

とし、/etc/init/hvc0.confを追加したところ正常に動作した。

2010年8月6日金曜日

XCPで仮想スイッチの利用

仮想マシンを異なるネットワークに収容するために、VLAN IDを持つ仮想スイッチを作成した。当初Open vSwtich側を制御するのかと思い、いろいろ格闘したが、どうやらXCPのxeコマンドのみでいけるよう。
1.新しいネットワークを作成
[root@node ~]# xe network-create name-label=c201
e82775df-8bc7-80d8-eed6-0066f9677e75
2.物理インタフェースを確認
[root@node ~]# xe pif-list 
uuid ( RO)                  : 5c59f0b2-4b88-941a-6fc2-b0de21830e97
                device ( RO): eth0
    currently-attached ( RO): true
                  VLAN ( RO): -1
          network-uuid ( RO): 3662ad01-9cdf-a218-60b8-3177d2cce744


uuid ( RO)                  : 23fedbd2-7e1b-3364-229a-4663512fb872
                device ( RO): eth1
    currently-attached ( RO): true
                  VLAN ( RO): -1
          network-uuid ( RO): 731420a2-6242-154e-da85-84839b7ff7fd
3.作成したネットワークを物理インタフェースに結びつけ。
[root@node ~]# xe vlan-create network-uuid=e82775df-8bc7-80d8-eed6-0066f9677e75 pif-uuid=23fedbd2-7e1b-3364-229a-4663512fb872 vlan=201
23ee212c-4c88-d238-9444-1aa164d4fea3
これにより、VLAN201を持つ仮想スイッチができる。
[root@node ~]# xe network-list 
uuid ( RO)                : 1afdece4-2104-dfae-0451-83febed03f76
          name-label ( RW): Guest installer network
    name-description ( RW): Network on which guests will get assigned a private local IP address
              bridge ( RO): xapi0


uuid ( RO)                : 731420a2-6242-154e-da85-84839b7ff7fd
          name-label ( RW): Pool-wide network associated with eth1
    name-description ( RW): 
              bridge ( RO): xenbr1


uuid ( RO)                : e82775df-8bc7-80d8-eed6-0066f9677e75
          name-label ( RW): c201
    name-description ( RW): 
              bridge ( RO): xapi2


uuid ( RO)                : 3662ad01-9cdf-a218-60b8-3177d2cce744
          name-label ( RW): Pool-wide network associated with eth0
    name-description ( RW): 
              bridge ( RO): xenbr0


[root@node ~]# xe pif-list 
uuid ( RO)                  : 5c59f0b2-4b88-941a-6fc2-b0de21830e97
                device ( RO): eth0
    currently-attached ( RO): true
                  VLAN ( RO): -1
          network-uuid ( RO): 3662ad01-9cdf-a218-60b8-3177d2cce744


uuid ( RO)                  : 23ee212c-4c88-d238-9444-1aa164d4fea3
                device ( RO): eth1
    currently-attached ( RO): true
                  VLAN ( RO): 201
          network-uuid ( RO): e82775df-8bc7-80d8-eed6-0066f9677e75


uuid ( RO)                  : 23fedbd2-7e1b-3364-229a-4663512fb872
                device ( RO): eth1
    currently-attached ( RO): true
                  VLAN ( RO): -1
          network-uuid ( RO): 731420a2-6242-154e-da85-84839b7ff7fd
4.次に、作成したネットワークを仮想マシンに搭載する。
[root@node ~]# xe network-list bridge=xapi2 --minimal
e82775df-8bc7-80d8-eed6-0066f9677e75
[root@node ~]# xe vm-list name-label=cloudcom01.1 --minimal
f76c5581-07d6-8df0-9a9d-8a11099f3484
[root@node ~]# xe vif-create network-uuid=e82775df-8bc7-80d8-eed6-0066f9677e75 vm-uuid=f76c5581-07d6-8df0-9a9d-8a11099f3484 device=1
b886b6d6-5838-6ac2-3f54-141d815af396
この時点では、Open vSwitch側は特に変化なし。
[root@node ~]# ovs-vsctl list-br
xenbr0
xenbr1
5.仮想マシンを起動する。
そうすると、Open vSwitch側に作成したネットワーク(xapi2)が出現。
[root@node ~]# ovs-vsctl list-br
xapi2
xenbr0
xenbr1
仮想マシンを起動する前にOpen vSwitch側から確認する方法があるかは不明。

(2010/8/9追記)
仮想マシンに追加されるのは仮想インタフェース(vif)であり、仮想インタフェースは仮想ネットワーク(network)に接続されている。そのため、仮想ネットワークが接続する物理インタフェース、およびVLANを仮想インタフェース作成後に修正することも可能。ただし、うまく疎通できないようなので、ネットワーク側修正後に仮想マシンを再起動する必要がある。

2010年8月3日火曜日

Install OpenXenManager on Ubuntu 10.04

Xen Cloud Platform 0.1.1をインストールしたので、その環境を制御するためにOpenXenManagerもインストールしてみた。
# XCP0.5ではないのは、単に公開前にインストールしてたため。

基本的にはガイドに従ってインストール。
http://sourceforge.net/apps/trac/openxenmanager/wiki/GettingStarted#Ubuntu/Debian

指定されたパッケージをダウンロード
sudo aptitude install subversion python-glade2 python-gtk-vnc
subversionの場所が違ったので、それを以下のとおり修正
svn co https://openxenmanager.svn.sourceforge.net/svnroot/openxenmanager openxenmanager
 無事起動を確認。