OpenShift Express, Flex, PowerはOpenShiftへ。

2012年5月6日 | by | cloudfoundry, openshift

5/5の更新が抜けてしまいました。あちゃー。
ということで、5/6は複数まとめて書く予定です。さて、今回はOpenShiftの話。

先日オープンソース化されたOpenShiftですが、オープン化前まではRedHatが提供するサービスとして、Express、Flex、Powerの3種類が提供されていました。

参考:注目のPaaSを一挙に紹介! ~Cloud Foundry、OpenShift、Herokuなど

シンプルな共有ホスティングモデルだったExpress
専用ホスティングモデルでオートスケールにも対応していたFlex
より高度で複雑なアプリケーションも動作可能なPower

という位置づけでしたが、具体的に何をどう使っていけば良いのか、曖昧で分かりづらかったのも事実。

そこで今回、オープンソース化と合わせる形で、3サービスを統合し、新たに「OpenShift」としてサービスが提供されるようになりました。

Recapping the OpenShift Origin Launch and What Happened to Express and Flex?

Contrary to what was written – Express, Flex and Power are no longer part of the OpenShift vernacular. It’s just good ‘ol OpenShift moving forward. In fact, astute visitors to openshift.com noticed we unified the services a few weeks ago. We actually first started talking about this unification of services way back in January.

方向性自体は今年の1月の時点で示されていたようです

現時点でOpenShiftのサイトにはExpressやFlexに関する記述はなくなっており、トライアルでもシンプルな1サービスとして利用できるようになっています。RedHatの日本語ページだとまだ記述が残っているので、早く修正してほしいところですね:p

これで、Cloud Foundryにおけるcloudfoundry.comと、OpenShift OriginにおけるOpenShiftが同じ位置づけになったことになります。

        オープンソースプロジェクトで開発
      ↓                 ↓
 独自サービスで提供   | プライベートクラウド向けにベンダーに提供

ビジネスモデルもほぼ同じ。
今後注目すべきなのは、

・開発速度(両社内での体制や、他の開発者をどうやって巻き込んでいくか・・など)
・ベンダーをいかにしてエコシステムに巻き込むか
・既存ソリューションとの連携

あたりでしょうか。
githubを見る限り、OpenShiftのほうが開発者の頭数を揃えているように思えます。
ただ、Cloud Foundryもオープンソースプロジェクトとして1年先行している分、開発体制について試行錯誤しており、つい先日もCloudFoundry.orgの新体制が発表されました。実際4月頃から開発速度が目に見えて向上しています。

ベンダーの巻き込みについては、1年分のアドバンテージがある分Cloud Foundryが先行していますね。RedHatがどうやって周囲を巻き込んでいくかが注目です。

既存ソリューションについては、両者得意分野が異なるので、非常に興味深いところです。仮想化についてシェアをもつVMWareと、OSとしてシェアをもつRedHat。一枚レイヤーの違う両社がどういう手を打っていくのか、注目していきたいところですね。

1 Comment »

Software Design 2012年5月号で自宅PaaSを作ろう

2012年5月4日 | by | cloudfoundry

このblogを見ている人は、もうほとんどの方がチェック済のような気はしますが改めてご紹介。

 

Software Design誌 2012年5月号にて、@diceken@hamaknが、第1特集を書いてます。

クラウドの力試し なぜCloud FoundryのPaaSがお勧めなのか?
第1章 PaaSが無視できない理由 (@diceken)
第2章 はじめてのCloud Foundry構築とデプロイ (@hamakn)
第3章 Cloud Foundryの中身を知る (@hamakn)
第4章 Cloud Foundryの実力を測る (@hamakn)
第5章 XaaS時代に、エンジニアはどうするべきか (@diceken)

どの章もとても良いものなのですが、特に第4章がおすすめ。複数ノードでのCloud Foundry構築方法を解説しています。
複数ノードの構築はウェブ上にもそれほど情報が多くないため、とても参考になると思います。

