これまでの実装内容を振り返ります:
- Gitリポジトリ連携したconfig-server-gitの構築
- Gitee上でのconfig-repoディレクトリ作成(設定情報保存用)
- Git設定情報取得用config-clientの構築
- config-clientでのRefresh機能による動的設定更新
本稿ではSpring Cloud Configの高度な機能について解説します。
高可用性の課題解決
従来のアプローチ
本番環境ではConfig Serverを登録センターと同様に高可用クラスタとして構成します。既存のconfig-server実装に対して、全Config Serverインスタンスが同一Gitリポジトリを参照するように設定すれば、クライアント側ではConfig Server前方にロードバランサを配置するだけで実現可能です。
サービス登録方式
Config Serverをマイクロサービスアーキテクチャ内の一サービスとして登録する代替手法があります。これによりクライアントはサービスディスカバリを介してConfig Serverにアクセス可能になり、同一Gitリポジトリを参照する複数Config Serverインスタンスで高可用性を実現できます。
実装変更手順
サーバー側変更
依存関係追加
pom.xmlにEurekaクライアント依存関係を追加:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-client</artifactId>
</dependency>
設定ファイル更新
application.ymlにEureka設定を追加:
eureka:
client:
service-url:
primary-zone: http://localhost:7100/eureka-registry/
Eureka登録センター起動後、Config Serverを起動しhttp://localhost:7100/で登録状態を確認します。
クライアント側変更
依存関係追加
同様にEurekaクライアント依存関係を追加:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-client</artifactId>
</dependency>
設定ファイル更新
bootstrap.ymlの設定変更:
spring:
cloud:
config:
application: configuration-client
environment: development
branch: primary
discovery:
enabled: true
service-id: configuration-server
eureka:
client:
service-url:
primary-zone: http://localhost:7100/eureka-registry/
主な変更点:
spring.cloud.config.uriの直接指定を削除- サービスディスカバリ関連設定を追加
- Eureka登録センターのアドレス指定
クライアント起動後、http://localhost:7100/で双方のサービス登録を確認します。
高可用性構成
本番環境を想定し、ポート13000と13001で複数Config Serverインスタンスを起動します。