序文
、マイクロサービスのためには、複数のサーバーにデプロイされているサーバーのIPアドレスと統一することができない、我々は、使用インタフェースにフロントデスクを呼び出すための単一のIPアドレスを公開する必要があります;ゲートウェイをルーティングする中心的な役割をzuulは、バックグラウンドサービスのための統一管理ですzuulこれは、統一ゲートウェイルータの役割を果たしている。見Netflixがzuulを使用して、次のように使用zuulに:
- 認証:真剣権
- 洞察:ビジョン監視
- ストレステスト:ストレステスト
- カナリアテスト:カナリアテスト
- 動的ルーティング:動的ルーティング
- サービスの移行:移行サービス
- 負荷制限:負荷分散カットを
- セキュリティ:セキュリティ認証
- 静的応答処理:静的応答処理
- アクティブ/アクティブトラフィック管理:トラフィック管理イニシアチブ
この記事では、いくつかの事前の知識を取り、主エントリー書類であり、あなたが初心者会場springcloudコラム知識を求める人系統的な研究されている場合は、
二zuul、クライアント
2.1のpom.xml
新しいプロジェクトzuul-クライアントを作成し、spring-cloud-starter-netflix-eureka-client
サービスの登録と発見のために依存しています。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
2.2プレゼンテーション層
プレゼンテーション層は、一元管理するためのサービスをルーティングzuulサーバのための試験インタフェースを提供します。
/**
* @Author lsc
* <p>zuul 路由网关测试表现层 </p>
*/
@RestController
public class ZuulController {
@RequestMapping("/zszxz")
public String getUser(String username){
return "hello"+username;
}
}
2.3 application.yml
- 指定ポート8101
- サービス名zuulクライアント暴露
- ユーレカのサービス登録
server:
port: 8101
spring:
application:
name: zuul-client # 应用名称
eureka:
client:
service-url:
# 服务注册地址
defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/
instance:
prefer-ip-address: true
2.4起動クラス
@EnableDiscoveryClient
登録と発見のためのオープンユーレカ
/**
* @Author lsc
* <p> zuul-client启动类</p>
*/
@SpringBootApplication
@EnableDiscoveryClient//开启eureka注册与发现
public class ZuulApp {
public static void main(String[] args) {
SpringApplication.run(ZuulApp.class, args);
}
}
三zuulサーバ
3.1のpom.xml
zuul-サーバープロジェクト、ユーレカの導入、zuul依存を作成します。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
</dependencies>
3.2 application.yml
- 指定ポート8100
- zuulサーバーの名前を指定します。
- ユーレカサービスの登録と発見
- zuulルーティングルールセット、zuulクライアントサービス/ ** zuulルーティング管理によって統一/ API / **
server:
port: 8100
spring:
application:
name: zuul-server # 应用名称
eureka:
client:
service-url:
# 服务注册地址
defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/
instance:
prefer-ip-address: true
zuul:
routes:
# zuul-client 路由规则
zuul-client:
path: /api/** # 转发路径
serviceId: zuul-client # 服务id
3.3起動クラス
埋め込まれたルーティングエージェントを開く@EnableZuulProxy。
/**
* @Author lsc
* <p>zuul-server </p>
*/
@SpringBootApplication
@EnableZuulProxy
public class ZuulServerApp {
public static void main(String[] args) {
SpringApplication.run(ZuulServerApp.class, args);
}
}
四つのテスト結果
4.1スタートプロジェクトリスト
- 開始した3ユーレカ・サーバー(1-3)、ポート10081,10082,10083
- スタートzuul、クライアント
- スタートzuulサーバ
4.1 zuulクライアントアクセス
訪問のhttp:// localhostを:8101 / zszxzユーザ名= zszxzそれは通常のインタフェースのテストですか?
4.2アクセスzuulサーバ
HTTPをご覧ください:// localhostを:8100 / API / zszxzユーザ名= zszxzゲートウェイルーティングのテスト?
締結zuulクライアントサービス/ **すべてのパスは、zuulサーバサービス/ API / **パスをマッピングされます。
ファイブzuul一般的な構成
5.1ルーティング簡素化の設定
ルーティング簡素化設定が設定され、対応するルーティングサービスID名に厳密に従っを必要とします。
元のルーティングルール
zuul:
routes:
# zuul-client 路由规则
zuul-client:
path: /api/** # 转发路径
serviceId: zuul-client # 服务id
次のようにルーティングルールを簡略化し、
zuul:
routes:
zuul-client: /api/**
5.2は、コンフィギュレーションをルーティング除外する
日々の開発では、いくつかの内部サービスが外部アクセスに利用できないことは避けられないが、内部サーバ間の呼び出しは、あなたが設定トラブルシューティング設定のルーティングに使用することができます。次の設定は、zuulクライアントに加えて、すべてのサービスを除外します。もちろん、読者のまた、いないワイルドカード*が、特定のサービスIDを使用することができます。
zuul:
ignoredServices: '*'
routes:
zuul-client: /api/**
特定を使用して構成をルーティング5.3 IPアドレス
コンフィギュレーションをルーティングサービスIDを使用することに加えて、あなたはまた、IPアドレスの設定を使用することができますが、一般的には、このオプションを使用しないでください。
zuul:
routes:
zuul-client:
path: /api/**
url: http://127.0.0.1:8101
5.4リボンを使用してバランスをとるzuulロード
一般的に使用されるzuulは、単純なユーレカ独自の負荷分散され、現在はリボンのロードバランシングを使用すると、あなたは以下の構成HystrixCommandを実行する必要がサポート
zuul:
routes:
zuul-client:
path: /api/**
serviceId: zuul-client
stripPrefix: true #开启前缀
hystrix:
command:
zuul-client:
execution:
isolation:
thread:
timeoutInMilliseconds: 10000
zuul-client:
ribbon:
NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
listOfServers: http://127.0.0.1:8101,http://127.0.0.1:8102
ConnectTimeout: 1000
ReadTimeout: 3000
MaxTotalHttpConnections: 500
MaxConnectionsPerHost: 100
5.5は、コンフィギュレーションをルーティング除外する
セクション5.2サービスルーティングを排除することができる、このセクションでは、特定のインターフェイスモードへのパスを除外することができる。以下は、すべてのパスがパスに含まれる界面zuulクライアント管理者に除外されます。
zuul:
ignoredPatterns: /**/admin/**
routes:
zuul-client: /api/**
以上5.6ルーティングの設定
次の構成例であればサービスIDの構成は、複数のサービスを配置する前に、リーダからの経路によって定義されるIDと特定のサービス。
zuul:
routes:
zuul-client1:
path: /api/1/**
zuul-client2:
path: /api/2**
5.7除外ヘッダ
構成要求は、ヘッダ内の機密情報を除外し、それは良い選択です。
zuul:
routes:
zuul-client:
path: /api/**
sensitiveHeaders: Cookie,Set-Cookie,Authorization
url: http://127.0.0.1:8101
シックス・参考文献
参考資料
zuul-githubのします。https://github.com/Netflix/zuul/wiki
springcloud公文書ます。https://cloud.spring.io/spring-cloud-static/Finchley.SR4/single/spring-cloud.html
出典:あなたが得ることができる会場や知識を求める人spingcloud列の説明