Cloud Foundryを深く知るためにも、是非お勧めしたい特集です。

No Comments »

【小ネタ】Cloud FoundryでMinecraft Serverを動かす!?

2012年5月3日 | by | cloudfoundry

ついにCloud FoundryにWorker(Standalone app)が実装された!ので、早速触ってみた

Standalone Applicationが実装されたことにより、Webで待ち受けないバックグラウンドのアプリケーションの動作が可能になりました。じゃあ、何をどこまで動かせるんだろう?・・・ということで、真っ先に気になったのが、個人的に去年よりどっぷりハマっていたゲーム、Minecraft

Minecraftの説明は詳しいサイトに譲るとして、このMinecraftのマルチプレイ用のサーバーをCloud Foundryにデプロイしてみたらどうなるんだろうかと。

・・・ということで。

Minecraftの公式より、minecraft_server.jarをダウンロード。
そして任意のフォルダに突っ込んで、vmc push。

$vmc push
Would you like to deploy from the current directory? [Yn]: Y
Application Name: minecraft_test
Detected a Standalone Application, is this correct? [Yn]: Y
1: java
2: node
3: node06
4: ruby18
5: ruby19

当然javaアプリケーションなのでjavaを選択。

Select Runtime [ja va]: 1
Selected java

そして起動のコマンドはMinecraft公式にあるやつをそのままに。

Start Command: java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Application Deployed URL [None]:
Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]: 1G
How many instances? [1]:
Bind existing services to 'minecraft_test'? [yN]: N
Create services to bind to 'minecraft_test'? [yN]: N
Would you like to save this configuration? [yN]: N
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application 'minecraft_test': OK
Starting Application 'minecraft_test': OK

・・・とくにエラー等出てないようにみえますね。

ログを見てみましょうか。

$vmc logs minecraft_test
2012-05-02 15:02:23 [INFO] Starting minecraft server version 1.2.5
2012-05-02 15:02:23 [INFO] Loading properties
2012-05-02 15:02:23 [WARNING] server.properties does not exist
2012-05-02 15:02:23 [INFO] Generating new properties file
2012-05-02 15:02:23 [INFO] Starting Minecraft server on *:25565
2012-05-02 15:02:23 [WARNING] Failed to load ban list: java.io.FileNotFoundException: banned-players.txt (No such file or directory)
2012-05-02 15:02:23 [WARNING] Failed to load ip ban list: java.io.FileNotFoundException: banned-ips.txt (No such file or directory)
2012-05-02 15:02:23 [WARNING] Failed to load operators list: java.io.FileNotFoundException: ops.txt (No such file or directory)
2012-05-02 15:02:23 [WARNING] Failed to load white-list: java.io.FileNotFoundException: white-list.txt (No such file or directory)
2012-05-02 15:02:23 [INFO] Preparing level "world"
2012-05-02 15:02:23 [INFO] Default game type: 0
2012-05-02 15:02:24 [INFO] Preparing start region for level 0
2012-05-02 15:02:25 [INFO] Preparing spawn area: 24%
2012-05-02 15:02:26 [INFO] Preparing spawn area: 48%
2012-05-02 15:02:27 [INFO] Preparing spawn area: 77%
2012-05-02 15:02:28 [INFO] Done (5.235s)! For help, type "help" or "?"

・・・おおお。
動いてるよ、Minecraft Serverが動いてるよ!
これでMaaS(Minecraft as a Service)が実現・・・!

とココまで書いたところで今回のオチですが、Cloud Foundryの仕組み上、Minecraft ClientからこのServerに繋ぎに行く方法がありません。というわけで、動きはしたけど使えません!
いや、最初から分かっててやってたんですけどもw

