<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Creationline</title>
	<atom:link href="http://www.creationline.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.creationline.com</link>
	<description>Creatinline</description>
	<lastBuildDate>Sat, 11 Feb 2012 02:50:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Cloud Foundryを使ってみよう[5]</title>
		<link>http://www.creationline.com/lab/1635</link>
		<comments>http://www.creationline.com/lab/1635#comments</comments>
		<pubDate>Thu, 09 Feb 2012 08:30:54 +0000</pubDate>
		<dc:creator>higuchi</dc:creator>
				<category><![CDATA[CL Lab]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1635</guid>
		<description><![CDATA[node.jsとRabbitMQの連携 RabbitMQは、Advanced Message Queuing Protocolを使用する、メッセージ指向のミドルウェアです。 本項では、Using RabbitMQ with Node.jsを参考に、RabbitMQに接続するnode.jsで作成されたアプリケーションを、Cloud Foundry上にデプロイします。 RabbitMQのインストール RabbitMQサーバをローカルにインストールします。 root@debian:~# aptitude install rabbitmq-server : Setting up erlang-base (1:14.a-dfsg-3) ... Searching for services which depend on erlang and should be started...none found. Setting up erlang-syntax-tools (1:14.a-dfsg-3) ... Setting up erlang-asn1 (1:14.a-dfsg-3) ... Setting up erlang-mnesia (1:14.a-dfsg-3) ... Setting up erlang-runtime-tools (1:14.a-dfsg-3) ... Setting [...]]]></description>
			<content:encoded><![CDATA[<h2>node.jsとRabbitMQの連携</h2>
<p><a href="http://www.rabbitmq.com/">RabbitMQ</a>は、<a href="http://www.amqp.org/">Advanced Message Queuing Protocol</a>を使用する、メッセージ指向のミドルウェアです。</p>
<p>本項では、<a href="http://start.cloudfoundry.com/services/rabbitmq/nodejs-rabbitmq.html">Using RabbitMQ with Node.js</a>を参考に、RabbitMQに接続するnode.jsで作成されたアプリケーションを、Cloud Foundry上にデプロイします。</p>
<h3>RabbitMQのインストール</h3>
<p>RabbitMQサーバをローカルにインストールします。</p>
<pre>root@debian:~# aptitude install rabbitmq-server
	:
Setting up erlang-base (1:14.a-dfsg-3) ...
Searching for services which depend on erlang and should be started...none found.
Setting up erlang-syntax-tools (1:14.a-dfsg-3) ...
Setting up erlang-asn1 (1:14.a-dfsg-3) ...
Setting up erlang-mnesia (1:14.a-dfsg-3) ...
Setting up erlang-runtime-tools (1:14.a-dfsg-3) ...
Setting up erlang-crypto (1:14.a-dfsg-3) ...
Setting up erlang-public-key (1:14.a-dfsg-3) ...
Setting up erlang-ssl (1:14.a-dfsg-3) ...
Setting up erlang-inets (1:14.a-dfsg-3) ...
Setting up erlang-corba (1:14.a-dfsg-3) ...
Setting up erlang-xmerl (1:14.a-dfsg-3) ...
Setting up erlang-edoc (1:14.a-dfsg-3) ...
Setting up erlang-docbuilder (1:14.a-dfsg-3) ...
Setting up erlang-erl-docgen (1:14.a-dfsg-3) ...
Setting up erlang-eunit (1:14.a-dfsg-3) ...
Setting up erlang-ic (1:14.a-dfsg-3) ...
Setting up erlang-inviso (1:14.a-dfsg-3) ...
Setting up libltdl7 (2.2.6b-2) ...
Setting up erlang-snmp (1:14.a-dfsg-3) ...
Setting up erlang-os-mon (1:14.a-dfsg-3) ...
Setting up erlang-parsetools (1:14.a-dfsg-3) ...
Setting up erlang-percept (1:14.a-dfsg-3) ...
Setting up erlang-ssh (1:14.a-dfsg-3) ...
Setting up erlang-webtool (1:14.a-dfsg-3) ...
Setting up erlang-tools (1:14.a-dfsg-3) ...
Setting up libsctp1 (1.0.11+dfsg-1) ...
Setting up lksctp-tools (1.0.11+dfsg-1) ...
Setting up odbcinst (2.2.14p2-1) ...
Setting up odbcinst1debian2 (2.2.14p2-1) ...
Setting up unixodbc (2.2.14p2-1) ...
Setting up erlang-odbc (1:14.a-dfsg-3) ...
Setting up erlang-nox (1:14.a-dfsg-3) ...
Setting up rabbitmq-server (2.6.1-1) ...
Adding group `rabbitmq' (GID 105) ...
Done.
Adding system user `rabbitmq' (UID 103) ...
Adding new user `rabbitmq' (UID 103) with group `rabbitmq' ...
Not creating home directory `/var/lib/rabbitmq'.
Starting rabbitmq-server: SUCCESS
rabbitmq-server.

root@debian:~#</pre>
<h3>RabbitMQを利用するnode.jsのサンプルアプリケーションの作成</h3>
<p>サンプルアプリケーションのディレクトリを作成します。</p>
<pre>cf@debian:~$ mkdir rabbitmq-node
cf@debian:~$ cd rabbitmq-node
cf@debian:~/rabbitmq-node$</pre>
<p>node.jsパッケージをインストールするための、依存関係を記述したファイルを作成します。</p>
<pre>cf@debian:~/rabbitmq-node$ cat &gt; package.json
{
    "name":"node-amqp-demo",
    "version":"0.0.1",
    "dependencies": {
        "amqp":"&gt;= 0.1.0",
        "sanitizer": "*"
    }
}
cf@debian:~/rabbitmq-node$</pre>
<p>npmコマンドでインストールを行います。</p>
<pre>cf@debian:~/rabbitmq-node$ npm install
npm WARN publish-everything amqp@0.1.1 Adding entire directory to tarball. Please add a
npm WARN publish-everything amqp@0.1.1 .npmignore or specify a 'files' array in the package.json
npm ok
cf@debian:~/rabbitmq-node$</pre>
<p>サンプルアプリケーションを作成します。</p>
<pre>cf@debian:~/rabbitmq-node$ cat &gt; app.js
var http = require('http');
var amqp = require('amqp');
var URL = require('url');
var htmlEscape = require('sanitizer').escape;

function rabbitUrl() {
  if (process.env.VCAP_SERVICES) {
    conf = JSON.parse(process.env.VCAP_SERVICES);
    return conf['rabbitmq-2.4'][0].credentials.url;
  }
  else {
    return "amqp://localhost";
  }
}

var port = process.env.VCAP_APP_PORT || 3000;

var messages = [];

function setup() {

  var exchange = conn.exchange('cf-demo', {'type': 'fanout', durable: false}, function() {

    var queue = conn.queue('', {durable: false, exclusive: true},
    function() {
      queue.subscribe(function(msg) {
        messages.push(htmlEscape(msg.body));
        if (messages.length &gt; 10) {
          messages.shift();
        }
      });
      queue.bind(exchange.name, '');
    });
    queue.on('queueBindOk', function() { httpServer(exchange); });
  });
}

function httpServer(exchange) {
  var serv = http.createServer(function(req, res) {
    var url = URL.parse(req.url);
    if (req.method == 'GET' &amp;&amp; url.pathname == '/env') {
      printEnv(res);
    }
    else if (req.method == 'GET' &amp;&amp; url.pathname == '/') {
      res.statusCode = 200;
      openHtml(res);
      writeForm(res);
      writeMessages(res);
      closeHtml(res);
    }
    else if (req.method == 'POST' &amp;&amp; url.pathname == '/') {
      chunks = '';
      req.on('data', function(chunk) { chunks += chunk; });
      req.on('end', function() {
        msg = unescapeFormData(chunks.split('=')[1]);
        exchange.publish('', {body: msg});
        res.statusCode = 303;
        res.setHeader('Location', '/');
        res.end();
      });
    }
    else {
      res.statusCode = 404;
      res.end("This is not the page you were looking for.");
    }
  });
  serv.listen(port);
}

console.log("Starting ... AMQP URL: " + rabbitUrl());
var conn = amqp.createConnection({url: rabbitUrl()});
conn.on('ready', setup);

// ---- helpers

function openHtml(res) {
  res.write("&lt;html&gt;&lt;head&gt;&lt;title&gt;Node.js / RabbitMQ demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;");
}

function closeHtml(res) {
  res.end("&lt;/body&gt;&lt;/html&gt;");
}

function writeMessages(res) {
  res.write('&lt;h2&gt;Messages&lt;/h2&gt;');
  res.write('&lt;ol&gt;');
  for (i in messages) {
    res.write('&lt;li&gt;' + messages[i] + '&lt;/li&gt;');
  }
  res.write('&lt;/ol&gt;');
}

function writeForm(res) {
  res.write('&lt;form method="post"&gt;');
  res.write('&lt;input name="data"/&gt;&lt;input type="submit"/&gt;');
  res.write('&lt;/form&gt;');
}

function printEnv(res) {
  res.statusCode = 200;
  openHtml(res);
  for (entry in process.env) {
    res.write(entry + "=" + process.env[entry] + "&lt;br/&gt;");
  }
  closeHtml(res);
}

function unescapeFormData(msg) {
  return unescape(msg.replace('+', ' '));
}
cf@debian:~/rabbitmq-node$</pre>
<p>サンプルアプリケーションをローカルで実行します。</p>
<pre>cf@debian:~/rabbitmq-node$ node app.js
Starting ... AMQP URL: amqp://localhost</pre>
<p>別シェルからwgetコマンドで接続します。</p>
<pre>cf@debian:~$ wget -q -O - http://localhost:3000/
&lt;html&gt;&lt;head&gt;&lt;title&gt;Node.js / RabbitMQ demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;form method="post"&gt;&lt;input name="data"/&gt;&lt;input type="submit"/&gt;&lt;/form&gt;&lt;h2&gt;Messages&lt;/h2&gt;&lt;ol&gt;&lt;/ol&gt;&lt;/body&gt;&lt;/html&gt;cf@debian:~$</pre>
<p>次に、データをPOSTしてみます。</p>
<pre>cf@debian:~$ wget -q --post-data="data=TEST" -O - http://localhost:3000/
&lt;html&gt;&lt;head&gt;&lt;title&gt;Node.js / RabbitMQ demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;form method="post"&gt;&lt;input name="data"/&gt;&lt;input type="submit"/&gt;&lt;/form&gt;&lt;h2&gt;Messages&lt;/h2&gt;&lt;ol&gt;&lt;/ol&gt;&lt;/body&gt;&lt;/html&gt;cf@debian:~$</pre>
<p>POSTしたデータが表示されることを確認します。</p>
<pre>cf@debian:~$ wget -q -O - http://localhost:3000/
&lt;html&gt;&lt;head&gt;&lt;title&gt;Node.js / RabbitMQ demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;form method="post"&gt;&lt;input name="data"/&gt;&lt;input type="submit"/&gt;&lt;/form&gt;&lt;h2&gt;Messages&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;TEST&lt;/li&gt;&lt;/ol&gt;&lt;/body&gt;&lt;/html&gt;cf@debian:~$</pre>
<p>以上のように動作が確認できたら、Cloud Foundry上にサンプルアプリケーションをデプロイします。この際、RabbitMQと関連付けを行っておきます。</p>
<pre>cf@debian:~/rabbitmq-node$ vmc push
Would you like to deploy from the current directory? [Yn]: <strong>y</strong>
Application Name: <strong>rabbitmq-node</strong>
Application Deployed URL [rabbitmq-node.cloudfoundry.com]: <strong>rabbitmq-node-creationline.cloudfoundry.com</strong>
Detected a Node.js Application, is this correct? [Yn]: <strong>y</strong>
Memory Reservation (64M, 128M, 256M, 512M, 1G, 2G) [64M]:
Creating Application: OK
Would you like to bind any services to 'rabbitmq-node'? [yN]: <strong>y</strong>
The following system services are available
1: mongodb
2: mysql
3: postgresql
4: rabbitmq
5: redis
Please select one you wish to provision: <strong>4</strong>
Specify the name of the service [rabbitmq-ec036]:
Creating Service: OK
Binding Service [rabbitmq-ec036]: OK
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (1K): OK
Push Status: OK
Staging Application: OK
Starting Application: .......Error:
Application 'rabbitmq-node's state is undetermined, not enough information available.

cf@debian:~/rabbitmq-node$</pre>
<p>アプリケーションの起動に失敗したので、ログの確認を行います。</p>
<pre>cf@debian:~/rabbitmq-node$ vmc crashlogs rabbitmq-node
====&gt; logs/stderr.log &lt;====

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'amqp'
    at Function._resolveFilename (module.js:326:11)
    at Function._load (module.js:271:25)
    at require (module.js:355:19)
    at Object.&lt;anonymous&gt; (/var/vcap/data/dea/apps/rabbitmq-node-0-f77585e3130e2d0644c1004455eaf707/app/app.js:2:12)
    at Module._compile (module.js:411:26)
    at Object..js (module.js:417:10)
    at Module.load (module.js:343:31)
    at Function._load (module.js:302:12)
    at Array.&lt;anonymous&gt; (module.js:430:10)
    at EventEmitter._tickCallback (node.js:126:26)

cf@debian:~/rabbitmq-node$</pre>
<p>node.jsとMongoDBを連携させたときと同じく、RabbitMQ用のnode.jsモジュールをアプリケーションと一緒にデプロイしなければいけないようです。</p>
<p>サンプルアプリケーションのディレクトリに、モジュールを格納するためのnode_modulesディレクトリを作成し、そこに必要なモジュールをコピーします。</p>
<pre>cf@debian:~/rabbitmq-node$ mkdir node_modules
cf@debian:~/rabbitmq-node$ cp -a ../.node_libraries/.npm/amqp/active/package node_modules/amqp
cf@debian:~/rabbitmq-node$ cp -a ../.node_libraries/.npm/sanitizer/active/package node_modules/sanitizer
cf@debian:~/rabbitmq-node$</pre>
<p>サンプルアプリケーションを更新し、必要なモジュールをCloud Foundry上に転送します。</p>
<pre>cf@debian:~/rabbitmq-node$ vmc update rabbitmq-node
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (1K): OK
Push Status: OK
Stopping Application: OK
Staging Application: OK
Starting Application: OK                                                        

cf@debian:~/rabbitmq-node$</pre>
<p>Webブラウザで http://rabbitmq-node-creationline.cloudfoundry.com/ にアクセスします。</p>
<pre>[          ] [送信]

Messages</pre>
<p>以上のようなフォームが表示されれば動作しています。例えば「TEST」とフォームに入力して「送信」ボタンを押すと、</p>
<pre>[          ] [送信]

Messages

  1. TEST</pre>
<p>となります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/lab/1635/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Foundryを使ってみよう[4]</title>
		<link>http://www.creationline.com/%e6%9c%aa%e5%88%86%e9%a1%9e/1631</link>
		<comments>http://www.creationline.com/%e6%9c%aa%e5%88%86%e9%a1%9e/1631#comments</comments>
		<pubDate>Thu, 09 Feb 2012 08:30:28 +0000</pubDate>
		<dc:creator>higuchi</dc:creator>
				<category><![CDATA[CL Lab]]></category>
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1631</guid>
		<description><![CDATA[node.jsとMongoDBの連携 node.jsは、「サーバサイドJavaScript」と形容されることが多いですが、スケーラブルなネットワークアプリケーションのためのJavaScriptで作成されたプラットフォームです。イベント駆動の非同期I/Oモデルを用いています。 MongoDBは、NoSQL (Not only SQL)の一種で、ドキュメント指向のデータベースです。BSON (Binary JSON)といJSON (JavaScript Object Notation) をバイナリ化したしたような形式でドキュメントを表現しています。 本項では、Using MongoDB with Node.jsを参考に、MongoDBに接続するnode.jsで作成されたアプリケーションを、Cloud Foundry上にデプロイします。 MongoDBとnode.jsのインストール MongoDB クライアントとサーバをローカルにインストールします。 root@debian:~# aptitude install mongodb : Setting up libpcre3 (8.02-1.1) ... Setting up libboost-system1.42.0 (1.42.0-4) ... Setting up libboost-filesystem1.42.0 (1.42.0-4) ... Setting up libboost-program-options1.42.0 (1.42.0-4) ... Setting up libboost-thread1.42.0 (1.42.0-4) ... Setting up libnspr4-0d (4.8.6-1) ... [...]]]></description>
			<content:encoded><![CDATA[<h2>node.jsとMongoDBの連携</h2>
<p><a href="http://nodejs.org/">node.js</a>は、「サーバサイドJavaScript」と形容されることが多いですが、スケーラブルなネットワークアプリケーションのためのJavaScriptで作成されたプラットフォームです。イベント駆動の非同期I/Oモデルを用いています。</p>
<p><a href="http://www.mongodb.org/">MongoDB</a>は、NoSQL (Not only SQL)の一種で、ドキュメント指向のデータベースです。<a href="http://bsonspec.org/">BSON</a> (Binary JSON)といJSON (JavaScript Object Notation) をバイナリ化したしたような形式でドキュメントを表現しています。</p>
<p>本項では、<a href="http://start.cloudfoundry.com/services/mongodb/nodejs-mongodb.html">Using MongoDB with Node.js</a>を参考に、MongoDBに接続するnode.jsで作成されたアプリケーションを、Cloud Foundry上にデプロイします。</p>
<h3>MongoDBとnode.jsのインストール</h3>
<p>MongoDB クライアントとサーバをローカルにインストールします。</p>
<pre>root@debian:~# aptitude install mongodb
	:
Setting up libpcre3 (8.02-1.1) ...
Setting up libboost-system1.42.0 (1.42.0-4) ...
Setting up libboost-filesystem1.42.0 (1.42.0-4) ...
Setting up libboost-program-options1.42.0 (1.42.0-4) ...
Setting up libboost-thread1.42.0 (1.42.0-4) ...
Setting up libnspr4-0d (4.8.6-1) ...
Setting up libmozjs2d (1.9.1.16-11) ...
Setting up libpcrecpp0 (8.02-1.1) ...
Setting up mongodb-clients (1:1.4.4-3) ...
Setting up mongodb-server (1:1.4.4-3) ...
Adding system user `mongodb' (UID 102) ...
Adding new user `mongodb' (UID 102) with group `nogroup' ...
Not creating home directory `/home/mongodb'.
Adding group `mongodb' (GID 104) ...
Done.
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
Starting database: mongodb.
Setting up mongodb-dev (1:1.4.4-3) ...
Setting up mongodb (1:1.4.4-3) ...

root@debian:~#</pre>
<p>MongoDBサーバが起動していることを確認します。</p>
<pre>cf@debian:~$ ps auxwwwf | grep "[ m]ongodb"
mongodb   6566  0.0  0.8  80176  4260 ?        Sl   21:04   0:00 /usr/bin/mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb/mongodb.log --config /etc/mongodb.conf run
cf@debian:~$</pre>
<p>MongoDBクライアントがインストールされていることを確認します。</p>
<pre>cf@debian:~$ mongo --version
MongoDB shell version: 1.4.4
cf@debian:~$</pre>
<p>node.jsをローカルにインストールします。</p>
<pre>root@debian:~# aptitude install nodejs
	:
Setting up libssl1.0.0 (1.0.0f-1) ...
Setting up libicu48 (4.8.1.1-2) ...
Setting up libv8-3.6.6.14 (3.6.6.14-2) ...
Setting up libc-ares2 (1.7.3-1) ...
Setting up libev4 (1:4.04-1) ...
Setting up nodejs (0.4.12-3) ...
update-alternatives: using /usr/bin/node to provide /usr/bin/js (js) in auto mode.

root@debian:~#</pre>
<p>node.jsがインストールされていることを確認します。</p>
<pre>cf@debian:~$ node -v
v0.4.12
cf@debian:~$</pre>
<p>node.jsのパッケージマネージャであるnpmをローカルにインストールします。</p>
<pre>root@debian:~# aptitude install npm
	:
Setting up mime-support (3.48-1) ...
Setting up python2.6-minimal (2.6.6-8+b1) ...
Linking and byte-compiling packages for runtime python2.6...
Setting up python2.6 (2.6.6-8+b1) ...
Setting up python-minimal (2.6.6-3+squeeze6) ...
Setting up python (2.6.6-3+squeeze6) ...
Setting up binutils (2.20.1-16) ...
Setting up libgmp3c2 (2:4.3.2+dfsg-1) ...
Setting up libmpfr4 (3.0.0-2) ...
Setting up cpp-4.4 (4.4.5-8) ...
Setting up cpp (4:4.4.5-1) ...
Setting up libgomp1 (4.4.5-8) ...
Setting up gcc-4.4 (4.4.5-8) ...
Setting up gcc (4:4.4.5-1) ...
Setting up libc-dev-bin (2.11.2-10) ...
Setting up linux-libc-dev (2.6.32-39squeeze1) ...
Setting up libc6-dev (2.11.2-10) ...
Setting up zlib1g-dev (1:1.2.3.4.dfsg-3) ...
Setting up libssl-dev (0.9.8o-4squeeze5) ...
Setting up libv8-dev (3.6.6.14-2) ...
Setting up manpages-dev (3.27-1) ...
Setting up libc-ares-dev (1.7.3-1) ...
Setting up libev3 (1:3.9-1) ...
Setting up libev-dev (1:3.9-1) ...
Setting up nodejs-dev (0.4.12-3) ...
Setting up npm (0.2.19-1) ...

root@debian:~#</pre>
<p>npmがインストールされていることを確認します。</p>
<pre>cf@debian:~$ npm -v
0.2.19
cf@debian:~$</pre>
<h3>MongoDBを利用しないnode.jsのサンプルアプリケーションの作成</h3>
<p>まず、MongoDBを利用しない、node.jsのサンプルアプリケーションを作成します。</p>
<pre>cf@debian:~$ mkdir mongo-node
cf@debian:~$ cd mongo-node
cf@debian:~/mongo-node$ 

cf@debian:~/mongo-node$ cat &gt; app.js
var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, host);
cf@debian:~/mongo-node$</pre>
<p>サンプルアプリケーションをローカルで実行します。</p>
<pre>cf@debian:~/mongo-node$ node app.js</pre>
<p>別シェルからtelnetコマンドで接続します。</p>
<pre>cf@debian:~$ telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close

Hello World
Connection closed by foreign host.
cf@debian:~$</pre>
<p>以上のように、問題なく動作することが確認できました。</p>
<p>このサンプルアプリケーションをCloud Foundryにデプロイします。このアプリケーションはMongoDBを利用していませんが、現時点でMongoDBとの関連付けを行っておきます。</p>
<pre>cf@debian:~/mongo-node$ vmc push
Would you like to deploy from the current directory? [Yn]: <strong>y</strong>
Application Name: <strong>mongo-node</strong>
Application Deployed URL [mongo-node.cloudfoundry.com]: <strong>mongo-node-creationline.cloudfoundry.com</strong>
Detected a Node.js Application, is this correct? [Yn]: <strong>y</strong>
Memory Reservation (64M, 128M, 256M, 512M, 1G, 2G) [64M]:
Creating Application: OK
Would you like to bind any services to 'mongo-node'? [yN]: <strong>y</strong>
The following system services are available
1: mongodb
2: mysql
3: postgresql
4: rabbitmq
5: redis
Please select one you wish to provision: <strong>1</strong>
Specify the name of the service [mongodb-94ec6]:
Creating Service: OK
Binding Service [mongodb-94ec6]: OK
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK                                                        

cf@debian:~/mongo-node$</pre>
<p>サンプルアプリケーションがMongoDBと関連付けられていることを確認します。</p>
<pre>cf@debian:~/mongo-node$ vmc apps

+-------------+----+---------+------------------------------------------+---------------+
| Application | #  | Health  | URLS                                     | Services      |
+-------------+----+---------+------------------------------------------+---------------+
| mongo-node  | 1  | RUNNING | mongo-node-creationline.cloudfoundry.com | mongodb-94ec6 |
+-------------+----+---------+------------------------------------------+---------------+

cf@debian:~/mongo-node$</pre>
<p>Webブラウザで http://mongo-node-creationline.cloudfoundry.com/ にアクセスします。以下の表示が得られれば、サンプルアプリケーションは正常に動作しています。</p>
<pre>Hello World</pre>
<h3>MongoDBを利用するnode.jsのサンプルアプリケーションの作成</h3>
<p>サンプルアプリケーションの先頭に、MongoDBサービスと接続するためのコードを追加します。接続するだけで、実際にMongoDBに対しては何の操作も行いません。</p>
<p>Cloud Foundry上では、アプリケーションとサービスを接続するための情報は環境変数 VCAP_SERVICES、VMC_APP_PORT、VCAP_APP_HOST に格納されるようになっており、その有無を判定してCloud Foundry上とローカルのどちらでも動作するようになっています。</p>
<p>逆に言うと、Cloud Foundry上でアプリケーションを動かすには、接続情報に関する部分を修正する必要があります。</p>
<pre>cf@debian:~/mongo-node$ cat &gt; app.js
<strong>if(process.env.VCAP_SERVICES){
  var env = JSON.parse(process.env.VCAP_SERVICES);
  var mongo = env['mongodb-1.8'][0]['credentials'];
}
else{
  var mongo = {
    "hostname":"localhost",
    "port":27017,
    "username":"",
    "password":"",
    "name":"",
    "db":"db"
  }
}

var generate_mongo_url = function(obj){
  obj.hostname = (obj.hostname || 'localhost');
  obj.port = (obj.port || 27017);
  obj.db = (obj.db || 'test');

  if(obj.username &amp;&amp; obj.password){
    return "mongodb://" + obj.username + ":" + obj.password + "@" + obj.hostname + ":" + obj.port + "/" + obj.db;
  }
  else{
    return "mongodb://" + obj.hostname + ":" + obj.port + "/" + obj.db;
  }
}

var mongourl = generate_mongo_url(mongo);</strong>

//--------------------------------------

var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, host);
cf@debian:~/mongo-node$</pre>
<p>サンプルアプリケーションをローカルで実行します。</p>
<pre>cf@debian:~/mongo-node$ node app.js</pre>
<p>別シェルからtelnetコマンドで接続します。</p>
<pre>cf@debian:~$ telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close

Hello World
Connection closed by foreign host.
cf@debian:~$</pre>
<p>以上のように、問題なく動作することが確認できたら、Cloud Foundry上のサンプルアプリケーションを更新します。</p>
<pre>cf@debian:~/mongo-node$ vmc update mongo-node
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (1K): OK
Push Status: OK
Stopping Application: OK
Staging Application: OK
Starting Application: OK                                                        

cf@debian:~/mongo-node$</pre>
<p>Webブラウザで http://mongo-node-creationline.cloudfoundry.com/ にアクセスします。以下の表示が得られれば、サンプルアプリケーションは正常に動作しています。</p>
<pre>Hello World</pre>
<p>では、実際にnode.jsからMongoDBサービスを利用してみます。まず、npmコマンドでnode.jsのMongoDBドライバをローカルにインストールします。</p>
<pre>cf@debian:~/mongo-node$ npm install mongodb
================================================================================
=                                                                              =
=  To install with C++ bson parser do    =
=                                                                              =
================================================================================
npm ok
cf@debian:~/mongo-node$</pre>
<p>C++ コンパイラなど開発環境が必要となるので、インストールします。</p>
<pre>root@debian:~# aptitude install build-essential
	:
Setting up libdb4.7 (4.7.25-9) ...
Setting up patch (2.6-2) ...
Setting up make (3.81-8) ...
Setting up fakeroot (1.14.4-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode.
Setting up perl-modules (5.10.1-17squeeze2) ...
Setting up libstdc++6-4.4-dev (4.4.5-8) ...
Setting up perl (5.10.1-17squeeze2) ...
update-alternatives: using /usr/bin/prename to provide /usr/bin/rename (rename) in auto mode.
Setting up g++-4.4 (4.4.5-8) ...
Setting up g++ (4:4.4.5-1) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode.
Setting up libtimedate-perl (1.2000-1) ...
Setting up libdpkg-perl (1.15.8.11) ...
Setting up dpkg-dev (1.15.8.11) ...
Setting up build-essential (11.5) ...
Setting up libalgorithm-diff-perl (1.19.02-2) ...
Setting up libalgorithm-diff-xs-perl (0.04-1) ...
Setting up libalgorithm-merge-perl (0.08-2) ...

root@debian:~#</pre>
<p>再度、インストールを行います。</p>
<pre>cf@debian:~/mongo-node$ npm install mongodb --mongodb:native
================================================================================
=                                                                              =
=  To install with C++ bson parser do    =
=                                                                              =
================================================================================
make -C ./external-libs/bson all
make[1]: Entering directory `/home/cf/.node_libraries/.npm/mongodb/0.9.7-3-5/package/external-libs/bson'
rm -rf build .lock-wscript bson.node
node-waf configure build
Checking for program g++ or c++          : /usr/bin/g++
Checking for program cpp                 : /usr/bin/cpp
Checking for program ar                  : /usr/bin/ar
Checking for program ranlib              : /usr/bin/ranlib
Checking for g++                         : ok
Checking for node path                   : ok /home/cf/.node_libraries
Checking for node prefix                 : ok /usr
'configure' finished successfully (0.152s)
Waf: Entering directory `/home/cf/.node_libraries/.npm/mongodb/0.9.7-3-5/package/external-libs/bson/build'
[1/2] cxx: bson.cc -&gt; build/default/bson_1.o
[2/2] cxx_link: build/default/bson_1.o -&gt; build/default/bson.node
Waf: Leaving directory `/home/cf/.node_libraries/.npm/mongodb/0.9.7-3-5/package/external-libs/bson/build'
'build' finished successfully (2.313s)
cp -R ./build/Release/bson.node . || true
cp: cannot stat `./build/Release/bson.node': No such file or directory
# @node --expose-gc test/test_bson.js
# @node --expose-gc test/test_full_bson.js
# @node --expose-gc test/test_stackless_bson.js
# @node --expose-gc test/test_shared_objects.js
make[1]: Leaving directory `/home/cf/.node_libraries/.npm/mongodb/0.9.7-3-5/package/external-libs/bson'
child process exited with code 0
npm ok
cf@debian:~/mongo-node$</pre>
<p>MongoDBドライバがインストールできたら、サンプルアプリケーションにさらにコードを追加します。</p>
<pre>cf@debian:~/mongo-node$ cat &gt; app.js
if(process.env.VCAP_SERVICES){
  var env = JSON.parse(process.env.VCAP_SERVICES);
  var mongo = env['mongodb-1.8'][0]['credentials'];
}
else{
  var mongo = {
    "hostname":"localhost",
    "port":27017,
    "username":"",
    "password":"",
    "name":"",
    "db":"db"
  }
}

var generate_mongo_url = function(obj){
  obj.hostname = (obj.hostname || 'localhost');
  obj.port = (obj.port || 27017);
  obj.db = (obj.db || 'test');

  if(obj.username &amp;&amp; obj.password){
    return "mongodb://" + obj.username + ":" + obj.password + "@" + obj.hostname + ":" + obj.port + "/" + obj.db;
  }
  else{
    return "mongodb://" + obj.hostname + ":" + obj.port + "/" + obj.db;
  }
}

var mongourl = generate_mongo_url(mongo);

//--------------------------------------

<strong>var record_visit = function(req, res){
  /* Connect to the DB and auth */
  require('mongodb').connect(mongourl, function(err, conn){
    conn.collection('ips', function(err, coll){
      /* Simple object to insert: ip address and date */
      object_to_insert = { 'ip': req.connection.remoteAddress, 'ts': new Date() };

      /* Insert the object then print in response */
      /* Note the _id has been created */
      coll.insert( object_to_insert, {safe:true}, function(err){
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.write(JSON.stringify(object_to_insert));
        res.end('\n');
      });
    });
  });
}</strong>

//--------------------------------------

var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');

http.createServer(function (req, res) {
  record_visit(req, res);
}).listen(port, host);
cf@debian:~/mongo-node$</pre>
<p>サンプルアプリケーションをローカルで実行します。</p>
<pre>cf@debian:~/mongo-node$ node app.js</pre>
<p>別シェルからtelnetコマンドで接続します。</p>
<pre>cf@debian:~$ telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close

{"ip":"127.0.0.1","ts":"2012-01-16T12:56:57.226Z","_id":"4f141e99e3b2f2d420000001"}
Connection closed by foreign host.
cf@debian:~$</pre>
<p>以上のように、MongoDBサーバに投入されたデータが表示されます。MongoDBサーバのログを確認します。</p>
<pre>cf@debian:~$ tail /var/log/mongodb/mongodb.log
Mon Jan 16 21:56:57 allocating new datafile /var/lib/mongodb/db.ns, filling with zeroes...
Mon Jan 16 21:56:57 done allocating datafile /var/lib/mongodb/db.ns, size: 16MB, took 0.011 secs
Mon Jan 16 21:56:57 allocating new datafile /var/lib/mongodb/db.0, filling with zeroes...
Mon Jan 16 21:56:57 done allocating datafile /var/lib/mongodb/db.0, size: 64MB, took 0.094 secs
Mon Jan 16 21:56:57 building new index on { _id: 1 } for db.ips
Mon Jan 16 21:56:57 Buildindex db.ips idxNo:0 { name: "_id_", ns: "db.ips", key: { _id: 1 } }
Mon Jan 16 21:56:57 done for 0 records 0secs
Mon Jan 16 21:56:57 insert db.ips 136ms
Mon Jan 16 21:56:57 allocating new datafile /var/lib/mongodb/db.1, filling with zeroes...
Mon Jan 16 21:57:03 done allocating datafile /var/lib/mongodb/db.1, size: 128MB, took 6.154 secs
cf@debian:~$</pre>
<p>MongoDBに新しいDBが作成されたことが確認できます。</p>
<p>Cloud Foundry上のサンプルアプリケーションを更新します。</p>
<pre>cf@debian:~/mongo-node$ vmc update mongo-node
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (1K): OK
Push Status: OK
Stopping Application: OK
Staging Application: OK
Starting Application: OK                                                        

cf@debian:~/mongo-node$</pre>
<p>Webブラウザで http://mongo-node-creationline.cloudfoundry.com/ にアクセスします。</p>
<pre>502 Bad Gateway</pre>
<p>しかし、以上のようにエラーとなってしまいました。ログを確認します。</p>
<pre>cf@debian:~/mongo-node$ vmc crashlogs mongo-node
====&gt; logs/stderr.log &lt;====

module.js:326
    throw new Error("Cannot find module '" + request + "'");
          ^
Error: Cannot find module 'mongodb'
    at Function._resolveFilename (module.js:326:11)
    at Function._load (module.js:271:25)
    at require (module.js:355:19)
    at /var/vcap/data/dea/apps/mongo-node-0-e096b2ff2028e697bc888f5f1274295b/app/app.js:35:3
    at Server.&lt;anonymous&gt; (/var/vcap/data/dea/apps/mongo-node-0-e096b2ff2028e697bc888f5f1274295b/app/app.js:58:2)
    at Server.emit (events.js:67:17)
    at HTTPParser.onIncoming (http.js:1134:12)
    at HTTPParser.onHeadersComplete (http.js:108:31)
    at Socket.ondata (http.js:1029:22)
    at Socket._onReadable (net.js:677:27)

cf@debian:~/mongo-node$</pre>
<p>Cloud Foundry上にはnode.jsのMongoDBドライバがないようです。</p>
<p>Cloud Foundryのナレッジベース <a href="http://support.cloudfoundry.com/entries/505133-deploying-a-node-js-app-with-npm-dependencies">Deploying a Node.js app with NPM dependencies</a> によると、</p>
<blockquote><p>When deploying any application to vCloudLabs, the directory from which you push the app via vmc push, needs to include all packages and dependencies that are needed to run your application, and your application itself. Node.JS applications are no different.</p></blockquote>
<p>とあり、アプリケーションに依存したすべてのパッケージを一緒にデプロイしなければいけないようです。</p>
<p>そこで、サンプルアプリケーションのあるディレクトリにnode_modulesディレクトリを作成し、その中にMongoDBドライバをコピーします。</p>
<pre>cf@debian:~/mongo-node$ mkdir node_modules
cf@debian:~/mongo-node$ cp -a ~/.node_libraries/.npm/mongodb/active/package/lib/mongodb/ node_modules
cf@debian:~/mongo-node$</pre>
<p>再度、サンプルアプリケーションを更新します。これによって、一緒にMongoDBドライバもCloud Foundry上に転送されます。</p>
<pre>cf@debian:~/mongo-node$ vmc update mongo-node
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (1K): OK
Push Status: OK
Stopping Application: OK
Staging Application: OK
Starting Application: OK                                                        

cf@debian:~/mongo-node$</pre>
<p>再び、Webブラウザで http://mongo-node-creationline.cloudfoundry.com/ に<br />
アクセスします。</p>
<pre>{"ip":"172.30.49.41","ts":"2012-01-16T13:18:30.767Z","_id":"4f1423a6852cd13470000001"}</pre>
<p>以上のように、今度は正常に動作することが確認できました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/%e6%9c%aa%e5%88%86%e9%a1%9e/1631/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>クラウドインテグレーションサービス「Integrated Stack for Enterprise」の提供を開始</title>
		<link>http://www.creationline.com/news/press/1686</link>
		<comments>http://www.creationline.com/news/press/1686#comments</comments>
		<pubDate>Mon, 06 Feb 2012 03:49:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PRESS]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1686</guid>
		<description><![CDATA[2012年2月6日 クラウドインテグレーションサービス「Integrated Stack for Enterprise」の提供を開始 ～第一段としてCMSを活用した分散処理ソリューションの提供を開始～ クラウドインテグレータのクリエーションライン（クリエーションライン株式会社、本社：東京都中央区、代表取締役：安田 忠弘）は、法人向けのクラウドソリューションとして「Integrated Stack for Enterprise」の提供を開始しました。「Integrated Stack for Enterprise」は「クラウド移行のための新社内システム基盤」をコンセプトとして、業務用クラウド基盤と解析基盤の統合によるリソース効率化、フェデレーションシステムによるパブリッククラウドからのリソース調達などの機能を提供し、来るべきクラウド時代のための、プライベートクラウド共通基盤を提供します。 今回はその第一弾としてクラウドマネジメントシステム（以下、CMS）として「CloudStack」を、分散処理で「Hadoop」、ハードウェアでは日立の高集積ブレードサーバ「HA8000-bd」を活用した分散処理ソリューションの提供を開始しました。構築支援サービスを含めたパッケージソリューションとして提供することで、短期間で効率的かつ柔軟な分散処理基盤を実現することができます。 企業が持つ顧客情報や販売実績などの膨大なデータを高速かつ柔軟に処理することは、迅速な経営判断を実現するうえで非常に重要です。それを実現する大規模データ分散処理で活用されているHadoopは、高価な専用のハードウェアを用意することなく、コモディティ化したIAサーバで大規模なクラスターを構築可能なことが大きなメリットの一つです。併せてCloudStackのベアメタルプロビジョニング機能（ハードウェアを仮想サーバのように管理する機能）を活用することで、ハードウェアリソースをより効率的に、かつ最適化した状態で利用することが可能となります。 これまで既存システムと併用し分散処理環境を提供するためには、仮想化基盤を構築し分散処理を実行する必要がありましたが、この場合、仮想化ハイパーバイザによるディスクI/OやネットワークI/Oのオーバーヘッドによりハードウェアの処理性能を十分に利用することができませんでした。CloudStackを活用したベアメタルプロビジョニング機能により、仮想化環境でI/Oオーバーヘッドの課題を解決し、より効果的に分散処理システムを活用することが可能となります。 クリエーションライン社において、日立のブレードサーバ「HA8000-bd/BD10」上で「CloudStack」の機能動作・性能確認を実施し、十分な機能・性能が得られることを確認しています。また構築支援サービスは、クリエーションラインがこれまでのクラウドインフラ構築で培ったノウハウを活用します。このため、導入時のハードウェア／ソフトウェアの選定、個別検証が不要で、コストを抑えて迅速に導入することが可能です。 株式会社日立製作所　情報・通信システム社　エンタープライズサーバ事業部 サービス・ソリューション本部長　　林　良裕 様 　日立製作所は、クリエーションライン株式会社により、当社の高集積サーバ「HA8000-bd」が「Integrated Stack for Enterprise」ソリューションのプラットフォームとして活用されることを歓迎します。 　クリエーションラインの豊富な経験によって得られた高い技術力によって、「HA8000-bd」の信頼性、性能、高集積性が十分に生かされることを嬉しく思っております。クリエーションラインと今後も協力し、クラウド基盤構築サービス、分散処理ソリューションの拡販、システム構築やマーケティング活動を積極的に展開していきます。 http://www.hitachi.co.jp/New/cnews/month/2012/02/0206.html ■クリエーションラインについて クリエーションラインは、CloudStackに関する設計・構築を請け負った数多くの実績を有しています。また、enStratus、Scalrの国内唯一のパートナーでもあり、クラウドインテグレーションを提供する高度な技術者集団です。 経済産業省「平成23年度医療・介護等関連分野における規制改革・産業創出調査研究事業（医療・介護周辺サービス産業創出調査事業）」や独立行政法人情報処理推進機構（IPA）からの受託事業として「クラウド運用管理ツールの基本機能、性能、信頼性評価」を実施した実績を持っています。 *記載されている会社名、製品名は、各社の商標、もしくは登録商標です。 *記載の商品名、価格および担当部署、担当者、WebサイトのURLなどは、本リリース発表時点のものです。]]></description>
			<content:encoded><![CDATA[<p>2012年2月6日</p>
<p><strong>クラウドインテグレーションサービス「Integrated Stack for Enterprise」の提供を開始<br />
～第一段としてCMSを活用した分散処理ソリューションの提供を開始～</strong><br />
<br />
クラウドインテグレータのクリエーションライン（クリエーションライン株式会社、本社：東京都中央区、代表取締役：安田 忠弘）は、法人向けのクラウドソリューションとして「Integrated Stack for Enterprise」の提供を開始しました。「Integrated Stack for Enterprise」は「クラウド移行のための新社内システム基盤」をコンセプトとして、業務用クラウド基盤と解析基盤の統合によるリソース効率化、フェデレーションシステムによるパブリッククラウドからのリソース調達などの機能を提供し、来るべきクラウド時代のための、プライベートクラウド共通基盤を提供します。</p>
<p>今回はその第一弾としてクラウドマネジメントシステム（以下、CMS）として「CloudStack」を、分散処理で「Hadoop」、ハードウェアでは日立の高集積ブレードサーバ「HA8000-bd」を活用した分散処理ソリューションの提供を開始しました。構築支援サービスを含めたパッケージソリューションとして提供することで、短期間で効率的かつ柔軟な分散処理基盤を実現することができます。<br />
企業が持つ顧客情報や販売実績などの膨大なデータを高速かつ柔軟に処理することは、迅速な経営判断を実現するうえで非常に重要です。それを実現する大規模データ分散処理で活用されているHadoopは、高価な専用のハードウェアを用意することなく、コモディティ化したIAサーバで大規模なクラスターを構築可能なことが大きなメリットの一つです。併せてCloudStackのベアメタルプロビジョニング機能（ハードウェアを仮想サーバのように管理する機能）を活用することで、ハードウェアリソースをより効率的に、かつ最適化した状態で利用することが可能となります。<br />
<br />
<a href="http://www.creationline.com/wp-content/uploads/2012/02/Integrated_Stack_for_Enterprise001.png"><img src="http://www.creationline.com/wp-content/uploads/2012/02/Integrated_Stack_for_Enterprise001-300x140.png" alt="" title="Integrated_Stack_for_Enterprise001" width="400" height="186" class="aligncenter size-medium wp-image-1687" /></a><br />
<br />
これまで既存システムと併用し分散処理環境を提供するためには、仮想化基盤を構築し分散処理を実行する必要がありましたが、この場合、仮想化ハイパーバイザによるディスクI/OやネットワークI/Oのオーバーヘッドによりハードウェアの処理性能を十分に利用することができませんでした。CloudStackを活用したベアメタルプロビジョニング機能により、仮想化環境でI/Oオーバーヘッドの課題を解決し、より効果的に分散処理システムを活用することが可能となります。</p>
<p> クリエーションライン社において、日立のブレードサーバ「HA8000-bd/BD10」上で「CloudStack」の機能動作・性能確認を実施し、十分な機能・性能が得られることを確認しています。また構築支援サービスは、クリエーションラインがこれまでのクラウドインフラ構築で培ったノウハウを活用します。このため、導入時のハードウェア／ソフトウェアの選定、個別検証が不要で、コストを抑えて迅速に導入することが可能です。<br />
<br />
<strong> <日立製作所様からのエンドースメント></strong><br />
株式会社日立製作所　情報・通信システム社　エンタープライズサーバ事業部<br />
サービス・ソリューション本部長　　林　良裕 様<br />
<br />
　日立製作所は、クリエーションライン株式会社により、当社の高集積サーバ「HA8000-bd」が「Integrated Stack for Enterprise」ソリューションのプラットフォームとして活用されることを歓迎します。<br />
　クリエーションラインの豊富な経験によって得られた高い技術力によって、「HA8000-bd」の信頼性、性能、高集積性が十分に生かされることを嬉しく思っております。クリエーションラインと今後も協力し、クラウド基盤構築サービス、分散処理ソリューションの拡販、システム構築やマーケティング活動を積極的に展開していきます。<br />
<a href="http://www.hitachi.co.jp/New/cnews/month/2012/02/0206.html" target="_blank">http://www.hitachi.co.jp/New/cnews/month/2012/02/0206.html</a></p>
<p></p>
<p>■クリエーションラインについて<br />
クリエーションラインは、CloudStackに関する設計・構築を請け負った数多くの実績を有しています。また、enStratus、Scalrの国内唯一のパートナーでもあり、クラウドインテグレーションを提供する高度な技術者集団です。<br />
経済産業省「平成23年度医療・介護等関連分野における規制改革・産業創出調査研究事業（医療・介護周辺サービス産業創出調査事業）」や独立行政法人情報処理推進機構（IPA）からの受託事業として「クラウド運用管理ツールの基本機能、性能、信頼性評価」を実施した実績を持っています。 </p>
<p>*記載されている会社名、製品名は、各社の商標、もしくは登録商標です。<br />
*記載の商品名、価格および担当部署、担当者、WebサイトのURLなどは、本リリース発表時点のものです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/news/press/1686/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloudianバナー</title>
		<link>http://www.creationline.com/banner/1666</link>
		<comments>http://www.creationline.com/banner/1666#comments</comments>
		<pubDate>Tue, 31 Jan 2012 03:34:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[バナー掲載用カテゴリ]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1666</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/banner/1666/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>S3 REST API完全準拠クラウドストレージソフトウェア『Cloudian(R)』</title>
		<link>http://www.creationline.com/cloudintegration/1643</link>
		<comments>http://www.creationline.com/cloudintegration/1643#comments</comments>
		<pubDate>Tue, 31 Jan 2012 03:32:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cloud Integration]]></category>
		<category><![CDATA[banner]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1643</guid>
		<description><![CDATA[Cloudian®は、 S3 REST APIに完全準拠したクラウドストレージシステムを構築できるパッケージソフトウェア製品です Gemini（http://www.geminimobile.jp/）のCloudian®は、サービス提供のために必要となる統計課金機能、ユーザー・グループ管理機能、利用量制御機能なども実装しているパッケージソフトウェア製品であり、商用クラウドストレージサービスに利用されています。最近では、企業ユーザーからも、NAS/SANといった従来型のストレージ装置を補完するプライベートクラウドにおいて、パブリッククラウドと同じS3 REST APIのアプリケーションを利用したいというニーズが高まりつつあり、従来のクラウドサービス事業者向けに加え、企業内利用であるエンタープライズ向けの提供条件も追加されています。 Cloudianの特徴は次のとおりです。 S3 REST API(※)完全準拠 ファイル共有サービスのDropboxを始めAmazon S3 REST APIを利用するアプリケーション、アプライアンス、ツール等は数百種類あり、S3エコシステム（生態系）としてクラウドストレージの事実上の標準となりはじめています。Cloudianのユーザーは、これらのS3 REST APIを利用するアプリケーション等を改修することなしに利用できます。 高い拡張性、柔軟性、信頼性、可用性 Cloudian」は、クラウドサービス事業者やエンタープライズが、ストレージするデータ量の増加にあわせて、汎用的なIAサーバーを追加していくだけで、経済的にクラスタの格納データサイズを増やすことができる拡張性と柔軟性を備えています。DRのため複数地域にあるデータセンター(マルチデータセンター)を含み、自動的に複数のサーバーにデータを複製し、サーバー障害の際には自動復旧、自動リバランスを行うことから高い信頼性と可用性も備えています。これを実現する技術にはNOSQLデータベースを利用し、さらに独自開発の「HyperStore(TM)」技術も実装し、性能並びにハードディスクの利用効率を高めています。 Cloudianは、Gemini Mobile Technologies K.K.の登録商標、Gemini Mobile Technologies. Incのトレードマークです。HyperStoreは、Gemini Mobile Technologies. Incのトレードマークです。 文中に記載しているその他の会社名、システム名、製品名は一般に各社の登録商標または商標です。 (※)　S3 REST API：AWS(Amazon Web Service)が提供するクラウドストレージサービス、Amazon S3(Simple Storage Service)をREST(Representational State Transfer)方式で利用するために広く公開されているAPI(アプリケーション・プログラミング・インターフェース)です。 http://geminimobile.jp/cloud-storage-products/S3-REST-API-ecosystem.html Cloudian http://geminimobile.jp/cloud-storage-products/cloudian.html]]></description>
			<content:encoded><![CDATA[<p><strong>Cloudian®は、 S3 REST APIに完全準拠したクラウドストレージシステムを構築できるパッケージソフトウェア製品です</strong></p>
<p>Gemini（<a href="http://www.geminimobile.jp/"　target="_blank">http://www.geminimobile.jp/</a>）のCloudian®は、サービス提供のために必要となる統計課金機能、ユーザー・グループ管理機能、利用量制御機能なども実装しているパッケージソフトウェア製品であり、商用クラウドストレージサービスに利用されています。最近では、企業ユーザーからも、NAS/SANといった従来型のストレージ装置を補完するプライベートクラウドにおいて、パブリッククラウドと同じS3 REST APIのアプリケーションを利用したいというニーズが高まりつつあり、従来のクラウドサービス事業者向けに加え、企業内利用であるエンタープライズ向けの提供条件も追加されています。</p>
<p>Cloudianの特徴は次のとおりです。</p>
<p><strong>S3 REST API(※)完全準拠</strong><br />
ファイル共有サービスのDropboxを始めAmazon S3 REST APIを利用するアプリケーション、アプライアンス、ツール等は数百種類あり、S3エコシステム（生態系）としてクラウドストレージの事実上の標準となりはじめています。Cloudianのユーザーは、これらのS3 REST APIを利用するアプリケーション等を改修することなしに利用できます。</p>
<p><strong>高い拡張性、柔軟性、信頼性、可用性</strong><br />
Cloudian」は、クラウドサービス事業者やエンタープライズが、ストレージするデータ量の増加にあわせて、汎用的なIAサーバーを追加していくだけで、経済的にクラスタの格納データサイズを増やすことができる拡張性と柔軟性を備えています。DRのため複数地域にあるデータセンター(マルチデータセンター)を含み、自動的に複数のサーバーにデータを複製し、サーバー障害の際には自動復旧、自動リバランスを行うことから高い信頼性と可用性も備えています。これを実現する技術にはNOSQLデータベースを利用し、さらに独自開発の「HyperStore(TM)」技術も実装し、性能並びにハードディスクの利用効率を高めています。<br />
<img src="http://www.creationline.com/wp-content/uploads/2012/01/cloudian001-252x300.png" alt="" title="cloudian001" width="252" height="300" class="aligncenter size-medium wp-image-1646" /></p>
<p>Cloudianは、Gemini Mobile Technologies K.K.の登録商標、Gemini Mobile Technologies. Incのトレードマークです。HyperStoreは、Gemini Mobile Technologies. Incのトレードマークです。<br />
文中に記載しているその他の会社名、システム名、製品名は一般に各社の登録商標または商標です。</p>
<p>(※)　<strong>S3 REST API</strong>：AWS(Amazon Web Service)が提供するクラウドストレージサービス、Amazon S3(Simple Storage Service)をREST(Representational State Transfer)方式で利用するために広く公開されているAPI(アプリケーション・プログラミング・インターフェース)です。<br />
<a href="http://geminimobile.jp/cloud-storage-products/S3-REST-API-ecosystem.html"　target="_blank">http://geminimobile.jp/cloud-storage-products/S3-REST-API-ecosystem.html</a><br />
<br /><strong>Cloudian</strong><br />
<a href="http://geminimobile.jp/cloud-storage-products/cloudian.html"　target="_blank">http://geminimobile.jp/cloud-storage-products/cloudian.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/cloudintegration/1643/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSSマルチクラウド運用管理ツール（Cloud Federation Tool）「Scalr」のサポートサービスの提供開始</title>
		<link>http://www.creationline.com/news/1612</link>
		<comments>http://www.creationline.com/news/1612#comments</comments>
		<pubDate>Mon, 23 Jan 2012 22:52:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[PRESS]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1612</guid>
		<description><![CDATA[2012 年1月 24日 マルチクラウド運用管理ツール（Cloud Federation Tool）「Scalr」のサポートサービスの提供開始 －　Amazon Web Services, CloudStackと連携するハイブリッドクラウドをOSSで実現　－ クリエーションライン株式会社（本社：東京都中央区、代表取締役：安田　忠弘、以下：クリエーションライン）は、オープンソースソフトウェアのクラウド連携ツール（Cloud Federation Tool）である「Scalr：スケーラー」の導入支援・サポートサービスの提供を開始しました。 「Scalr」は、米国Scalr Inc.社（http://scalr.net/）が中心となって開発されたオープンソースソフトウェアで、マルチクラウド管理ソリューション（Cloud Federation Tool）です。「Scalr」は、CloudStack、OpenStack、Amazon Web Services（以下、AWSという。）などのIaaSと連携することはもちろん、CloudFoundryのプロビジョニング機能（http://wiki.scalr.net/Reference_Guide/Roles/CloudFoundry）を有し、PaaS基盤との連携も可能とするソリューションです。 クリエーションラインは、すでに提供しているCitrix CloudStack（以下、CloudStackという）の導入支援サービスと共に「Scalr」を提供することでハイブリッドクラウド環境構築の提供が可能となりました。またCloudFoundryなどPaaS基盤連携により開発（Develop）と運用（Operation）の統合、リリースサイクルの最適化が可能となります。 今回のScalr導入支援・サポートサービスの提供に対してScalr Inc.社より以下のようなエンドースメントをいただきました。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; We are honored that Scalr will from now on benefit a support service for Installation &#038; Operation provided by Creationline,Inc. We feel thispartnership will bring quality and security to Scalr integration [...]]]></description>
			<content:encoded><![CDATA[<p>2012 年1月 24日</p>
<p>マルチクラウド運用管理ツール（Cloud Federation Tool）「Scalr」のサポートサービスの提供開始<br />
－　Amazon Web Services, CloudStackと連携するハイブリッドクラウドをOSSで実現　－</p>
<p> クリエーションライン株式会社（本社：東京都中央区、代表取締役：安田　忠弘、以下：クリエーションライン）は、オープンソースソフトウェアのクラウド連携ツール（Cloud Federation Tool）である「Scalr：スケーラー」の導入支援・サポートサービスの提供を開始しました。<br />
「Scalr」は、米国Scalr Inc.社（<a href="http://scalr.net/" target="_blank">http://scalr.net/</a>）が中心となって開発されたオープンソースソフトウェアで、マルチクラウド管理ソリューション（Cloud Federation Tool）です。「Scalr」は、CloudStack、OpenStack、Amazon Web Services（以下、AWSという。）などのIaaSと連携することはもちろん、CloudFoundryのプロビジョニング機能（<a href="http://wiki.scalr.net/Reference_Guide/Roles/CloudFoundry" target="_blank">http://wiki.scalr.net/Reference_Guide/Roles/CloudFoundry</a>）を有し、PaaS基盤との連携も可能とするソリューションです。<br />
クリエーションラインは、すでに提供しているCitrix CloudStack（以下、CloudStackという）の導入支援サービスと共に「Scalr」を提供することでハイブリッドクラウド環境構築の提供が可能となりました。またCloudFoundryなどPaaS基盤連携により開発（Develop）と運用（Operation）の統合、リリースサイクルの最適化が可能となります。</p>
<p>今回のScalr導入支援・サポートサービスの提供に対してScalr Inc.社より以下のようなエンドースメントをいただきました。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
We are honored that Scalr will from now on benefit a support service for Installation &#038; Operation provided by Creationline,Inc. We feel thispartnership will bring quality and security to Scalr integration in the Japanese cloud market.</p>
<p>Through a new support service by Creationline, Inc., We believe that Scalr will be more reachable and integratable for many Japanese enterprise system.  We hope Scalr will be a big success in Japan also.</p>
<p>この度のクリエーションライン社によるScalr導入支援・サポートサービスの提供のリリースを心より歓迎いたします。<br />
弊社でも日本のマーケットは重要視しております。クラウド技術に精通しているクリエーションラインのサポートにより「Scalr」が多くの方々に利用され、「Scalr」の可能性を一層高めてくれるものと確信しております。</p>
<p><a href="http://scalr.net/partners/"　target=”_blank” >http://scalr.net/partners/</a></p>
<p>Scalr Inc.<br />
Sebastian Stadil, Founder, CEO.</p>
<p><a href="http://www.creationline.com/wp-content/uploads/2012/01/scalr4.jpg"><img src="http://www.creationline.com/wp-content/uploads/2012/01/scalr4.jpg" alt="" title="scalr4" width="600" height="328" class="aligncenter size-medium wp-image-1616" /></a></p>
<p>「Scalr」の主な機能<br />
1.	マルチクラウド連携機能（API連携）<br />
2.	仮想サーバのオートスケール機能<br />
3.	スクリプトジョブ管理<br />
4.	フォルトトレランス（Fault tolerance）機能<br />
5.	自動リカバリ、自動バックアップ機能<br />
6.	DNS管理<br />
7.	サーバグループ管理<br />
8.	アクセスキー管理</p>
<p>◯クリエーションラインの提供するサービス<br />
＜コンサルティング・導入支援＞<br />
現状調査及び導入検討支援<br />
ネットワーク設計などシステム構築におけるサイジング、パフォーマンス設計支援<br />
実機検証・性能評価支援<br />
「Scalr」カスタマイズ対応<br />
＜サポート＞<br />
障害対応<br />
セミナー、トレーニングの実施<br />
24時間365日プラチナサポート（オプション）</p>
<p>＜クリエーションラインとは＞<br />
クリエーションラインは、CloudStackに関する設計・構築を請け負った数多くの実績を有しています。また、OpenStack、Wakame-vdcなどのクラウドマネジメントシステム（CMS）やenStratusなどのCloud<br />
Federatioツールなどを中心にクラウドインテグレーションサービスを提供する高度な技術者集団です。<br />
経済産業省「平成23年度医療・介護等関連分野における規制改革・産業創出調査研究事業（医療・介護周辺サービス産業創出調査事業）」や独立行政法人情報処理推進機構（IPA）からの受託事業として「クラウド運用管理ツールの基本機能、性能、信頼性評価」を実施した実績を持っています。<br />
設立：2006年1月<br />
URL：<a href="http://www.creationline.com/">http://www.creationline.com/</a></p>
<p>【本件に関する問い合わせ先】<br />
クリエーションライン株式会社　担当：上村<br />
TEL：03-6228-3555　E-mail: info@creationline.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/news/1612/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalrバナー</title>
		<link>http://www.creationline.com/banner/1625</link>
		<comments>http://www.creationline.com/banner/1625#comments</comments>
		<pubDate>Mon, 23 Jan 2012 08:02:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[バナー掲載用カテゴリ]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1625</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/banner/1625/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSSクラウド連携ツール（Cloud Federation Tool）『Scalr』</title>
		<link>http://www.creationline.com/cloudintegration/1602</link>
		<comments>http://www.creationline.com/cloudintegration/1602#comments</comments>
		<pubDate>Sat, 21 Jan 2012 02:31:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cloud Integration]]></category>
		<category><![CDATA[banner]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1602</guid>
		<description><![CDATA[マルチクラウド運用管理ツール（Cloud Federation Tool）「Scalr」のサポートサービスの提供開始 －　Amazon Web Services, CloudStackと連携するハイブリッドクラウドをOSSで実現　－ クリエーションライン株式会社（本社：東京都中央区、代表取締役：安田　忠弘、以下：クリエーションライン）は、オープンソースソフトウェアのクラウド連携ツール（Cloud Federation Tool）である「Scalr：スケーラー」の導入支援・サポートサービスの提供を開始しました。 「Scalr」は、米国Scalr Inc.社（http://scalr.net/）が中心となって開発されたオープンソースソフトウェアで、マルチクラウド管理ソリューション（Cloud Federation Tool）です。「Scalr」は、CloudStack、OpenStack、Amazon Web Services（以下、AWSという。）などのIaaSと連携することはもちろん、CloudFoundryのプロビジョニング機能（http://wiki.scalr.net/Reference_Guide/Roles/CloudFoundry）を有し、PaaS基盤との連携も可能とするソリューションです。 クリエーションラインは、すでに提供しているCitrix CloudStack（以下、CloudStackという）の導入支援サービスと共に「Scalr」を提供することでハイブリッドクラウド環境構築の提供が可能となりました。またCloudFoundryなどPaaS基盤連携により開発（Develop）と運用（Operation）の統合、リリースサイクルの最適化が可能となります。 今回のScalr導入支援・サポートサービスの提供に対してScalr Inc.社より以下のようなエンドースメントをいただきました。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; We are honored that Scalr will from now on benefit a support service for Installation &#038; Operation provided by Creationline,Inc. We feel thispartnership will bring quality and security to Scalr integration in the Japanese [...]]]></description>
			<content:encoded><![CDATA[<p>マルチクラウド運用管理ツール（Cloud Federation Tool）「Scalr」のサポートサービスの提供開始<br />
－　Amazon Web Services, CloudStackと連携するハイブリッドクラウドをOSSで実現　－</p>
<p> クリエーションライン株式会社（本社：東京都中央区、代表取締役：安田　忠弘、以下：クリエーションライン）は、オープンソースソフトウェアのクラウド連携ツール（Cloud Federation Tool）である「Scalr：スケーラー」の導入支援・サポートサービスの提供を開始しました。<br />
「Scalr」は、米国Scalr Inc.社（<a href="http://scalr.net/" target="_blank">http://scalr.net/</a>）が中心となって開発されたオープンソースソフトウェアで、マルチクラウド管理ソリューション（Cloud Federation Tool）です。「Scalr」は、CloudStack、OpenStack、Amazon Web Services（以下、AWSという。）などのIaaSと連携することはもちろん、CloudFoundryのプロビジョニング機能（<a href="http://wiki.scalr.net/Reference_Guide/Roles/CloudFoundry" target="_blank">http://wiki.scalr.net/Reference_Guide/Roles/CloudFoundry</a>）を有し、PaaS基盤との連携も可能とするソリューションです。<br />
クリエーションラインは、すでに提供しているCitrix CloudStack（以下、CloudStackという）の導入支援サービスと共に「Scalr」を提供することでハイブリッドクラウド環境構築の提供が可能となりました。またCloudFoundryなどPaaS基盤連携により開発（Develop）と運用（Operation）の統合、リリースサイクルの最適化が可能となります。</p>
<p>今回のScalr導入支援・サポートサービスの提供に対してScalr Inc.社より以下のようなエンドースメントをいただきました。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
We are honored that Scalr will from now on benefit a support service for Installation &#038; Operation provided by Creationline,Inc. We feel thispartnership will bring quality and security to Scalr integration in the Japanese cloud market.</p>
<p>Through a new support service by Creationline, Inc., We believe that Scalr will be more reachable and integratable for many Japanese enterprise system.  We hope Scalr will be a big success in Japan also.</p>
<p>この度のクリエーションライン社によるScalr導入支援・サポートサービスの提供のリリースを心より歓迎いたします。<br />
弊社でも日本のマーケットは重要視しております。クラウド技術に精通しているクリエーションラインのサポートにより「Scalr」が多くの方々に利用され、「Scalr」の可能性を一層高めてくれるものと確信しております。</p>
<p><a href="http://scalr.net/partners/"　target=”_blank” >http://scalr.net/partners/</a></p>
<p>Scalr Inc.<br />
Sebastian Stadil, Founder, CEO.</p>
<p><a href="http://www.creationline.com/wp-content/uploads/2012/01/scalr4.jpg"><img src="http://www.creationline.com/wp-content/uploads/2012/01/scalr4.jpg" alt="" title="scalr4" width="600" height="328" class="aligncenter size-medium wp-image-1616" /></a></p>
<p>「Scalr」の主な機能<br />
1.	マルチクラウド連携機能（API連携）<br />
2.	仮想サーバのオートスケール機能<br />
3.	スクリプトジョブ管理<br />
4.	フォルトトレランス（Fault tolerance）機能<br />
5.	自動リカバリ、自動バックアップ機能<br />
6.	DNS管理<br />
7.	サーバグループ管理<br />
8.	アクセスキー管理</p>
<p>◯クリエーションラインの提供するサービス<br />
＜コンサルティング・導入支援＞<br />
現状調査及び導入検討支援<br />
ネットワーク設計などシステム構築におけるサイジング、パフォーマンス設計支援<br />
実機検証・性能評価支援<br />
「Scalr」カスタマイズ対応<br />
＜サポート＞<br />
障害対応<br />
セミナー、トレーニングの実施<br />
24時間365日プラチナサポート（オプション）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/cloudintegration/1602/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Foundryを使ってみよう[3]</title>
		<link>http://www.creationline.com/lab/1582</link>
		<comments>http://www.creationline.com/lab/1582#comments</comments>
		<pubDate>Wed, 18 Jan 2012 00:13:27 +0000</pubDate>
		<dc:creator>higuchi</dc:creator>
				<category><![CDATA[CL Lab]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1582</guid>
		<description><![CDATA[Cloud Foundryで利用できるサービス vmc servicesコマンドで、Cloud Foundryで利用できるサービスの一覧が確認できます。 cf@debian:~$ vmc services ============== System Services ============== +------------+---------+---------------------------------------+ &#124; Service &#124; Version &#124; Description &#124; +------------+---------+---------------------------------------+ &#124; mongodb &#124; 1.8 &#124; MongoDB NoSQL store &#124; &#124; mysql &#124; 5.1 &#124; MySQL database service &#124; &#124; postgresql &#124; 9.0 &#124; PostgreSQL database service (vFabric) &#124; &#124; rabbitmq &#124; 2.4 &#124; RabbitMQ [...]]]></description>
			<content:encoded><![CDATA[<h2>Cloud Foundryで利用できるサービス</h2>
<p>vmc servicesコマンドで、Cloud Foundryで利用できるサービスの一覧が確認できます。</p>
<pre>cf@debian:~$ vmc services

============== System Services ==============

+------------+---------+---------------------------------------+
| Service    | Version | Description                           |
+------------+---------+---------------------------------------+
| mongodb    | 1.8     | MongoDB NoSQL store                   |
| mysql      | 5.1     | MySQL database service                |
| postgresql | 9.0     | PostgreSQL database service (vFabric) |
| rabbitmq   | 2.4     | RabbitMQ messaging service            |
| redis      | 2.2     | Redis key-value store service         |
+------------+---------+---------------------------------------+

=========== Provisioned Services ============

cf@debian:~$</pre>
<dl>
<dt>MongoDB</dt>
<dd>ドキュメント指向DB (NoSQL)<br />
<a href="http://www.mongodb.org/">MongoDB</a> (公式サイト,英語)<br />
<a href="http://www.mongodb.jp/">MongoDB JP</a> (日本ユーザー会, 日本語) </dd>
<dt>MySQL</dt>
<dd>RDBMS<br />
<a href="http://www.mysql.com/">MySQL</a> (公式サイト,英語)<br />
<a href="http://www.mysql.gr.jp/">日本MySQLユーザ会</a> (日本語) </dd>
<dt>PostgreSQL</dt>
<dd>RDBMS<br />
<a href="http://www.postgresql.org/">PostgreSQL</a> (公式サイト,英語)<br />
<a href="http://www.postgresql.jp/">日本PostgreSQLユーザ会</a> (日本語) </dd>
<dt>RabbitMQ</dt>
<dd>メッセージ指向ミドルウェア<br />
<a href="http://www.rabbitmq.com/">RabbitMQ</a> (公式サイト,英語) </dd>
<dt>Redis</dt>
<dd>キーバリューストア型DB (NoSQL)<br />
<a href="http://redis.io/">Redis</a> (公式サイト,英語) </dd>
</dl>
<h2>Cloud Foundryで利用できるランタイムの表示</h2>
<p>vmc runtimesコマンドで、Cloud Foundryで利用できるランタイムの一覧が確認できます&gt;。</p>
<pre>cf@debian:~$ vmc runtimes

+--------+-------------+-----------+
| Name   | Description | Version   |
+--------+-------------+-----------+
| java   | Java 6      | 1.6       |
| ruby18 | Ruby 1.8    | 1.8.7     |
| ruby19 | Ruby 1.9    | 1.9.2p180 |
| node   | Node.js     | 0.4.12    |
+--------+-------------+-----------+

cf@debian:~$</pre>
<dl>
<dt>Java 6</dt>
<dd>オブジェクト指向プログラミング言語 / プラットフォーム<br />
<a href="http://java.com/">java.com</a> (公式サイト, 英語)<br />
<a href="http://java.com/ja/">java.com</a> (公式サイト, 日本語) </dd>
<dt>Ruby 1.8 / 1.9</dt>
<dd>オブジェクト指向スクリプト言語<br />
1.9 現安定版 / 1.8 前安定版 (現在では利用は非推奨)<br />
<a href="http://www.ruby-lang.org/">Ruby</a> (公式サイト, 英語)<br />
<a href="http://www.ruby-lang.org/ja/">Ruby</a> (公式サイト, 日本語) </dd>
<dt>Node.js</dt>
<dd>サーバサイドプラットフォーム<br />
<a href="http://nodejs.org/">node.js</a> (公式サイト, 英語)<br />
<a href="http://nodejs.jp/">Node.js 日本ユーザグループ</a> (日本語) </dd>
</dl>
<h2>Cloud Foundryで利用できるフレームワークの表示</h2>
<p>vmc frameworksコマンドで、Cloud Foundryで利用できるフレームワークの一覧が確認できます。</p>
<pre>cf@debian:~$ vmc frameworks

+----------+
| Name     |
+----------+
| grails   |
| rails3   |
| java_web |
| node     |
| lift     |
| spring   |
| sinatra  |
+----------+

cf@debian:~$</pre>
<dl>
<dt>Grails</dt>
<dd>Webアプリケーションフレームワーク (Groovy, Java)<br />
<a href="http://grails.org/">Grails</a> (公式サイト, 英語) </dd>
<dt>Rails3</dt>
<dd>Ruby on Rails3, Webアプリケーションフレームワーク (Ruby)<br />
<a href="http://rubyonrails.org/">Ruby on Rails</a> (公式サイト, 英語) </dd>
<dt>JavaWeb</dt>
<dd>Webアプリケーションフレームワーク (Java)</dd>
<dt>Node.js</dt>
<dd>サーバサイドプラットフォーム<br />
<a href="http://nodejs.org/">node.js</a> (公式サイト, 英語)<br />
<a href="http://nodejs.jp/">Node.js 日本ユーザグループ</a> (日本語) </dd>
<dt>Lift</dt>
<dd>Webアプリケーションフレームワーク (Scala, Java)<br />
<a href="http://liftweb.net/">Lift</a> (公式サイト, 英語) </dd>
<dt>Spring</dt>
<dd>Webアプリケーションフレームワーク (Java)<br />
<a href="http://www.springsource.org/">Spring</a> (公式サイト, 英語)<br />
<a href="http://www.springframework.jp/">日本Springユーザ会</a> (日本語) </dd>
<dt>Sinatra</dt>
<dd>Webアプリケーションフレームワーク (Ruby)<br />
<a href="http://www.sinatrarb.com/">Sinatra</a> (公式サイト, 英語) </dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/lab/1582/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Foundryを使ってみよう[2]</title>
		<link>http://www.creationline.com/lab/1579</link>
		<comments>http://www.creationline.com/lab/1579#comments</comments>
		<pubDate>Wed, 18 Jan 2012 00:13:03 +0000</pubDate>
		<dc:creator>higuchi</dc:creator>
				<category><![CDATA[CL Lab]]></category>

		<guid isPermaLink="false">http://www.creationline.com/?p=1579</guid>
		<description><![CDATA[デプロイしたアプリケーションの管理 デプロイしたウェブアプリケーションはvmcコマンドで管理することができます。 アプリケーションの起動 vmc startコマンドに、起動したいアプリケーション名を引数にして実行します。 cf@debian:~/sample-apps/hello$ vmc start hello Staging Application: OK Starting Application: OK cf@debian:~/sample-apps/hello$ アプリケーションの停止 vmc stopコマンドに、停止したいアプリケーション名を引数にして実行します。 cf@debian:~/sample-apps/hello$ vmc stop hello Stopping Application: OK cf@debian:~/sample-apps/hello$ アプリケーションの再起動 vmc restartコマンドに、再起動したいアプリケーション名を引数にして実行します。 cf@debian:~/sample-apps/hello$ vmc restart hello Stopping Application: OK Staging Application: OK Starting Application: OK cf@debian:~/sample-apps/hello$ なお、停止している場合に再起動を行うと、起動のみを行います。 cf@debian:~/sample-apps/hello$ vmc restart hello Application 'hello' already stopped Staging Application: [...]]]></description>
			<content:encoded><![CDATA[<h2>デプロイしたアプリケーションの管理</h2>
<p>デプロイしたウェブアプリケーションはvmcコマンドで管理することができます。</p>
<h3>アプリケーションの起動</h3>
<p>vmc startコマンドに、起動したいアプリケーション名を引数にして実行します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc start <strong>hello</strong>
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<h3>アプリケーションの停止</h3>
<p>vmc stopコマンドに、停止したいアプリケーション名を引数にして実行します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc stop <strong>hello</strong>
Stopping Application: OK

cf@debian:~/sample-apps/hello$</pre>
<h3>アプリケーションの再起動</h3>
<p>vmc restartコマンドに、再起動したいアプリケーション名を引数にして実行します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc restart <strong>hello</strong>
Stopping Application: OK
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<p>なお、停止している場合に再起動を行うと、起動のみを行います。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc restart <strong>hello</strong>
Application 'hello' already stopped
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<h3>アプリケーションのスケーリング</h3>
<p>vmc statsコマンドにアプリケーション名を引数にして実行することで、現在のインスタンス数、CPU使用率とコア数、メモリ使用量と上限値、ディスク使用量と上限値、起動時間が表示されます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc stats <strong>hello</strong>

+----------+-------------+----------------+--------------+---------------+
| Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime        |
+----------+-------------+----------------+--------------+---------------+
| 0        | 0.0% (4)    | 17.1M (128M)   | 44.0K (2G)   | 0d:0h:14m:56s |
+----------+-------------+----------------+--------------+---------------+

cf@debian:~/sample-apps/hello$</pre>
<p>vmc memコマンドにアプリケーション名とメモリ数(M)を引数にして実行することで、割り当てメモリを変更できます。なお、この際アプリケーションが再起動されることに注意してください。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc mem <strong>hello</strong> <strong>64</strong>
Updating Memory Reservation to 64M: OK
Stopping Application: OK
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<p>メモリ上限値が変更されていることを確認します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc stats <strong>hello</strong>

+----------+-------------+----------------+--------------+--------------+
| Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime       |
+----------+-------------+----------------+--------------+--------------+
| 0        | 0.3% (4)    | 17.0M (64M)    | 40.0K (2G)   | 0d:0h:0m:36s |
+----------+-------------+----------------+--------------+--------------+

cf@debian:~/sample-apps/hello$</pre>
<p>vmc instancesコマンドにアプリケーション名とインスタンス数を引数にして実行することで、インスタンス数を変更できます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc instances <strong>hello</strong> <strong>2</strong>
Scaling Application instances up to 2: OK

cf@debian:~/sample-apps/hello$</pre>
<p>インスタンス数が変更されていることを確認します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc stats <strong>hello</strong>

+----------+-------------+----------------+--------------+--------------+
| Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime       |
+----------+-------------+----------------+--------------+--------------+
| 0        | 0.1% (4)    | 17.0M (64M)    | 40.0K (2G)   | 0d:0h:2m:38s |
| 1        | 0.3% (4)    | 17.0M (64M)    | 40.0K (2G)   | 0d:0h:0m:42s |
+----------+-------------+----------------+--------------+--------------+

cf@debian:~/sample-apps/hello$</pre>
<p>インスタンスを増やした場合、そのぶんメモリ、ディスクを使用することに注意してください。</p>
<h3>ログなどの確認</h3>
<p>vmc logsコマンドにアプリケーション名を引数にして実行することで、<br />
アクセスログなどを確認できます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc logs <strong>hello</strong>
====&gt; logs/stderr.log &lt;==== XXX.XXX.XXX.XXX, 172.30.8.253 - - [13/Jan/2012 13:36:56] "GET / HTTP/1.0" 200 47 0.0009 253 - - [13/Jan/2012 13:36:56] "GET / HTTP/1.0" 200 47 0.0009 ====&gt; logs/stdout.log &lt;==== == Sinatra/1.2.1 has taken the stage on 40937 for production with backup from Thin &gt;&gt; Thin web server (v1.2.11 codename Bat-Shit Crazy)
&gt;&gt; Maximum connections set to 1024
&gt;&gt; Listening on 0.0.0.0:40937, CTRL+C to stop

cf@debian:~/sample-apps/hello$</pre>
<p>vmc crashesコマンドにアプリケーション名を引数にして実行することで、クラッシュ情報を確認できます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc crashes hello

No crashed instances for [hello]

cf@debian:~/sample-apps/hello$</pre>
<p>vmc crashlogsコマンドにアプリケーション名を引数にして実行することで、<br />
詳細なクラッシュ情報を確認できます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc crashlogs hello
====&gt; logs/stderr.log &lt;==== XXX.XXX.XXX.XXX, 172.30.8.253 - - [13/Jan/2012 13:36:56] "GET / HTTP/1.0" 200 47 0.0009 ====&gt; logs/stdout.log &lt;==== == Sinatra/1.2.1 has taken the stage on 40937 for production with backup from Thin &gt;&gt; Thin web server (v1.2.11 codename Bat-Shit Crazy)
&gt;&gt; Maximum connections set to 1024
&gt;&gt; Listening on 0.0.0.0:40937, CTRL+C to stop

cf@debian:~/sample-apps/hello$</pre>
<h3>アプリケーションの削除</h3>
<p>vmc deleteコマンドに削除したいアプリケーション名を引数にして実行します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc delete <strong>hello</strong>
Deleting application [hello]: OK

cf@debian:~/sample-apps/hello$</pre>
<h2>非対話的なデプロイ</h2>
<p>vmc pushコマンドに引数を与えずに実行すると、対話的なデプロイを行いますが、非対話的なデプロイを行うこともできます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc push
Would you like to deploy from the current directory? [Yn]: <strong>y</strong>
Application Name: <strong>hello</strong>
Application Deployed URL [hello.cloudfoundry.com]: <strong>hello-creationline.cloudfoundry.com</strong>
Detected a Sinatra Application, is this correct? [Yn]: <strong>y</strong>
Memory Reservation (64M, 128M, 256M, 512M, 1G, 2G) [128M]:
Creating Application: OK
Would you like to bind any services to 'hello'? [yN]: <strong>n</strong>
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<p>非対話的なデプロイを行うには、vmc pushコマンドに-nオプションを指定し、&#8211;urlオプションでデプロイURLを、&#8211;memオプションで割り当てメモリを指定します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc push <strong>hello</strong> <strong>-n</strong> <strong>--url hello-creationline.cloudfoundry.com</strong> <strong>--mem 128</strong>
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<h2>アプリケーションの更新</h2>
<p>既にデプロイしてあるアプリケーションの更新を行います。</p>
<pre>cf@debian:~/sample-apps/hello$ cat hello.rb
require 'sinatra'
get '/' do
  "Hello from Cloud Foundry"
end
cf@debian:~/sample-apps/hello$</pre>
<p>上記のアプリケーションを下記のように書き換えます。</p>
<pre>cf@debian:~/sample-apps/hello$ cat hello.rb
require 'sinatra'
get '/' do
  "Hello from Cloud Foundry <strong>and creationline</strong>"
end
cf@debian:~/sample-apps/hello$</pre>
<p>vmc updateコマンドに更新したいアプリケーション名を引数にして実行します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc update <strong>hello</strong>
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Stopping Application: OK
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<p>Webブラウザで http://hello-creationline.cloudfoundry.com/ にアクセスします。<br />
以下の表示が得られれば、アプリケーションは正常に更新されています。</p>
<pre>Hello from Cloud Foundry and creationline</pre>
<p>なお、この手順ではアプリケーションの再起動が発生するため、わずかながらダウンタイムが発生していることに注意してください。</p>
<h2>アプリケーションの更新時のダウンタイムをなくすには</h2>
<p>前項ではvmc updateコマンドによるアプリケーションの更新について述べましたが、アプリケーションの再起動によるダウンタイムがあることが問題となります。</p>
<p>本項ではダウンタイムを発生させずにアプリケーションの更新を行う手順について述べます。</p>
<p>現在、アプリケーションhelloが動作しており、これを更新することとします。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc apps

+-------------+----+---------+-------------------------------------+----------+
| Application | #  | Health  | URLS                                | Services |
+-------------+----+---------+-------------------------------------+----------+
| hello       | 1  | RUNNING | hello-creationline.cloudfoundry.com |          |
+-------------+----+---------+-------------------------------------+----------+

cf@debian:~/sample-apps/hello$</pre>
<pre>cf@debian:~/sample-apps/hello$ cat hello.rb
require 'sinatra'
get '/' do
  "Hello from Cloud Foundry and creationline"
end
cf@debian:~/sample-apps/hello$</pre>
<p>上記のアプリケーションを下記のように書き換えます。</p>
<pre>cf@debian:~/sample-apps/hello$ cat hello.rb
require 'sinatra'
get '/' do
  "Hello from Cloud Foundry and creationline <strong>(New)</strong>"
end
cf@debian:~/sample-apps/hello$</pre>
<p>書き換えたアプリケーションを、別のアプリケーション名 hello-new、別のデプロイURI hello-new-creationline.cloudfoundry.comでデプロイします。今回はサービスと結びつけていませんが、サービスを使っている場合は同じ設定にします。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc push <strong>hello-new</strong> -n --url <strong>hello-new-creationline.cloudfoundry.com</strong> --mem 128
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

cf@debian:~/sample-apps/hello$</pre>
<p>新旧のアプリケーションが、別々のデプロイURLで動作していることを確認します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc apps

+-------------+----+---------+-----------------------------------------+----------+
| Application | #  | Health  | URLS                                    | Services |
+-------------+----+---------+-----------------------------------------+----------+
| hello       | 1  | RUNNING | hello-creationline.cloudfoundry.com     |          |
| hello-new   | 1  | RUNNING | hello-new-creationline.cloudfoundry.com |          |
+-------------+----+---------+-----------------------------------------+----------+

cf@debian:~/sample-apps/hello$</pre>
<p>Webブラウザで http://hello-new-creationline.cloudfoundry.com/ にアクセスします。以下の表示が得られれば、デプロイした新アプリケーションhello-newは正常に動作しています。</p>
<pre>Hello from Cloud Foundry and creationline (New)</pre>
<p>vmc mapコマンドで、新アプリケーションhello-newを元デプロイURLに結びつけます。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc map hello-new hello-creationline.cloudfoundry.com
Successfully mapped url

cf@debian:~/sample-apps/hello$</pre>
<p>これにより、デプロイURI hello-creationline.cloudfoundry.comは、新旧2つのアプリケーションに結びついたことになります。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc apps

+-------------+----+---------+------------------------------------------------------------------------------+----------+
| Application | #  | Health  | URLS                                                                         | Services |
+-------------+----+---------+------------------------------------------------------------------------------+----------+
| hello       | 1  | RUNNING | hello-creationline.cloudfoundry.com                                          |          |
| hello-new   | 1  | RUNNING | hello-creationline.cloudfoundry.com, hello-new-creationline.cloudfoundry.com |          |
+-------------+----+---------+------------------------------------------------------------------------------+----------+

cf@debian:~/sample-apps/hello$</pre>
<p>この状態でWebブラウザでhttp://hello-creationline.cloudfoundry.com/にアクセスすると、そのたびに、旧アプリケーションhelloの実行結果である</p>
<pre>Hello from Cloud Foundry and creationline</pre>
<p>と、新アプリケーションhello-newの実行結果である</p>
<pre>Hello from Cloud Foundry and creationline (New)</pre>
<p>とのどちらかが表示されることになります。</p>
<p>この状態が確認できたら、vmc unmapコマンドで、旧アプリケーションhelloを元デプロイURLから切り離します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc unmap hello hello-creationline.cloudfoundry.com
Successfully unmapped url

cf@debian:~/sample-apps/hello$</pre>
<pre>cf@debian:~/sample-apps/hello$ vmc apps

+-------------+----+---------+------------------------------------------------------------------------------+----------+
| Application | #  | Health  | URLS                                                                         | Services |
+-------------+----+---------+------------------------------------------------------------------------------+----------+
| hello       | 1  | RUNNING |                                                                              |          |
| hello-new   | 1  | RUNNING | hello-creationline.cloudfoundry.com, hello-new-creationline.cloudfoundry.com |          |
+-------------+----+---------+------------------------------------------------------------------------------+----------+

cf@debian:~/sample-apps/hello$</pre>
<p>なお、デプロイURLからは切り離されましたが、旧アプリケーションhelloに結びついたセッションが残っている場合は、引き続き旧アプリケーションhelloが<br />
利用されます。新しいセッションは新アプリケーションhello-newが用いられ、旧アプリケーションhelloへの新規流入は遮断される形となります。</p>
<p>Webブラウザで http://hello-creationline.cloudfoundry.com/ に何度アクセスしても、新アプリケーションhello-newの結果しか得られない、つまり、元デプロイURLで新アプリケーションhello-newが常に使われていることを確認します。</p>
<pre>Hello from Cloud Foundry and creationline (New)</pre>
<p>vmc unmapコマンドで、新アプリケーションhello-newを新デプロイURLから切り離します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc unmap hello-new hello-new-creationline.cloudfoundry.com
Successfully unmapped url

cf@debian:~/sample-apps/hello$</pre>
<pre>cf@debian:~/sample-apps/hello$ vmc apps

+-------------+----+---------+-------------------------------------+----------+
| Application | #  | Health  | URLS                                | Services |
+-------------+----+---------+-------------------------------------+----------+
| hello       | 1  | RUNNING |                                     |          |
| hello-new   | 1  | RUNNING | hello-creationline.cloudfoundry.com |          |
+-------------+----+---------+-------------------------------------+----------+

cf@debian:~/sample-apps/hello$</pre>
<p>アクセス状況などを確認し、旧アプリケーションhelloに結びついたセッションが<br />
完全になくなったことが確認できたら、vmc deleteコマンドで<br />
旧アプリケーションhelloを削除します。</p>
<pre>cf@debian:~/sample-apps/hello$ vmc delete hello
Deleting application [hello]: OK

cf@debian:~/sample-apps/hello$</pre>
<pre>cf@debian:~/sample-apps/hello$ vmc apps

+-------------+----+---------+-------------------------------------+----------+
| Application | #  | Health  | URLS                                | Services |
+-------------+----+---------+-------------------------------------+----------+
| hello-new   | 1  | RUNNING | hello-creationline.cloudfoundry.com |          |
+-------------+----+---------+-------------------------------------+----------+

cf@debian:~/sample-apps/hello$</pre>
<p>以上により、ダウンタイムなしでアプリケーションを更新することができました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creationline.com/lab/1579/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

