Azure Container Apps での Eureka Server for Spring コンポーネント (プレビュー) の設定を構成する
Eureka Server for Spring は、マイクロサービス用に一元化されたサービス検出のメカニズムです。 Eureka Server for Spring コンポーネントを構成して管理する方法を確認するには、次のガイダンスを使用してください。
表示
show
コマンドを使用して、名前ごとに個々のコンポーネントの詳細を表示できます。
次のコマンドを実行する前に、 <>
で囲まれたプレースホルダーを実際の値に置き換えます。
az containerapp env java-component eureka-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
一覧取得
list
コマンドを使用して、登録されているすべての Java コンポーネントを一覧表示できます。
次のコマンドを実行する前に、 <>
で囲まれたプレースホルダーを実際の値に置き換えます。
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
バインドの解除
コンテナー アプリからバインドを削除するには、--unbind
オプションを使用します。
次のコマンドを実行する前に、 <>
で囲まれたプレースホルダーを実際の値に置き換えます。
az containerapp update \
--name <APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
Eureka Server for Spring で許可される構成のリスト
次の一覧に、サポートされている構成の詳細を示します。 詳細については、Spring Cloud Eureka Server に関するトピックをご覧ください。
Note
新機能のリクエストは、サポート チケットをお送りください。
構成オプション
az containerapp update
コマンドは、--configuration
パラメータを使用して Eureka Server for Spring の構成方法を制御します。 スペースで区切ることで、一度に複数のパラメーターを使用することが可能です。 詳細については、Spring Cloud Eureka Server のドキュメントをご覧ください。
eureka.server
構成プロパティでは、次の構成設定を使用できます。
名前 | Description | 規定値 |
---|---|---|
eureka.server.enable-self-preservation |
有効にすると、サーバーではサーバーから受け取る必要がある更新回数を記録します。 更新回数が eureka.server.renewal-percent-threshold で定義されたしきい値の割合を下回った場合。 元の Eureka サーバーでは、既定値は true に設定されていますが、Eureka Server の Java コンポーネントでは、既定値は false に設定されています。 「Eureka Server for Spring の Java コンポーネントの制限」を参照してください |
false |
eureka.server.renewal-percent-threshold |
eureka.server.renewal-threshold-update-interval-ms で指定された期間にクライアントから期待される更新の最小の割合。 更新がしきい値を下回った場合、eureka.server.enable-self-preservation が有効になっていると、有効期限は無効になります。 | 0.85 |
eureka.server.renewal-threshold-update-interval-ms |
eureka.server.renewal-percent-threshold で指定されたしきい値を更新する必要がある間隔。 | 0 |
eureka.server.expected-client-renewal-interval-seconds |
クライアントがハートビートを送信する間隔。 既定値は 30 秒です。 たとえば、クライアントが異なる頻度、たとえば 15 秒ごとにハートビートを送信する場合、このパラメーターはそれに応じて調整する必要があります。そうしないと、自己保存は期待どおりに機能しません。 | 30 |
eureka.server.response-cache-auto-expiration-in-seconds |
変更イベントによってレジストリのペイロードが無効にされていない場合に、それをキャッシュに保持する時間を取得します。 | 180 |
eureka.server.response-cache-update-interval-ms |
クライアントのペイロード キャッシュを更新する時間間隔を取得します。 | 0 |
eureka.server.use-read-only-response-cache |
com.netflix.eureka.registry.ResponseCache は現在、応答に対して 2 レベルのキャッシュ戦略を使用しています。 有効期限ポリシーを持つ readWrite キャッシュと、有効期限なしでキャッシュする readonly キャッシュ。 | true |
eureka.server.disable-delta |
差分情報をクライアントに提供できるかどうかをチェックします。 | false |
eureka.server.retention-time-in-m-s-in-delta-queue |
クライアントが値を見逃すことなく取得できるように、差分情報をキャッシュする時間を取得します。 | 0 |
eureka.server.delta-retention-timer-interval-in-ms |
クリーンアップ タスクがウェイクアップして、期限切れの差分情報を確認する時間間隔を取得します。 | 0 |
eureka.server.eviction-interval-timer-in-ms |
インスタンスの有効期限が切れたタスクがウェイクアップして実行される時間間隔を取得します。 | 60000 |
eureka.server.sync-when-timestamp-differs |
タイムスタンプが異なる場合にインスタンスを同期させるかどうかをチェックします。 | true |
eureka.server.rate-limiter-enabled |
レート リミッターを有効にするか無効にするかを示します。 | false |
eureka.server.rate-limiter-burst-size |
レート リミッター、トークン バケット アルゴリズムのプロパティ。 | 10 |
eureka.server.rate-limiter-registry-fetch-average-rate |
レート リミッター、トークン バケット アルゴリズムのプロパティ。 平均適用要求率を指定します。 | 500 |
eureka.server.rate-limiter-privileged-clients |
認定クライアントの一覧。 これは、標準の eureka Java クライアントに追加されます。 | 該当なし |
eureka.server.rate-limiter-throttle-standard-clients |
レート制限標準クライアントかどうかを示します。 false に設定すると、標準以外のクライアントのみがレート制限されます。 | false |
eureka.server.rate-limiter-full-fetch-average-rate |
レート リミッター、トークン バケット アルゴリズムのプロパティ。 平均適用要求率を指定します。 | 100 |
一般的な構成
- ログ関連の構成
- logging.level.*
- logging.group.*
- logging.* 名前空間の下での他の構成は禁止する必要があります。たとえば、
logging.file
を使用したログ ファイルの書き込みは禁止する必要があります。
アプリケーション間の呼び出し
この例では、Eureka Server for Spring コンポーネントに登録されたアプリケーション間で呼び出すための Java コードの記述方法を示します。 コンテナー アプリが Eureka とバインドされると、Eureka サーバー経由で相互に通信します。
この例では、呼び出し元と呼び出し先の 2 つのアプリケーションを作成します。 両方のアプリケーションは、Eureka Server for Spring コンポーネントを使用して相互に通信します。 呼び出し先アプリケーションは、呼び出し元アプリケーションから呼び出しを受けるエンドポイントを公開します。
呼び出し先アプリケーションを作成します。 メイン クラスに
@EnableDiscoveryClient
注釈を追加して、Spring Boot アプリケーションで Eureka クライアントを有効にします。@SpringBootApplication @EnableDiscoveryClient public class CalleeApplication { public static void main(String[] args) { SpringApplication.run(CalleeApplication.class, args); } }
呼び出し先アプリケーションは、呼び出し元アプリケーションから呼び出しを受けるエンドポイントを公開します。
@RestController public class CalleeController { @GetMapping("/call") public String calledByCaller() { return "Hello from Application callee!"; } }
アプリケーション構成ファイルに、呼び出し先アプリケーションの名前を設定します。 例: application.yml。
spring.application.name=callee
呼び出し元アプリケーションを作成します。
@EnableDiscoveryClient
注釈を追加して、Eureka クライアント機能を有効にします。 また、他のサービスへの負荷分散呼び出しを実行するために、@LoadBalanced
注釈を持つWebClient.Builder
Bean を作成します。@SpringBootApplication @EnableDiscoveryClient public class CallerApplication { public static void main(String[] args) { SpringApplication.run(CallerApplication.class, args); } @Bean @LoadBalanced public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } }
アプリケーション名 callee を使用して呼び出し先アプリケーションを呼び出すために
WebClient.Builder
を使用する呼び出し元アプリケーションでコントローラーを作成します。@RestController public class CallerController { @Autowired private WebClient.Builder webClientBuilder; @GetMapping("/call-callee") public Mono<String> callCallee() { return webClientBuilder.build() .get() .uri("http://callee/call") .retrieve() .bodyToMono(String.class); } }
これで、Eureka Server for Spring Java コンポーネントを使用して相互に通信する呼び出し元アプリケーションと呼び出し先アプリケーションができました。 呼び出し元アプリケーションで /call-callee
エンドポイントをテストする前に、両方のアプリケーションが実行され、Eureka サーバーとバインドされていることを確認してください。
制限事項
Eureka Server Java コンポーネントには、
false
に設定された既定の構成eureka.server.enable-self-preservation
が付属します。 この既定の構成は、自己保存を有効にした後にインスタンスが削除されない時間を回避するのに役立ちます。 インスタンスの削除が早すぎると、存在しないインスタンスに要求が行われる場合があります。 この設定をtrue
に変更する場合は、Java コンポーネントに独自の構成を設定することでオーバーライドできます。Eureka サーバーにはレプリカが 1 つしかなく、スケーリングはサポートされていないため、ピア Eureka サーバー機能を利用できません。
Eureka ダッシュボードは利用できません。