Cloud Foundryの中の1つ、Pivotal Web Servicesを利用してみる

Cloud Foundryってなんじゃらほい?

わしもじゃ、わしもじゃ、みんな。ということでCloud Foundryです。

Cloud Foundryって?

Wikipediaによると、 

Cloud Foundry とは、オープンソースPlatform as a Service(PaaS)ソフトウェアの名称である。当初VMWare社が開発を行っていたが、その後EMC社とVMWare社によって設立されたPivotal Software社のガバナンスを経て、2014年12月、Pivotal、EMC、VMWareIBM、HP、SAP、NTT、Fujitsu等が参加するCloud Foundry Foundationに移管された

主にRubyGoで記述されている。

Cloud Foundry - Wikipedia

オープンソースのPaaS(Platform as a Service)というものらしいです。

【初心者向け】IaaS PaaS SaaSそれぞれの違いとVPSとの比較 - Qiita

⇧  IaaS PaaS SaaSの違いは上記サイト様が詳しいです。

 

PaaSは、自分でDB(データベース)やプログラムの実行環境(Webサーバやアプリケーションサーバなどなど)などを構築せずとも用意してくれているため、ソースコードがあれば良いということみたいです。

その代わり、いろいろ制限はあるようですがお手軽に本番環境にデプロイができるってことみたいですね。

Pivotal Web Services

Cloud Foundryの中でもいろいろあるみたいですが、今回は、Pivotal Web Servicesのものを利用していきたいと思います。

Pivotal Web Services | Home にアクセス。「SIGN UP FOR FREE」をクリック。

f:id:ts0818:20171024210140j:plain

Pivotal Web Servicesを利用するために、Pivotalのアカウントを作成します。

項目を入力していきます。パスワードの条件が結構厳しいです。

f:id:ts0818:20171024210318j:plain

 全部入力できたら、「Sign Up」をクリック。

 

f:id:ts0818:20171024210804j:plain

 登録したメールアドレスにメッセージを送ったよ、となるので、 

f:id:ts0818:20171024211023j:plain

届いたメールを開いて、「Verify your email address」というリンクをクリック。

f:id:ts0818:20171024211123j:plain

「I have read and agree to the Terms of Service for Pivotal Web Services」にチェックをしたら、「Next: Claim Your Trial」をクリック。

f:id:ts0818:20171024211221j:plain

「Mobile Number_*」に携帯の番号を入力し、「Send me my code」をクリック。

f:id:ts0818:20171024211357j:plain

携帯のSMSにショートメッセージが届くので確認し、ショートメッセージに記載された番号を入力し、「Submit」をクリック。

f:id:ts0818:20171024211532j:plain

プロジェクトの名前を適当に入力ですが、誰かに使われてるのは駄目っぽいです。

f:id:ts0818:20171024211632j:plain

被らないプロジェクト名って、厳しいっすね...自分は自分のはてなブログのタイトルにしました。「Start Free Trial」をクリック。

f:id:ts0818:20171024211731j:plain

「GET STARTED」をクリックしたら、ブラウザの別タブで開かれるページに飛ばされて

f:id:ts0818:20171024211859j:plain

こんなページが開かれますが、もとのタブのページに戻ると、

f:id:ts0818:20171024212013j:plain

ダッシュボード画面が開かれてました、わ~い。

f:id:ts0818:20171024212145j:plain

 

Cloud Foundry CLIのインストール

Cloud Foundryでは、 アプリケーションのデプロイなどをコマンドラインで管理するために「CLIコマンドラインインターフェイス)」を利用していくようです。

Getting Started | Download | Known Issues | Bugs/Feature Requests | Plugin Development | Contributing

CF logo

Cloud Foundry CLI

GitHub version Documentation Command help pages Slack License Code Climate

Cloud Foundry CLI is the official command line client for Cloud Foundry. Latest help of each command is here (or run cf help); Further documentation is at the docs page for the CLI.

If you have any questions, ask away on the #cli channel in our Slack community and the cf-dev mailing list, or open a GitHub issue. You can follow our development progress on Pivotal Tracker.

