2017-04-10 2 views
8

Springのブートで書かれたJavaマイクロサービスをConsulを使ってサービスの検出と設定管理に使用し、Dockerコンテナで実行しています。すべてが機能していますが、コンテナーが死んだりサービスが再開したりすると、Consul UIではConsulとサービスが永続的に「失敗」してしまうことはありません。緑。Dockerでのコンサルとスプリングブートサービス

私たちはハートビートを使用していませんが、霊長類にとってハートビートとヘルスチェックの違いについての多くの文書は見つかりません。

はここでハートビートを有効にするには、他の設定があります。私のbootstrp.yml

spring: 
    application: 
    name: my-service 
    cloud: 
    config: 
     enabled: false 
    consul: 
     host: ${discovery.host:localhost} 
     port: ${discovery.port:8500} 
     config: 
     watch: 
      wait-time: 30 
      delay: 10000 
     profile-separator: "-" 
     format: FILES 
     discovery: 
     prefer-ip-address: true 
     instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}} 

ですが、ドキュメントは、これは領事クラスタ上でより多くのストレスを置くことについて何かを言います。

実際にConsulとSpring Boot/Dockerサービスを自動的に登録解除することができた人は誰ですか?実際には何の問題も生じませんが、Consul UIは実際にアップ/ダウンサービスを監視するのにはかなり役に立たなくなります。

+0

たぶんこれは役立ちます:http://stackoverflow.com/questions/32259323/consul-not-deregistering-zombie-services – gesellix

答えて

1

領事は自動的にサービスの登録を解除しません。

ヒントについては、https://groups.google.com/forum/#!topic/consul-tool/slV5xfWRpEEを参照してください。そのスレッドによれば、設定を更新するか、Agent API callを実行する必要があります。エージェントは真実の源であるため、カタログAPIを使用して更新を試みるべきではありません。詳細は、GitHubを参照してください。また、Googleグループでは、ノードが正常に機能しなくなった場合でもサービスの登録を抹消する必要はありませんが、それはあなたのユースケースではないようです。

registratorのようなAPIまたはツールを使用してサービスの登録を自動化するヒントについては、Consul not deregistering zombie servicesをご覧ください。

1

マイクロサービスを実行するためにドッカーコンテナを使用していると述べました。ドッカー・コンテナのエントリ・スクリプトにSIGTERMをトラップしていますか? SIGTERMが送信されると、ブートアプリケーションがそれを取得し、マイクロサービスが領事から登録抹消されていることを示す下のログが表示されます。

2017-04-27 09:20:19.854 INFO 6852 --- [on(6)-127.0.0.1] inMXBeanRegistrar$SpringApplicationAdmin : Application shutdown requested. 
2017-04-27 09:20:19.857 INFO 6852 --- [on(6)-127.0.0.1] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot[email protected]afb5821: startup date [Thu Apr 27 09:20:00 EDT 2017]; parent: org.spring[email protected]130c12b7 
2017-04-27 09:20:19.859 INFO 6852 --- [on(6)-127.0.0.1] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 2147483647 
2017-04-27 09:20:19.863 INFO 6852 --- [on(6)-127.0.0.1] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 0 
2017-04-27 09:20:19.863 INFO 6852 --- [on(6)-127.0.0.1] o.s.c.c.s.ConsulServiceRegistry   : Deregistering service with consul: xxxxxxxxxxxxx 

This blog post discusses this.

+0

うん、私は同様にそれらの線に沿って考えていたが、私のログには私は「領事を辞めて....」という情報メッセージが表示されます。 – Gandalf

+0

@ガンダルあなたのDockerfileでこのフォームを使用していますか? {CMD exec java -jar microservice.jar} 私のconsul/docker/spring-bootセットアップでは、サービスは正しく登録抹消されています。違いは、私には領事代理人がいないことです。私のマイクロサービスは、ブートストラップモードの領事サーバーに直接話します。 – cherit

関連する問題