9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring Cloud Netflix メモ

Last updated at Posted at 2019-06-10

はじめに

以下のサイトに書いてある内容を勉強した時のメモです。

Spring Cloud Netflix

Eureka Client

設定項目

基本的には設定はほとんどいらない。
gradle等でspring-cloud-starter-netflix-eureka-clientが依存関係に含まれていれば
AutoConfigureが動作し、設定してくれる

build.gradle(dependenciesのみ抜粋)
dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
	implementation('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
	testImplementation('org.springframework.boot:spring-boot-starter-test')
}

Eurekaサーバーを指定する

application.yml
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

また、アプリケーション名はspring.application.nameが使用される。
上記以外は基本的にはdefaultでOK
変えたい場合は以下でデフォルト値が設定されているので要カスタマイズ(application.ymlで設定する場合はeureka.instance.*に指定)

  • EurekaClientConfigBean
  • EurekaInstanceConfigBean

Eureka Server

依存関係にspring-cloud-starter-netflix-eureka-serverを追加
@EnableEurekaServerを指定することでAutoConfigureが動作する

@SpringBootApplication
@EnableEurekaServer
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}
application.yml
server:
  port: 8761

起動するとhttp://localhost:8761にアクセスすることで管理コンソールが開くようになっている
application.ymlでeureka.client.serviceUrl.defaultZoneにこのサーバーを指定しているクライアントがあり、
それが起動している場合コンソールに表示される

ass.JPG

Ribbon

HTTPおよびTCP上で動作するクライアントロードバランサー
クライアントがクライアントをコールする際等に使用する
それぞれのRibbonは名前を持っておりRibbonClientConfigurationで設定される
Ribbon を使うと http://hoge-service/api のように、サービス名を直接URLに指定できるようになります。
Ribbon を導入することで、 Spring の REST API である RestTemplateにサービス名のURLを記述可能になります。

使用方法

org.springframework.cloud:spring-cloud-starter-netflix-ribbonを依存関係に追加

RibbonClientの設定をしたい場合は以下のようにする

@Configuration
@RibbonClient(name = "custom", configuration = CustomConfiguration.class )
public class RibbonConfiguration {

}

CustomConfigurationの内容はRibbonClientConfigurationで設定された内容に上書きされる
他にもRibbonに関する設定内容は以下のBeanを設定することで上書きすることができる

sample.jpg

↓以下のような感じ

@Configuration
protected static class FooConfiguration {
	@Bean
	public ZonePreferenceServerListFilter serverListFilter() {
		ZonePreferenceServerListFilter filter = new ZonePreferenceServerListFilter();
		filter.setZone("myTestZone");
		return filter;
	}

	@Bean
	public IPing ribbonPing() {
		return new PingUrl();
	}
}

全てのRibbonClientに対してdefaultの設定をしたければ
defaultConfigurationを使う


@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)
public class RibbonClientDefaultConfigurationTestsConfig {

	public static class BazServiceList extends ConfigurationBasedServerList {
		public BazServiceList(IClientConfig config) {
			super.initWithNiwsConfig(config);
		}
	}
}

@Configuration
class DefaultRibbonConfig {

	@Bean
	public IRule ribbonRule() {
		return new BestAvailableRule();
	}

	@Bean
	public IPing ribbonPing() {
		return new PingUrl();
	}

	@Bean
	public ServerList<Server> ribbonServerList(IClientConfig config) {
		return new RibbonClientDefaultConfigurationTestsConfig.BazServiceList(config);
	}

	@Bean
	public ServerListSubsetFilter serverListFilter() {
		ServerListSubsetFilter filter = new ServerListSubsetFilter();
		return filter;
	}

}

Eurekaは上記の設定を上書きしたRibbonを使ってClientの情報を管理している

Zuul

Zuul は 各サービスとクライアントの間に立ちシステムの門番のような働きをするエッジサービスという位置づけのライブラリ
用途として、サービスを呼び出す前のセキュリティチェックやデータ変換、シングルサインオン、 URL書き換えといった様々なものがある
リバースプロキシ的な役割として使えるのでZuulを適用しているサービスのみを外部に公開することで
他サービスへの直接アクセスを防ぐことできる

使い方

org.springframework.cloud:spring-cloud-starter-netflix-zuulを依存関係に追加
@EnableZuulProxyをSpringBootのmainクラスに適用することで有効になる

@EnableDiscoveryClient
@EnableZuulProxy
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

application.ymlでルーティングができる
以下の例はXXX/apples/**で来たリクエストをappleにfowardするという指定

application.yml
zuul:
  routes:
    apple: /apples/**

参考サイト

Spring Boot 2.0でSpring Cloud Netflix -Hystrix編-
Spring特別勉強会レポート(後編)

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?