1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloud を遊んでみました

Last updated at Posted at 2021-03-29

IBM Cloud について、遊んで見ました、簡単にメモ。
Java のサンプルを Deploy しました、こちらで確認できる。
https://getstartedjava-shiny-bear-sc.mybluemix.net/GetStartedJava/

まずは、無料登録

IBM Cloud CLI を設定

自分は CentOS なので、こちらを使用

$ curl -fsSL https://clis.cloud.ibm.com/install/linux | sh

Windows の場合は、こちらからダウンロード
https://github.com/IBM-Cloud/ibm-cloud-cli-release/releases

続いてibmcloud を更新

$ ibmcloud update
更新を確認しています...
更新は不要です。 CLI は既に最新です。
$ ibmcloud -v
ibmcloud version 1.4.0+4705d79-2021-02-24T21:18:06+00:00

Cloud Foundry サンプル・アプリの作成

今回は Java を使用するので、こちら
https://cloud.ibm.com/catalog/starters/cloud-foundry?runtime=liberty-for-java
無料プランですと、メモリは最大 256M を選べる!最大にしましょう!

画面はこんな感じ
image.png
ただ、ロケーションの選択はアジアの選択肢がないのは残念
image.png

できたら、「Cloud Foundry の組織」画面に表示されます:
https://cloud.ibm.com/account/cloud-foundry

war ファイルを作成

サンプル java プロジェクトを clone し、maven でビルド

$ git clone https://github.com/IBM-Cloud/get-started-java
$ cd get-started-java
$ mvn clean install
..........................................................................
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.767 s
[INFO] Finished at: 2021-03-29T13:37:10Z
[INFO] ------------------------------------------------------------------------
$ mvn install liberty:run-server

ローカルで確認したい場合はこちら(ポート:9080)
http://localhost:9080/GetStartedJava

Deploy to IBM Cloud

$ ibmcloud login
API endpoint: https://cloud.ibm.com
Region: jp-tok

Email> アカウントのメールアドレス

Password> アカウントのパスワード
Authenticating...
OK

Targeted account XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      
API endpoint:      https://cloud.ibm.com   
Region:            jp-tok   
User:              XXXXXXXXXXXXXXXXXXXXXX
Account:           XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Resource group:    No resource group targeted, use 'ibmcloud target -g RESOURCE_GROUP'   
CF API endpoint:      
Org:                  
Space:                

Target a Cloud Foundry org and space:

$ ibmcloud target -r us-south        # ロケーションを us-south に変える
$ ibmcloud target --cf

push application to IBM Cloud.

$ ibmcloud cf push
Invoking 'cf push'...
...............................................
Waiting for app to start...

name:              GetStartedJava
requested state:   started
routes:            getstartedjava-shiny-bear-sc.mybluemix.net
last uploaded:     Mon 29 Mar 13:42:06 UTC 2021
stack:             cflinuxfs3
buildpacks:        Liberty for Java(TM) (WAR, liberty-21.0.0_3, buildpack-v3.55-20210311-1642, ibmjdk-1.8.0_sr6fp26-20210216, env)

type:            web
instances:       1/1
memory usage:    256M
start command:   .liberty/initial_startup.rb
     state     since                  cpu     memory           disk           details
#0   running   2021-03-29T13:42:55Z   62.3%   100.1M of 256M   322.7M of 1G   

app の一覧と URL を確認

$ ibmcloud cf apps
Invoking 'cf apps'...

Getting apps in org xxxxxxxxxxxxx@xxxxxxxxxxxx / space dev as xxxxxxxxxxx@xxxxxxxxxx...
OK

name             requested state   instances   memory   disk   urls
GetStartedJava   started           1/1         256M     1G     getstartedjava-shiny-bear-sc.mybluemix.net

上記表示された URL + /GetStartedJava/ をアクセスできる
https://getstartedjava-shiny-bear-sc.mybluemix.net/GetStartedJava/

Java のバージョンを 11 にする

ibmcloud cf set-env GetStartedJava JBP_CONFIG_IBMJDK "version: 11.+"
ibmcloud cf restage GetStartedJava
ibmcloud cf push

以下の jsp で確認した結果:

env.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<body>
Server Version: <%= application.getServerInfo() %><br>
Servlet Version: <%= application.getMajorVersion() %>.<%= application.getMinorVersion() %><br>
JSP Version: <%= JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %><br>
<br>
java.runtime.name: <%= System.getProperty("java.runtime.name") %><br>
java.runtime.version: <%= System.getProperty("java.runtime.version") %><br>
java.vm.name: <%= System.getProperty("java.vm.name") %><br>
java.vm.vendor: <%= System.getProperty("java.vm.vendor") %><br>
java.vm.version: <%= System.getProperty("java.vm.version") %><br>
</body>
</html>
Server Version: IBM WebSphere Liberty/21.0.0.6
Servlet Version: 3.1
JSP Version: 2.1

java.runtime.name: OpenJDK Runtime Environment
java.runtime.version: 11.0.11+9
java.vm.name: Eclipse OpenJ9 VM
java.vm.vendor: Eclipse OpenJ9
java.vm.version: openj9-0.26.0

