Spring Cloud Config Serverのサービス化と高可用性実装

これまでの実装内容を振り返ります:

  • 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インスタンスを起動します。

タグ: Spring Cloud Config Eureka 高可用性 サービスディスカバリ マイクロサービス

5月16日 01:08 投稿