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