The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

Quarkus における SmallRye Stork を使用したサービスの自動登録

preview

このガイドでは、SmallRye Stork と Consul を使用して、最小限の設定または設定なしで Quarkus アプリケーションの自動登録および登録解除を有効にする方法を説明します。

概要

SmallRye Stork は、Consul や Eureka などのサービス登録バックエンドをサポートしています。従来、開発者は コードを使用してサービスインスタンスを明示的に設定し、手動で登録 する必要がありました。この機能により、Quarkus アプリケーションは起動時にサポートされているレジストリー (例: Consul) へ自動的に登録し、シャットダウン時に登録解除できるようになります。ボイラープレートコードを書く必要はありません。

重要: 自動登録は、Consul、Eureka、Static などの組み込みのレジストラに対して のみ 可能であることに注意してください。カスタムレジストラを使用している場合は、引き続きプログラムで登録を処理する必要があります。このユースケースについては、stork-programmatic-custom-registration-quickstart ディレクトリ の例を確認してください。

この統合により設定の手間が最小限に抑えられ、可能な限りビルド時に処理を行うという Quarkus の哲学に従っています。

仕組み

アプリケーションが起動し、quarkus-smallrye-stork に加えて stork-service-registration-consul 依存関係が存在する場合、以下の処理が行われます。

  • Quarkus はビルド時に登録設定のチェックを実行します。

  • 有効な設定が検出された (または推測できる) 場合、登録メタデータが生成されます。

  • 起動時、アプリケーションは検出または設定された IP アドレスとポートを使用して自動的に登録されます。

  • シャットダウン時、サービスは自動的に登録解除されます。

ソリューションは stork-automatic-consul-registration-quickstart ディレクトリ にあります。

ユースケースおよび設定オプション

登録システムは適切なデフォルト値を使用しますが、サービスごとにきめ細かな制御を行うことも可能です。

ケース 1: 暗黙的な設定

設定は一切不要です。

<dependency>
  <groupId>io.smallrye.stork</groupId>
  <artifactId>stork-service-registration-consul</artifactId>
</dependency>

Quarkus は以下を自動的に使用します。

  • アプリケーション名

  • 検出された IP アドレス

  • HTTP ポート

サービスは自動的に登録および登録解除されます。

ケース 2: 最小限の明示的な設定

必要な項目のみをオーバーライドします。

quarkus.stork.my-service.service-registrar.ip-address=192.168.0.42

application.properties 内にレジストラ設定が 1 つしかない場合、 quarkus.stork.my-service.service-registrar.type は不要です。

ケース 3: 複数のサービスレジストラ

複数のサービスが設定されている場合は、 quarkus.stork.<service-name>.service-registrar.type を指定する必要があります。

quarkus.stork.red-service.service-registrar.type=consul
quarkus.stork.red-service.service-registrar.port=8083

quarkus.stork.blue-service.service-registrar.type=consul
quarkus.stork.blue-service.service-registrar.port=8084

ケース 4: 登録の無効化

自動登録はデフォルトで有効になっています。登録を無効にしたい場合は、以下の設定プロパティーを使用してサービスごとに設定できます。

quarkus.stork.red-service.service-registrar.enabled=false

ケース 5: 高度なヘルスチェック設定

Consul がサービスのヘルス状態をポーリングする方法をカスタマイズします。

quarkus.stork.my-service.service-registrar.parameters.health-check-url=/q/health/live
quarkus.stork.my-service.service-registrar.parameters.health-check-interval=10s
quarkus.stork.my-service.service-registrar.parameters.health-check-deregister-after=1m

ケース 6: 静的な IP とポート

プロキシの背後にいる場合や、既知の IP を持つ本番環境で有用です。

quarkus.stork.my-service.service-registrar.ip-address=203.0.113.25
quarkus.stork.my-service.service-registrar.port=80

IP 検出

デフォルトでは、Quarkus は最初に使用可能なループバック以外のネットワークインターフェースを使用して IP アドレスを特定しようとします。これに失敗した場合は localhost にフォールバックします。

Docker や Kubernetes 環境では、この検出により外部から到達不可能な内部 IP が取得される可能性があることに注意してください。そのような場合は、IP とポートを明示的に設定することをお勧めします。

まとめ

  • 最小限またはゼロ設定でサービス登録を動作可能

  • ビルド時処理による Consul とのシームレスな統合

  • サービスごとのオーバーライドをサポート

  • シャットダウン時の自動登録解除

  • 他のバックエンドをサポートするための容易な拡張性

設定リファレンス

ビルド時に固定される設定プロパティー - 他のすべての設定プロパティーは実行時にオーバーライド可能です

Configuration property

タイプ

デフォルト

Configuration for the service

タイプ

デフォルト

Configures the service discovery type, e.g. "consul". ServiceDiscoveryProvider for the type has to be available

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_DISCOVERY_TYPE

Show more

string

required

ServiceDiscovery parameters. Check the documentation of the selected service discovery type for available parameters.

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_DISCOVERY__PARAMS_

Show more

Map<String,String>

Configures load balancer type, e.g. "round-robin". A LoadBalancerProvider for the type has to be available

Environment variable: QUARKUS_STORK__SERVICE_NAME__LOAD_BALANCER_TYPE

Show more

string

round-robin

Load Balancer parameters. Check the documentation of the selected load balancer type for available parameters

Environment variable: QUARKUS_STORK__SERVICE_NAME__LOAD_BALANCER__PARAMETERS_

Show more

Map<String,String>

Whether automatic registration and deregistration of service instances is enabled.

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_REGISTRAR_ENABLED

Show more

ブーリアン

true

Configures service registrar type, e.g. "consul". A ServiceRegistrarProvider for the type has to be available

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_REGISTRAR_TYPE

Show more

string

Service Registrar parameters. Check the documentation of the selected registrar type for available parameters

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_REGISTRAR__PARAMETERS_

Show more

Map<String,String>

関連コンテンツ