OSvのご紹介 2014年12月版

ご注意:OSvは絶賛開発中のプロダクトであるため、将来のバージョンではここに書いてある通り動かない場合があります。

OSvとは

OSvは、ハイパーバイザやIaaSプラットフォームへアプリケーションをデプロイすることに特化した軽量OSです。
Linuxで動作するいくつかのアプリケーションが動きますが、Linuxを使わずにフルスクラッチで実装されています。

詳しくはOSCの発表スライドを見て下さい。

提供される機能
  • Linux互換 libc API(一部のLinuxアプリケーションとの互換性)
  • position independentでビルドされたLinux/x86_64バイナリのロード&実行
  • ZFS
  • TCP/IP(IPv4 only)、DHCP
  • SMP
  • シングルプロセス/マルチスレッド
  • REST APIによるプログラマブルな管理機構
  • Luaで実装された簡易シェル
  • 簡易デプロイツール「Capstan」による1コマンドデプロイ&実行
対応アプリ
  • openjdk7, 8(特殊な操作を行う物以外殆どのPure Javaアプリケーションが動作)
  • cruby 2.1.5(テストされた一部のRubyアプリが動作)
  • node.js 0.10.31 (テストされた一部のサンプルプログラムが動作)
    • express
    • socket.io
  • mruby
  • lua
  • mysql
  • memcached
  • haproxy
  • redis
実行環境

OSvの使い方

ここではLinux KVMを対象とし、Linux環境で実行する例を示します。
それ以外の環境についてはWikiを参照して下さい。

Capstanのインストー
curl https://raw.githubusercontent.com/cloudius-systems/capstan/master/scripts/download | bash
prebuiltイメージの実行
capstan run -n 'bridge' cloudius/osv # Lua Shellのみのイメージを実行

capstan run -n 'bridge' cloudius/osv-tomcat # Tomcatのみのイメージを実行

capstan run -n 'bridge' cloudius/osv-cassandra # Cassandraのみのイメージを実行

capstan run -n 'bridge' cloudius/osv-memcached-opt # memcachedのみのイメージを実行

capstan run -n 'bridge' cloudius/osv-redis-memonly # Redisのみのイメージを実行

libvirtによってvirbr0がNAT用に準備されていないとコマンドの実行が失敗します。
この場合はネットワークに繋がったブリッジデバイスを準備して-b br0などとして指定して下さい。

Web UIへのアクセス

OSvインスタンス起動時に、

OSv v0.16
eth0: 192.168.122.163

のように割り当てIPアドレスが表示されます。
WebサーバはこのIPアドレスのポート8000に起動しているので、ブラウザでここへアクセスします。
正常にアクセス出来るとこのようなWebページが表示されます。

REST APIへのアクセス

RESTサーバはWeb UIのサーバと共用になっており、同じIP・ポート番号を使用します。
REST APIのドキュメントは http://:8000/dashboard/swagger/ にアクセスする事で得られます。
このWebページはJavaScriptによりREST APIを実際に実行してみることも可能になっています。

curlを用いてシェル上で試す場合、以下のようになります:

# js.jarをアップロードする
curl -X POST http://192.168.122.89:8000/file/js.jar -Fname=@js.jar

# 次回起動時のcmdlineを変更
curl -X POST -d cmdline="java.so -jar js.jar" http://192.168.122.89:8000/os/cmdline

# OSvインスタンスを再起動
curl -X POST http://192.168.122.89:8000/os/reboot

次回予告

REST APIのより詳しい使い方、CLIの解説、アプリケーションのデプロイ方法などについて解説していきます。