Spring Cloudを使って、マイクロサービスを管理しよう

Spring-Cloudとは、クラウドネイティブ(クラウド環境での使用を前提とした)なアプリのための管理ツールです。

小規模なマイクロサービスを複数組み合わせ、大規模なサービスを構築するための機能がたくさん提供されています。

ここでは、Spring Cloud を実際に手元で動かし、その機能を試してみます。

サンプルコードはgithubに上がっております。

Spring Cloudとは

Spring Cloudでは、以下のような概念があります。

  1. Service : ある一機能(API等)を指す。複数のサーバで冗長構成が取られる。
  2. Service Discovery(Eureka) : 各Serviceに対し、サーバ群を紐付けて管理、負荷分散(サービスの多重化)する。Serivceにリクエストが来た際、Service内のホストに分散する。また、サーバのヘルスチェックも行う。

Spring Cloudでは、マイクロサービスである Service  毎に機能を管理し、ユーザーは Service に対してリクエストを送ります。

以下に簡単なリクエスト処理の図を載せておきます。

Eureka Server を作成する

Service Discoveryとしての役割を果たす、Eureka Server の部分を作っていきます。

pom.xml に依存関係を追加しましょう。

続いて、アプリケーションの実装です。

Javaの起動クラスに @EnableEurekaServer を付与します。

続いて、application.properties に設定を記述します。

以上で、Eurekaサーバーを作成完了です。アプリケーションを起動してみましょう。

http://localhost:8761 に、Eureka Server の管理画面が表示されます。

 

2. Eureka Clientを作成する

Eureka Server に登録するサービスの部分を実装します。  サービスの登録には、eureka-client を使用します。

続いて、@EnableEurekaClient をアプリケーションに記述します。

application.properties に、サービス名と、サービス登録先を記述します。サービス登録先には、作成したEurekaサーバーを指定しましょう。

アプリケーションを起動しておきましょう。

3.EurekaClient (LB部分)を作成する

他のサービスへの負荷分散を行うロードバランサ部分を作成します。

追加する依存関係は下記の通りです。

サービス作成時と同じく、@EnableEurekaClient を付与します。

続いて、ロードバランサ部分を作成します。

最後に、application.properties を作成しましょう。

アプリケーションを起動します。

ここまでで、作成した二つのサービス( SERVICE , LB) がEurekaサーバーに登録されました。

4.アプリケーションの動きを確認する。

実際に、ロードバランサ部分にリクエストを送ってみましょう。

ロードバランサのAPIは、serivce サービスにリクエストを送り、Eurekaサーバーで負荷分散が行われ、

service サービス内のホストに接続します。

無事、サービス名指定でリクエストした結果がLBから返却されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です