Consul
Consulの概観
Consulはデフォルトのサービスレジストリソリューションとして使用されます。 Eurekaと比較すると、多くの利点があります。
- マルチノードクラスタでの操作は、Eurekaよりも簡単です。
- 可用性よりも一貫性を優先するため、クラスタの状態の変更がより迅速に伝播されます。
- Consulサービスディスカバリは、DNSインターフェイスまたはHTTP APIを介して既存のアプリケーションと相互運用できます。
アーキテクチャ図

入門
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で定義されたプロパティは、すべてのアプリケーションに対して設定されます。