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 コンポーネントを使用して相互に通信します。 呼び出し先アプリケーションは、呼び出し元アプリケーションから呼び出しを受けるエンドポイントを公開します。

  1. 呼び出し先アプリケーションを作成します。 メイン クラスに @EnableDiscoveryClient 注釈を追加して、Spring Boot アプリケーションで Eureka クライアントを有効にします。

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. 呼び出し先アプリケーションは、呼び出し元アプリケーションから呼び出しを受けるエンドポイントを公開します。

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. アプリケーション構成ファイルに、呼び出し先アプリケーションの名前を設定します。 例: application.yml

    spring.application.name=callee
    
  4. 呼び出し元アプリケーションを作成します。

    @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();
    	}
    }
    
  5. アプリケーション名 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 ダッシュボードは利用できません。

次のステップ