Pivotal Cloud FoundryのSpring Cloud Servicesを利用することで、
- Config Server
- Service Registry
- Circuit Breaker Dashboard
はプラットフォームが提供するため、自前で管理不要になります。 かつこれらのサービスへのアクセスをOAuth 2によって自動で認可制御されます。
config-server
とeureka-server
は不要なので削除して構いません。
本ページで作成するソースコードとスクリプトはこちら(06_spring-cloud-services
ブランチ)から参照可能です。
また、Spring Cloud Servicesのマニュアルはこちらです。
Spring Cloud Servicesへのアクセスを自動設定するためのSpring Cloud Services Startersを使うように設定します。
本稿作成時点で、Spring Cloud Servicesに対応しているSpring Bootのバージョンが1.2、Spring CloudのバージョンがAngelであるため、アプリケーションを一部変更します。
また、Spring Cloud Services用のコンフィギュレーションを使用するようにbootstrap.properties
を変更します(差分)。
manifest.yml
もPivotal Cloud Foundry用に変更します (buildpack, memory増加, Hystrix Dashboardサービスのバインド)。
membership
のpom.xml
をこの内容に変更membership
のsrc/main/resources/bootstrap.properties
をこの内容に変更membership
のmanifest.yml
をこの内容に変更
recommendations
のpom.xml
をこの内容に変更recommendations
のsrc/main/resources/bootstrap.properties
をこの内容に変更recommendations
のsrc/main/java/com/metflix/RecommendationsApplication.java
をこの内容に変更recommendations
のmanifest.yml
をこの内容に変更
ui
のpom.xml
をこの内容に変更ui
のsrc/main/resources/bootstrap.properties
をこの内容に変更ui
のsrc/main/java/com/metflix/UiApplication.java
をこの内容に変更ui
のmanifest.yml
をこの内容に変更
membership
、recommendations
、ui
プロジェクトをビルドします
$ cd $WORKSHOP/membership
$ ./mvnw clean package -Dmaven.test.skip=true
$ cd $WORKSHOP/recommendations
$ ./mvnw clean package -Dmaven.test.skip=true
$ cd $WORKSHOP/ui
$ ./mvnw clean package -Dmaven.test.skip=true
Tips
スクリプトによる作業自動化の準備を行えば、
$ cd $WORKSHOP $ ./scripts/build.shを実行することで、全アプリケーションのビルドが行われます。
※ アカウントの作成は講師が行います。
$ cf login -a api.run.pez.pivotal.io
GitのURLをhttps://github.com/making/metflix-config
から「Config Serverの導入」でForkしたURLに変更してください。
$ cf create-service p-config-server standard config-server -c '{"git":{"uri":"https://github.com/making/metflix-config", "label":"spring-cloud-services"}}'
$ cf create-service p-service-registry standard eureka-server
$ cf create-service p-circuit-breaker-dashboard standard hystrix-dashboard
Manifestマニフェストファイルを使ってPivotal Cloud Foundryにjarをデプロイします。
$ cd $WORKSHOP/membership
$ cf push membership-tmaki
$ cd $WORKSHOP/recommendations
$ cf push recommendations-tmaki
$ cd $WORKSHOP/ui
$ cf push ui-tmaki
※ Spring Cloud Servicesの各サービスは初期化に時間がかかり、初期化完了前にアプリケーションにバインドしようとするとエラー(Server error, status code: 502, error code: 10001, message: Service broker error: Service instance is not running and available for binding.
)が発生します。しばらく待ってから再度cf push
してください。
Tips
スクリプトによる作業自動化の準備を行えば、
$ cd $WORKSHOP $ ./scripts/deploy.shを実行することで、Serviceの作成及び、アプリケーションのデプロイが行われます。
cf apps
、cf services
の結果が以下のようになっていることを確認。
$ cf apps
name requested state instances memory disk urls
recommendations-tmaki started 1/1 768M 1G recommendations-tmaki.cfapps.pez.pivotal.io
ui-tmaki started 1/1 768M 1G ui-tmaki.cfapps.pez.pivotal.io
membership-tmaki started 1/1 768M 1G membership-tmaki.cfapps.pez.pivotal.io
$ cf services
name service plan bound apps last operation
eureka-server p-service-registry standard recommendations-tmaki, ui-tmaki, membership-tmaki create succeeded
config-server p-config-server standard recommendations-tmaki, ui-tmaki, membership-tmaki create succeeded
hystrix-dashboard p-circuit-breaker-dashboard standard recommendations-tmaki, ui-tmaki create succeeded
http://ui-tmaki.cfapps.pez.pivotal.ioにアクセス (tmaki
を自分のアカウントまたはイニシャルに変更してください)。
以下のコマンドで、システムに負荷をかけてください。
$ while true;do curl -u making:metflix http://ui-tmaki.cfapps.pez.pivotal.io > /dev/null; done
Apps Managerにログイン。
自分のSpaceを確認
config-server
のManageリンクをクリック
eureka-server
のManageリンクをクリック
hystrix-dashboard
のManageリンクをクリック。Turbineが有効になっており、Hystrixのストリームが集約されていることを確認
Membershipサービスを3台にスケールアウトさせましょう。
$ cf scale -i 3 membership-tmaki
Service Registryのインスタンス数が3になっていることを確認
Circuit Breaker Dashboardのスループットが変わらない(=メトリクスが集約されている)ことを確認
- アプリケーションのビルド
- Spring Cloud Servicesの作成とアプリケーションのデプロイ
はこちらのスクリプトを使えば自動で行えます。
$ cd $WORKSHOP
$ rm -rf scripts
$ mkdir scripts
$ cd scripts
$ curl -OL https://github.com/making/metflix/raw/06_spring-cloud-services/scripts/common.sh
$ curl -OL https://github.com/making/metflix/raw/06_spring-cloud-services/scripts/build.sh
$ curl -OL https://github.com/making/metflix/raw/06_spring-cloud-services/scripts/deploy.sh
$ curl -OL https://github.com/making/metflix/raw/06_spring-cloud-services/scripts/cleanup.sh
$ chmod +x *.sh
$ cd ..
common.sh
に定義されている変数suffix
をtmaki
から自分のアカウントまたはイニシャルに変更してください。
また、変数git_url
をhttps://github.com/making/metflix-config
から「Config Serverの導入」でForkしたURLに変更してください。
以下のコマンドでデプロイしたアプリケーションの削除とUser Provided Serviceの削除を行うことができます。
$ cd $WORKSHOP
$ ./scripts/cleanup.sh