もし仮に接続する方法があったとしても、おそらく大した速度は望めず、ストレスの溜まるゲームになってしまう可能性が高いと思われます。PaaS側はMinecraftのようなディスクアクセスを考慮してないでしょうからね。PaaS側でbanされる可能性すらあります。
(Minecraftはディスクへのアクセス頻度が多く、多人数プレイだとRAMDiskが必要になるくらいの負荷になる)
今回に限って言えば、そもそもClientが接続できないので、ほとんどディスク負荷は発生していないはずですが。

ひとまず、こんなものも動きはしますよというお話でした。

No Comments »

ついにCloud FoundryにWorker(Standalone app)が実装された!ので、早速触ってみた

2012年5月2日 | by | cloudfoundry

Cloud Foundryの最大の欠点。それは、一般的にはWorkerと呼ばれる、バックグラウンドで処理を行う仕組みを備えていないことでした。ライバルであるHerokuやWindows Azure、そしてOpenShiftはWorker機能を備えています。

Cloud Foundryを愛し、普及に努めるCloud Foundryエバンジェリストの方々は、「バックグラウンドの処理はどうやればいいの?」と聞かれる度に、苦々しい思いをしてきたことでしょう。

でも、そんな日々は今日でおしまいです。
cloudfoundry.comに、バックグラウンド処理を行える仕組みが実装されました。

Cloud Foundry Improves Support For Background Processing

みんなが待ち望んでいたこの機能。早速使ってみることにしましょう。

Standalone appを作ってみる!

AzureだとWorker Role、HerokuだとWorker Dynoと呼ぶ、このバックグラウンド処理の仕組みですが、Cloud Foundryでは”Standalone”アプリとしてデプロイします。RailsアプリやJavaアプリと同様、DEAで動くわけですね。

この記事の執筆段階では、githubのvcapレポジトリにはStandaloneに関する更新は来ていません。とりあえず試したいという場合は、cloudfoundry.comを使う必要があります。CloudFoundry派生PaaSや自前PaaSで使うには、もう少し待つ必要がありそうですね。

下準備

Standaloneでデプロイするには、vmcの0.3.17以上が必要です。
まずは、vmcのアップデートをしておきましょう。

gem install vmc

オプション付けずにインストールを行うと、最新の0.3.17以上が入るはずです。
インストール後、vmc targetでapi.cloudfoundry.comを選んでおいてくださいね。もちろんcloudfoundry.comが使えない人は、先に登録してくるのを忘れずに

簡単なアプリをつくる

ひとまずRubyで簡単なアプリを作ってみましょう。
任意の名前のフォルダを作成し、その中にhello-world.rbを作成。

loop {
  puts 'Hello world'
  sleep 5
}

5秒ごとに、Hello worldを出力するコードです。

そして、vmc push。

$vmc push helloworld_udcp
Would you like to deploy from the current directory? [Yn]:
Detected a Standalone Application, is this correct? [Yn]:
1: java
2: node
3: node06
4: ruby18
5: ruby19
Select Runtime [ruby18]:
Selected ruby18
Start Command: ruby hello-world.rb
Application Deployed URL [None]:
Memory reservation (128M, 256M, 512M, 1G, 2G) [128M]:
How many instances? [1]:
Create services to bind to 'helloworld_udcp'? [yN]:
Would you like to save this configuration? [yN]: y
Manifest written to manifest.yml.
Creating Application: OK
Uploading Application:
Checking for available resources: OK
Packing application: OK
Uploading (1K): OK
Push Status: OK
Staging Application 'helloworld_udcp': OK
Starting Application 'helloworld_udcp': OK

特にフレームワーク等を使っていない限り、Detected a Standalone Applicationと出るはずです。
違う物と認識された場合、直接Standalone Applicationを指定してあげましょう。

ランタイムは、現在の所Java, Node.js 0.4 or 0.6, Ruby 1.8 or 1.9が選択できるようです。
そして重要なのがStart Command。今回はRubyでhello-world.rbを動かしてやるので
ruby hello-world.rb
と指定しています。

動作確認

さて、先ほどのアプリが動作しているかどうか確認しましょう。