cloudfoundry/cli: The official command line client for Cloud Foundry

⇧  上記サイトのようなところからインストールもできるようですが、

「Pivotal Web Service」のダッシュボードからインストールできるみたいです。

左のサイドバーから「Tools」を選択し、OSのバージョンを選んで、その中の「Download」の文字をクリックします(分かりづっらいですね...)

f:id:ts0818:20171024213620j:plain

ダウンロードされたzipファイルの中の「cf_installer.exe」をダブルクリックすると、

f:id:ts0818:20171024214443j:plain

まずは、展開(解凍)してくださいと怒られるので、「すべて展開(X)」。

f:id:ts0818:20171024214523j:plain

適当な場所を決めて、「展開(E)」。

f:id:ts0818:20171024214627j:plain

展開先で今度こそ、インストーラーを起動。

f:id:ts0818:20171024214712j:plain

個人で使う分には、「Anyone who uses the computer(run as administrator to enable)」で問題ないのかな、デフォルトだし。「Next>」をクリック。

f:id:ts0818:20171024214756j:plain

インストール先もデフォルトで。「Next>」をクリック。

f:id:ts0818:20171024214949j:plain

「Install」をクリック。

f:id:ts0818:20171024215024j:plain

「Finish」をクリック。

f:id:ts0818:20171024215052j:plain

コマンドプロンプトを起動して確認。

cf -v

f:id:ts0818:20171024215237j:plain

インストールされたようです。

PWS(Pivotal Web Service)にログイン。Email、パスワードはPivotalアカウント作成時に登録したものを入力します。

cf login -a api.run.pivotal.io

f:id:ts0818:20171024215750j:plain

これで認証されたようです。

ローカルで作成したSpring Boot のプロジェクトのjarファイルをローカル側で作成しておいて、「cf push」コマンドでデプロイできるようです。

ローカルで作成していたSpring Boot のプロジェクトで「mvnw」ファイルのあるディレクトリを確認。

f:id:ts0818:20171024221533j:plain

「はじめてのSpringBoot改訂版」で

./mvnw clean package -DskipTests=true

って書いてあったので、Windowsなら

mvnw.cmd clean package -DskipTests=true

でいけるっしょ、と思いきや

f:id:ts0818:20171024224504j:plain

f:id:ts0818:20171024225104j:plain

はい、エラー。ググってもよく分からずですが、

理由は分かりませんが、『-DskipTests=true』を無くして、

mvnw.cmd clean package

だといけました。

f:id:ts0818:20171024224826j:plain

f:id:ts0818:20171024225145j:plain

Spring Boot のプロジェクトのtargetフォルダに「プロジェクト名-0.0.1-SNAPSHOT.jar」というjarファイルができています。

f:id:ts0818:20171024223937j:plain

Pivotal Web Serviceにデプロイしてみます。

cf push hajiboot-ts0818 -p targe
/hajiboot-thymeleaf-0.0.1-SNAPSHOT.jar -m 256m

エラー!

f:id:ts0818:20171024230611j:plain

「cf logs hajiboot-ts0818 --recent」して詳細を確認できるってことなんで実行してみたんですが、

f:id:ts0818:20171024231417j:plain 

2017-10-24T22:57:23.55+0900 [APP/PROC/WEB/0] ERR Cannot calcu
late JVM memory configuration: There is insufficient memory rema
ining for heap. Memory limit 256M is less than allocated memory
701887K (-XX:ReservedCodeCacheSize=240M, -XX:MaxDirectMemorySize
=10M, -XX:MaxMetaspaceSize=118253K, -XX:CompressedClassSpaceSize
=20434K, -Xss1M * 300 threads)

なんかメモリが足りてない的な感じですかね?一応デプロイされてるようですが、「CRASHED」ってなってる、クラッシュ、クラッシュ・バンディクーっていつのまにかPS4でも出ててたんですね....すみません脱線しました。

f:id:ts0818:20171024233738j:plain

Insufficient memory when using Java Buildpack 4.0+ – All Help & Support によると、

