Skip to main content

Consul

Consulの概観

Consulはデフォルトのサービスレジストリソリューションとして使用されます。 Eurekaと比較すると、多くの利点があります。

  • マルチノードクラスタでの操作は、Eurekaよりも簡単です。
  • 可用性よりも一貫性を優先するため、クラスタの状態の変更がより迅速に伝播されます。
  • Consulサービスディスカバリは、DNSインターフェイスまたはHTTP APIを介して既存のアプリケーションと相互運用できます。

アーキテクチャ図

Diagram

入門

Consulレジストリに依存するアプリケーションの開発を開始するには、DockerコンテナでConsulインスタンスを起動します。

  • docker-compose -f src/main/docker/consul.yml upを実行して、Consulサーバをdevモードで起動します。その後、ConsulはDockerホストのポート8500で使用可能になり、マシンで実行する場合はhttp://127.0.0.1:8500/となります。

Docker Composeサブジェネレータを使用して、複数のConsul対応アプリケーションのDocker設定の生成もできます。

Consulを使用したアプリケーション構成

JHipsterマイクロサービスまたはゲートウェイアプリケーションを生成するときにConsulオプションを選択した場合、ConsulのKey/Valueストアから設定を取得するように自動的に設定されます。

Key/Value (K/V)ストアは、http://localhost:8500/v1/kv/またはREST APIで使用可能なUIを使用して変更できます。ただし、この方法で行われた変更は一時的なものであり、Consulサーバ/クラスタのシャットダウン時に失われます。 そのため、Key/Valueストアを操作し、YAMLファイルとして構成を管理するために、JHipsterチームはconsul-config-loaderという小さなツールを開発しました。 consul-config-loaderは、consul.ymldocker-composeファイルからConsulを起動するときに自動的に設定されますが、スタンドアローンツールとしての実行もできます。 次の2つのモードで実行できます。

  • devモードでは、central-server-configディレクトリのYAMLファイルが自動的にConsulにロードされます。さらに、このディレクトリに対する変更はすべて、すぐにConsulと同期されます。
  • prodモードでは、Git2Consulを使用して、Gitリポジトリに含まれるYAMLファイルをKey/Valueストアの設定ソースとして設定します。

JHipsterレジストリと同様に、構成ファイルにはappname-profile.ymlという名前を付ける必要があります。ここで、appnameとprofileは、構成するサービスのアプリケーション名とプロファイルに対応します。たとえば、consulapp-prod.ymlファイルにプロパティを追加すると、これらのプロパティは、prodプロファイルで開始されたconsulappという名前のアプリケーションに対してのみ設定されます。さらに、application.ymlで定義されたプロパティは、すべてのアプリケーションに対して設定されます。