Spring Boot 2.2.x の Web アプリを 2.3.x へバージョンアップする ( その10 )( Spring Boot を 2.3.2 → 2.3.7 へバージョンアップする+Docker コンテナの image をバージョンアップする、redis・redis_exporter 編 )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
- Spring Boot を 2.3.2 → 2.3.7 へバージョンアップします。
- 今回は以下の Docker コンテナの image をバージョンアップします。
- redis
- oliver006/redis_exporter
- Redis を 5 → 6 にバージョンアップしますが、spring-boot-starter-data-redis が利用している lettuce-core の release notes を見ると
Lettuce 6 supports Redis 2.6+ up to Redis 6.x.
の記述が出てくるのは 5.3.5.RELEASE からでした。現時点では spring-boot-starter-data-reids が 2.3.2.RELEASE、lettuce-core が 5.3.2-RELEASE であり、lettuce-core が 5.3.5-RELEASE になるのは spring-boot-starter-data-reids:2.3.5.RELEASE 以降です。 - Redis のバージョンアップの前に Spring Boot を 2.3.2 → 2.3.7 へバージョンアップすることにします。
- Redis 6.0.0 GA アップデート内容紹介 を読むと Redis 6 でかなり大きな機能追加が行われているとのことですが、この追加機能が利用できるようになるのが lettuce-core の 6.0.0 以降でした。lettuce-core が 6.0.0 以降になるのは Spring Boot 2.4 からなので、2.4 系にバージョンアップした時に新機能を試してみようと思います。
参照したサイト・書籍
Redis 6.0 release notes - GitHub
https://www.google.com/search?q=redis+6&oq=redis+6&aqs=chrome..69i57j35i39j0i457j0l2j69i60l3.1648j0j7&sourceid=chrome&ie=UTF-8Redis 6.0.0 GA アップデート内容紹介
https://qiita.com/maruloop/items/d1638fbf78afc95f0ad5Releases · lettuce-io/lettuce-core · GitHub
https://github.com/lettuce-io/lettuce-core/releases
目次
- Spring Boot を 2.3.2 → 2.3.7 へバージョンアップする
- .env を変更する
- docker-compose.yml を変更する
docker-compose up -d
コマンドを実行する- clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
- 変更前の docker image を削除する
手順
Spring Boot を 2.3.2 → 2.3.7 へバージョンアップする
build.gradle の以下の点を変更します。
buildscript { ext { group "ksbysample" version "2.3.7-RELEASE" } repositories { mavenCentral() maven { url "https://repo.spring.io/release/" } gradlePluginPortal() } } plugins { id "java" id "eclipse" id "idea" id "org.springframework.boot" version "2.3.7.RELEASE" id "io.spring.dependency-management" version "1.0.10.RELEASE" id "groovy" id "checkstyle" id "com.github.spotbugs" version "4.5.0" id "pmd" id "net.ltgt.errorprone" version "1.2.1" id "com.gorylenko.gradle-git-properties" version "2.2.3" } ..........
- buildscript block の以下の点を変更します。
version "2.3.2-RELEASE"
→version "2.3.7-RELEASE"
- plugins block の以下の点を変更します。
id "org.springframework.boot" version "2.3.2.RELEASE"
→id "org.springframework.boot" version "2.3.7.RELEASE"
id "io.spring.dependency-management" version "1.0.9.RELEASE"
→id "io.spring.dependency-management" version "1.0.10.RELEASE"
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると "BUILD SUCCESSFUL" のメッセージが出力されました。
gradlew dependencies
を実行すると io.lettuce:lettuce-core:5.3.5.RELEASE
が依存関係に追加されていることが確認できます。
+--- org.springframework.boot:spring-boot-starter-data-redis -> 2.3.7.RELEASE | +--- org.springframework.boot:spring-boot-starter:2.3.7.RELEASE (*) | +--- org.springframework.data:spring-data-redis:2.3.6.RELEASE | | +--- org.springframework.data:spring-data-keyvalue:2.3.6.RELEASE | | | +--- org.springframework.data:spring-data-commons:2.3.6.RELEASE (*) | | | +--- org.springframework:spring-context:5.2.12.RELEASE (*) | | | +--- org.springframework:spring-tx:5.2.12.RELEASE (*) | | | \--- org.slf4j:slf4j-api:1.7.26 -> 1.7.30 | | +--- org.springframework:spring-tx:5.2.12.RELEASE (*) | | +--- org.springframework:spring-oxm:5.2.12.RELEASE | | | +--- org.springframework:spring-beans:5.2.12.RELEASE (*) | | | \--- org.springframework:spring-core:5.2.12.RELEASE (*) | | +--- org.springframework:spring-aop:5.2.12.RELEASE (*) | | +--- org.springframework:spring-context-support:5.2.12.RELEASE (*) | | \--- org.slf4j:slf4j-api:1.7.26 -> 1.7.30 | \--- io.lettuce:lettuce-core:5.3.5.RELEASE | +--- io.netty:netty-common:4.1.53.Final -> 4.1.55.Final | +--- io.netty:netty-handler:4.1.53.Final -> 4.1.55.Final | | +--- io.netty:netty-common:4.1.55.Final | | +--- io.netty:netty-resolver:4.1.55.Final | | | \--- io.netty:netty-common:4.1.55.Final | | +--- io.netty:netty-buffer:4.1.55.Final | | | \--- io.netty:netty-common:4.1.55.Final | | +--- io.netty:netty-transport:4.1.55.Final | | | +--- io.netty:netty-common:4.1.55.Final | | | +--- io.netty:netty-buffer:4.1.55.Final (*) | | | \--- io.netty:netty-resolver:4.1.55.Final (*) | | \--- io.netty:netty-codec:4.1.55.Final | | +--- io.netty:netty-common:4.1.55.Final | | +--- io.netty:netty-buffer:4.1.55.Final (*) | | \--- io.netty:netty-transport:4.1.55.Final (*) | +--- io.netty:netty-transport:4.1.53.Final -> 4.1.55.Final (*) | \--- io.projectreactor:reactor-core:3.3.11.RELEASE -> 3.3.12.RELEASE | \--- org.reactivestreams:reactive-streams:1.0.3
.env を変更する
.......... REDIS_VERSION=6.0.9 REDIS_CLUSTER_1_PORT=6379 REDIS_CLUSTER_2_PORT=6380 REDIS_CLUSTER_3_PORT=6381 REDIS_CLUSTER_4_PORT=6382 REDIS_CLUSTER_5_PORT=6383 REDIS_CLUSTER_6_PORT=6384 ..........
REDIS_VERSION=5.0.7
→REDIS_VERSION=6.0.9
に変更します。
docker-compose.yml を変更する
redis_exporter: image: oliver006/redis_exporter:v1.14.0-alpine container_name: redis_exporter ports: - "9121:9121"
image: oliver006/redis_exporter:v1.3.5-alpine
→image: oliver006/redis_exporter:v1.14.0-alpine
に変更します。
docker-compose up -d
コマンドを実行する
以下のコマンドを実行して docker image をダウンロード+Redis Cluster を起動します(画面キャプチャはなし)。
docker-compose up -d
コマンドを実行してコンテナ一式(メールサーバ・rainloop を除く)を起動します。
redis-cluster-6379 ~ 6384 のコンテナは起動したままになっており、redis-cluster-make コンテナのログを確認すると問題なく Redis Cluster が構成できているようです。
Spring Boot 1.5.x の Web アプリを 2.0.x へバージョンアップする ( その19 )( Docker で Redis の環境を構築する2(Redis Cluster 構成)) を参考に docker exec -it redis-cluster-6379 redis-cli
コマンドで redis-cli を起動してから cluster nodes
コマンドを実行すると master が3台、slave が3台あることが確認できます。
Spring Boot のアプリケーションを起動してから Endpoints - Health の redis の情報を確認すると cluster_size に 3 と表示されていました。
redis_exporter の方は、Grafana で Redis の情報を表示させてみると metrics は取得できているようですが、一部エラーが出ていました。今はこのままにして prometheus・grafana をバージョンアップする時に修正します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。
変更前の docker image を削除する
以下の docker image を削除します。
- redis:5.0.7-alpine
- redis:5.0.7-custom
- oliver006/redis_exporter:v1.3.5-alpine
履歴
2020/12/14
初版発行。