vmc logs helloworld_udcp
====> /logs/stdout.log <====

Hello world
Hello world

順調に動作していることがわかりますね。

インスタンスの増減も簡単

動作するインスタンス数を変更するのも非常に簡単です。

$ vmc instances helloworld_udcp +2
Scaling Application instances up to 3: OK
$ vmc instances helloworld_udcp

+-------+---------+--------------------+
| Index | State   | Start Time         |
+-------+---------+--------------------+
| 0     | RUNNING | 05/02/2012 04:47PM |
| 1     | RUNNING | 05/02/2012 04:48PM |
| 2     | RUNNING | 05/02/2012 04:48PM |
+-------+---------+--------------------+

すばらしい。

動作確認はインスタンス番号を指定してあげればOK。

vmc logs helloworld --instance 0
====> /logs/stdout.log <====
Hello world
Hello world
vmc logs helloworld --instance 1
====> /logs/stdout.log <====
Hello world
Hello world

Standaloneアプリケーションを備えたことで、いよいよCloud Foundryも本格的に使えるようになってきたと言えるのではないでしょうか。ご覧のように、Standaloneアプリケーションを使うのは非常に簡単です。
フロントエンドで処理しきれない重たいタスクは、RabbitMQを使ってキューに入れておき、Standaloneアプリケーションで処理。キューの処理が追いつかない場合は、Standaloneアプリケーションのインスタンス数を増やしてあげれば、容易にスケールさせることができます。キューの処理具合を見ながら、動的にインスタンス数を増減させる仕組みを作ってあげるとより便利そうですね。

Cloud Foundryの可能性を大きく広げるStandaloneアプリケーション。是非触ってみるといいんじゃないでしょうか。

No Comments »

Stackato 1.2リリース

2012年5月2日 | by | cloudfoundry

Cloud Foundryから派生したプロダクトの中でも、活発にアップデートが行われているActive StateのStackatoですが、数日前にv1.2がリリースされたようです。

詳細はこちらから。
Release Notes – Stackato 1.2 documentation

主だった変更点としては
・RubyやNode.jsなどなど、各種ランタイムのバージョンアップ
・HerokuのBuildpackをサポート。Clojure,Go,Java,Play!,PythonのビルトインBuildpackもあり
・stackato push|updateが、同時にstaging.logをtailしてくれるようになった(Herokuみたいにね!)
・ユーザーグループのサポート
・ユーザー単位・グループ単位での制限をサポート
・OpenStackのオートスケーリングをサポート

あたりでしょうか。

あとは細かな改善がいろいろと入っているようです。

HerokuのBuildpackは任意の環境を追加できる仕組みですが、それをサポートしたようです。
マイナー言語のサポート追加というよりは、メジャー言語のバージョン対応を広げるという意味で有用そうですね。たとえばPaaS側がRuby1.9.2までしかサポートしてないけど、どうしても1.9.3が使いたいんだ!というケースは、結構ありそうですし。

ユーザーグループのサポートや、ユーザー・グループ単位での制限追加は、Cloud Foundry本体のほうで追加されたACMコンポーネント(Access Control Manager)によるものと思われます。

OpenStackのオートスケーリングサポートについては、どのような実装になっているのか気になるところです。
誰か調べてくれないかな:p

No Comments »

Cloud Foundry Eclipse Pluginのバージョン1.0リリース

2012年5月1日 | by | cloudfoundry

CLOUD FOUNDRY INTEGRATION FOR ECLIPSE 1.0 RELEASED

というわけで、バージョン1.0が出ていたようです。
STSといえば、以前このblogでも試そうとしました・・・が、そのときは何かが問題だったのか、上手く利用することができませんでした。
EclipseでCloud Foundryにデプロイしようとしてうまくいかなかった

1.0になったことで、おそらくこのあたりの問題も解消されているものと思われます。
改めてこちらでも動作を確認し、レポートしたいと思います。