やってみた感じ

1.無料プランはいまいち、ローケーションをアメリカにしたせいか、結構遅いです。
東京の自宅サーバーから ping (138 ms)

$ ping getstartedjava-shiny-bear-sc.mybluemix.net
PING getstartedjava-shiny-bear-sc.mybluemix.net (169.47.124.22) 56(84) bytes of data.
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=1 ttl=182 time=139 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=2 ttl=182 time=138 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=3 ttl=182 time=138 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=4 ttl=182 time=139 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=5 ttl=182 time=138 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=6 ttl=182 time=138 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=7 ttl=182 time=139 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=8 ttl=182 time=138 ms
64 bytes from 16.7c.2fa9.ip4.static.sl-reverse.com (169.47.124.22): icmp_seq=9 ttl=182 time=138 ms

さくらレンタルサーバーから ping (138 ms)

$ ping getstartedjava-shiny-bear-sc.mybluemix.net
PING getstartedjava-shiny-bear-sc.mybluemix.net (169.47.124.22): 56 data bytes
64 bytes from 169.47.124.22: icmp_seq=0 ttl=180 time=138.681 ms
64 bytes from 169.47.124.22: icmp_seq=1 ttl=180 time=138.851 ms
64 bytes from 169.47.124.22: icmp_seq=2 ttl=180 time=138.742 ms
64 bytes from 169.47.124.22: icmp_seq=3 ttl=180 time=138.511 ms
64 bytes from 169.47.124.22: icmp_seq=4 ttl=180 time=138.678 ms
64 bytes from 169.47.124.22: icmp_seq=5 ttl=180 time=139.004 ms
64 bytes from 169.47.124.22: icmp_seq=6 ttl=180 time=138.708 ms
64 bytes from 169.47.124.22: icmp_seq=7 ttl=180 time=138.943 ms
64 bytes from 169.47.124.22: icmp_seq=8 ttl=180 time=138.766 ms
64 bytes from 169.47.124.22: icmp_seq=9 ttl=180 time=138.785 ms

2.IBM の shell 環境(ibmcloud)結構独自なので、慣れが必要です。

追記1

Tomcat にも気になるから、やってみました。
無料枠だとメモリは上限 256M しか使えないため、Tomcat サーバー起動できません。
以下のエラーが出る:

2021-03-30T03:41:55.59+0000 [APP/PROC/WEB/0] ERR Cannot calculate JVM memory configuration: There is insufficient memory remaining for heap. Memory available for allocation 256M is less than allocated memory 590168K (-XX:ReservedCodeCacheSize=240M, -XX:MaxDirectMemorySize=10M, -XX:MaxMetaspaceSize=78168K, -Xss1M * 250 threads)

どうやら、デフォルトでメモリーを一杯設定してしまったみたい。
スケールのやり方もあったが、無料枠では使えない。(そもそも最大 256M しか使えない)

ibmcloud cf scale koryo -m 1G

こちらの記事を参考し、
https://stackoverflow.com/questions/56658354/jvm-insufficient-memory-issue
manifest.yml を修正したらうまく行った。(Java の環境変数を指定する)
ちなみに、Tomcat のバージョンは 9.0.44

$ cat manifest.yml 
---
applications:
 - name: koryo 
   random-route: true
   path: target/GetStartedTomcat.war
   memory: 256M 
   instances: 1
   buildpack: java_buildpack
   env:
           JAVA_OPTS: '-Xmx256M'

追記2

https://cloud.ibm.com/docs/cloud-foundry-public?topic=cloud-foundry-public-deployingapps
以下のコマンドで war だけを更新。(jenkins を入れてみました)

# war だけを更新する
ibmcloud cf push GetStartedJava -p jenkins.war
# log を見る
ibmcloud cf logs GetStartedJava

参考になった記事:

無料で使えるIBM Cloudサービスの調べ方
https://qiita.com/ayatokura/items/fb7606bf7c052ad7e75b

IBM CloudでCloud Foundryアプリケーションをデプロイをする
https://qiita.com/hayatochiri222/items/49d7161683c79b4b3aaa

ibm cloudにdeployしていたappが動かなくなっていたので対応した
https://qiita.com/syui/items/0010d81c6375f5f771e7

Getting started with Liberty for Java
https://cloud.ibm.com/docs/cloud-foundry-public?topic=cloud-foundry-public-getting-started-liberty&locale=ja

ロケーションについて
https://cloud.ibm.com/docs/containers?topic=containers-regions-and-zones&locale=ja

IBM Cloud CLI のインストール
https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli&locale=ja

汎用 IBM Cloud CLI (ibmcloud) コマンド
https://cloud.ibm.com/docs/cli?topic=cli-ibmcloud_cli&locale=ja

IBM Cloud Shellを触ってみた
https://qiita.com/testnin2/items/17d10a304fa581889226

その他
https://qiita.com/yamachan360/items/1563cd3ea6271afe46ab
https://qiita.com/ayatokura/items/289600873af05d0034a9

以上。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?