かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

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.2.x の Web アプリを 2.3.x へバージョンアップする ( その9 )( Docker コンテナの image をバージョンアップする、postgres・pgadmin4・flyway・docker-mailserver 編 ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • 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 系にバージョンアップした時に新機能を試してみようと思います。

参照したサイト・書籍

目次

  1. Spring Boot を 2.3.2 → 2.3.7 へバージョンアップする
  2. .env を変更する
  3. docker-compose.yml を変更する
  4. docker-compose up -d コマンドを実行する
  5. clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
  6. 変更前の 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" のメッセージが出力されました。

f:id:ksby:20201214002327p:plain

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.7REDIS_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-alpineimage: oliver006/redis_exporter:v1.14.0-alpine に変更します。

docker-compose up -d コマンドを実行する

以下のコマンドを実行して docker image をダウンロード+Redis Cluster を起動します(画面キャプチャはなし)。

  1. docker-compose up -d コマンドを実行してコンテナ一式(メールサーバ・rainloop を除く)を起動します。

redis-cluster-6379 ~ 6384 のコンテナは起動したままになっており、redis-cluster-make コンテナのログを確認すると問題なく Redis Cluster が構成できているようです。

f:id:ksby:20201214004336p:plain

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台あることが確認できます。

f:id:ksby:20201214005010p:plain

Spring Boot のアプリケーションを起動してから Endpoints - Health の redis の情報を確認すると cluster_size に 3 と表示されていました。

f:id:ksby:20201214005539p:plain

redis_exporter の方は、Grafana で Redis の情報を表示させてみると metrics は取得できているようですが、一部エラーが出ていました。今はこのままにして prometheus・grafana をバージョンアップする時に修正します。

f:id:ksby:20201214011932p:plain

clean タスク実行 → Rebuild Project 実行 → build タスクを実行する

clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。

f:id:ksby:20201214010149p:plain

変更前の docker image を削除する

以下の docker image を削除します。

  • redis:5.0.7-alpine
  • redis:5.0.7-custom
  • oliver006/redis_exporter:v1.3.5-alpine

履歴

2020/12/14
初版発行。