No Comments »

オープンになったOpenShiftの情報まとめ

2012年4月30日 | by | openshift

予告通り、OpenShiftがオープンソースとして公開されました。

OpenShiftのサイト上に詳細な情報が載っています。
自前PaaSのセットアップ方法からアーキテクチャ概要まで、必要な情報は一通り揃っているように見えますね。
https://openshift.redhat.com/community/open-source
とりあえず試してみたい人は、こちらの情報を使って進めていくと良いでしょう。

開発はGitHubで行われているようです。
https://github.com/openshift
OpenShiftの中心となるcrankcaseがあるのは当然ですが、その他大量のサンプルコードがあるのが目を引きます。

各言語ごとのサンプルに加え、WordPressやMediaWiki、SugarCRMなどのメジャーなPHPアプリケーション、Rails、Sinatra、CakePHPやDrupalのようなフレームワークを使ったサンプルコードなどなど、ユーザーが考える「とりあえず動かしてみたいもの」がほぼ全て網羅されている感じですね。
このように、あらかじめ動かせるサンプルが用意されているとより安心感が高まるので良い取り組みといえるでしょう。

Cloud FoundryにおけるMicro Cloud Foundryのように、一通り揃ったセットがLiveCDという形で提供されており、仮想マシン上やCD/USBブートで簡単に試すことができるようです。
https://openshift.redhat.com/app/opensource/download

GWはOpenShiftで色々と楽しめそうですね!:)

No Comments »

OpenShiftがいよいよオープンになります

2012年4月29日 | by | openshift

みなさんこんにちは、jacoです。
このブログ、今の所Cloud Foundryに関する記事がほとんどですが、別にCloud Foundry縛りをしているわけではないのです。単に提供できる手持ちネタがCloud Foundryに関するものばかりという、ただそれだけの理由です。

さてそんなわけで、今回はCloud Foundryの対抗馬になる(かもしれない)、RedHatのOpenShiftの話。

Red Hat、クラウド向け新製品『CloudForms』と『OpenShift』を発表

RedHatのクラウドソリューション戦略の一つとして発表された、オープンソースのPaaS、OpenShift。
ただこれまでの所、利用できるのはRedHatが運営しているサイトのみでコードはオープンにされておらず、Cloud Foundryのように自前環境にセットアップすることはできませんでした。

発表されてから約1年。「どこがOpenなの?」という意見もちらほら聞く状態でしたが、先日配信されたニュースレターによると、いよいよ本当にオープンソースになるようです。

Open Cloud ConfのPre-conference Workshopsのタイムスケジュールを見てみると、OpenShiftのオープンソース化に関するセッションが設けられているのが分かります。

Build your own PaaS, just like Red Hat’s
Krishna Raman & Mark Atwood – It’s finally here! OpenShift is built on open source and here’s your chance to learn how to take the code and projects that power OpenShift to build your own PaaS. Come check out this session with Krishna and Mark from the OpenShift team to learn where to download, how to install, and how to configure and deploy onto your local machine. We’ll cover the fundamentals of how to deploy apps onto your PaaS to make it do something useful for you. We’ll cover ways to extend your PaaS by adding support for customized middleware, databases, frameworks and languages. Bring your laptop because we got everything you need ready to rock on a USB stick with your name on it. If you are an open source enthusiast, want to learn how to contribute back to the project or just curious about the code that powers OpenShift, then this is the talk for you!

OpenShift + OpenStack + Fedora = Awesome!
Chris Wright & Mark Atwood – The code that powers Red Hat’s OpenShift platform as a service is now open source. OpenStack, is the fastest growing IaaS project around. Fedora, is the fast moving Linux distro packed full of cloud and virt awesomeness. Combining these together creates a killer combination of IaaS and PaaS goodness. Join this session with Red Hatters Chris and Mark to learn what OpenStack is, what’s new in the Essex release and how to get an OpenStack instance up and running on Fedora in no time at all. You don’t need a datacenter to get started with this baby! We’ll then cap it off by deploying and configuring the code that powers OpenShift on top of it. What you end up with is a soup to nuts open source cloud. It doesn’t get any better then that!