Environment

  • Pivotal Cloud Foundry® (PCF) 1.9.x, 1.10.x, 1.11.x
  • Java Buildpack 4.0+

Symptom

After upgrading to java buildpack 4.0+, applications that previously ran with smaller memory limit are now getting the error "insufficient memory". 

Error Message: 

2017-08-11T18:26:19.30+0000 [APP/PROC/WEB/0]ERR Cannot calculate JVM memory configuration: 
There is insufficient memory remaining for heap.
Memory limit 512M is less than allocated memory 673748K
(-XX:ReservedCodeCacheSize=240M, -XX:MaxDirectMemorySize=10M, -XX:MaxMetaspaceSize=93144K,
-XX:CompressedClassSpaceSize=17404K, -Xss1M * 300 threads)

Cause 

Java buildpack 4.0 has an enhancement to the JVM memory calculation and the new memory calculator now accounts for several different memory regions.

One major result of accounting for all of these memory regions is the likelihood that applications which previously ran in small containers (512M or less) will be unable to run.  

Pivotal Cloud Foundry 1.9.x以上を利用してる場合に、512MBよりメモリが少ないのはダメってことですかね?

改善方法に、

Resolution

The simplest and recommended solution to this problem is to increase the available memory to your application.

This can be done via "cf scale" command:

cf scale APP_NAME [-i INSTANCES] [-k DISK] [-m MEMORY] [-f]

Example:

cf scale my-application -m 1G 

ってなってるし....無料枠が2GBなのにね~。 しかも、Pivotal Cloud Foundryのバージョン確認の仕方を載せてくれてないあたりが素晴らしいですね(涙)

cf scale [Pivotal Web Servicesのdevelpmentにデプロイされたプロジェクト名] -m 1G

f:id:ts0818:20171025211142j:plain

f:id:ts0818:20171025212430j:plain

ダッシュボードを確認すると、プロジェクトが起動しました!

f:id:ts0818:20171025211456j:plain

ブラウザで「http://Pivotal Web Servicesのdevelpmentにデプロイされたプロジェクト名.cfapps.io」にアクセス します。自分の場合ですと「http://hajiboot-ts0818.cfapps.io」になります。

f:id:ts0818:20171025211816j:plain

ブラウザに表示されました。

コマンドプロンプトでアプリケーション(プロジェクト)の状態を確認。

『cf app [アプリケーション名(プロジェクト名)]』 で確認できます。

cf app hajiboot-ts0818 

f:id:ts0818:20171025212828j:plain

ちなみに、Cloud Foundryは、仮想マシン上のコンテナでアプリケーションを起動してるようですので、Dockerと同じようなコンテナ型の仮想環境といえそうです。 

 

ログの確認

コマンドプロンプトでログを確認。 

cf logs hajiboot-ts0818 --recent 

f:id:ts0818:20171025213838j:plain

ダッシュボードからも確認できるようです。

「develpment」>「Logs」で確認できます。

f:id:ts0818:20171025214032j:plain

 

PCF Metricsでアプリケーションのモニタリング

ログを視覚化してくれる仕組みが「PCF Metrics」という機能があるようです。

ダッシュボードの「devlopment」>「Overview」を選択し、

f:id:ts0818:20171025214617j:plain

「View in PCF Metrics」をクリック。

f:id:ts0818:20171025214856j:plain

バージョンが変わったのか分かりませんが、「はじめてのSpring Boot 改訂版」で紹介されてる見た目と違ってますが、視覚化されたログなどが表示されました。

f:id:ts0818:20171025215210j:plain

 

アプリケーションの停止

PWS(Pivotal Web Services)で利用できる無料枠が限られてるので、使わないときはアプリケーションを停止しておきます。省エネ、省エネ。

cf stop hajiboot-ts0818

f:id:ts0818:20171025221402j:plain

ダッシュボードのほうでアプリケーションが停止してるのが確認できました。

f:id:ts0818:20171025221600j:plain

 

MySQLなどのデータベースも、「データ容量5MB」、「同時接続可能コネクション数が4」などの制限内でなら無償で利用できるようです。

時間があるときに試していきたいと思います。