Awesome!

ということで、いよいよ明らかになるOpenShiftの実力。
このブログでも逐次取り上げていく予定です。

No Comments »

植村さんが記事をかかなかった理由

2012年4月29日 | by | blog

jacoです。GW大更新キャンペーン・・・だったはずなんですが、あれ、植村さん記事書いて無くないですか?

というわけで、何があったのか聞いてみました。

<jacopen> なんかここの植村さんがPS3と3DSまとめて買ったらしく
<jacopen> なにこの貴族
<jacopen> 記事書かずにFEやってたとか!
<u1> 勢い余ってamazonでぽちった
<jacopen> まじこの人手ごわいシミュレーション
<u1> FE、攻略終わった
<jacopen> 買ってくるぞと勇ましく
<diceken> 植村さんは馬鹿だなあ(本音
<u1> だって、欲しかったのだもの
<u1> 仕方が無い
<diceken> それなら仕方ない

それなら仕方ないですね!

ちなにみこのあともやるゲームが控えているらしく、GW中に植村さんの記事が上がるかどうか分からなくなってきましたね。

あ、ちなみに私は宣言通り欠かさず書きますんで!

No Comments »

PHPからServices(MySQL,PostgreSQL,MongoDB,etc…)の情報を取得する方法

2012年4月28日 | by | #cfcrjp, cloudfoundry

こんにちは、jacoです。
GW大更新キャンペーンということで、さっそく。

未だ利用者が非常に多く需要のあるPHPですが、この記事を書いてる現在でもcloudfoundry.comで利用できなかったり、既存のPHPアプリケーションを動かすにあたって必要なとある要素が欠けており(これについてはまた後日)と、Cloud Foundryにおいてはイマイチ扱いがよろしくありません。

そんな不遇なPHPを、このGWを使って何とか使いやすくしていこうと思います。
今回は、PHPでMySQLやPostgreSQLなどの接続方法を書いてみます。

DBのコンフィグはどうやったら取れる?

Cloud FoundryでPHPを使おうと思った時、まず最初につまづくのがDBの情報をどうやって取得するかという点だと思います。
Railsを使う場合、デプロイ時に自動でdatabase.ymlを生成してくれたりと、特に気にすること無くDBを利用できるのですが、PHPの場合はそのような仕組みが用意されていません。
mysql_connectやmysqli_connectを使うにしろ、PDOを使うにしろ、このあたりの情報が分からないと接続できませんよね。

そんなわけで困ったときのphpinfo()を実行してみます。
phpinfo()を記述したPHPファイルをvmc pushし、mysqlをバインド。すると・・・


はい、とれましたー。
このように、DB名からホスト名、ユーザー名、パスワードが取得できます。

もちろんこの情報をコピペしても良いのですが、アプリを作る度にphpinfoするのも手間です。
$_SERVER["VCAP_SERVICES"]に情報が格納されていますので、自動で取ってこれるようにしましょう。

<?php
$services = json_decode($_SERVER["VCAP_SERVICES"],true);
$mysql_config = $services["mysql-5.1"][0]["credentials"];

$username = $mysql_config["username"];
$password = $mysql_config["password"];
$hostname = $mysql_config["hostname"];
$port = $mysql_config["port"];
$db = $mysql_config["name"];

あとは各変数をmysql_connectなりPDOなりに食わせてあげればOK。
MySQLだけでなく、PostgreSQLやMongoDBも同様の手法で取得できます。

関連記事はこちら。
CloudFoundryを使って静的ファイルを公開する2 php利用編
CloudFoundry上のphpアプリの動作の仕組み
CloudFoundryのphpアプリの動作の仕組み2 なぜapache2とmod_phpを使っているのか?

No Comments »