記事ディレクトリ
領事登録センター サービス すべてのサービス チェックに失敗しました
質問1:登録はできるが、エラーが発生し、ミドルウェアが利用できない
- 現象:サービスを開始してアクセスできるが、登録センターに赤十字が表示される
All service checks failing
- 理由: ほとんどの場合、プログラムにエラーがあります
- まず、サービスの起動ログを確認して、エラーがないかどうかを確認します.起動ログに明らかなエラーがある場合は、それに応じて解決できます.
- 設定ファイルに設定されているミドルウェアのほとんどが接続できず、チェックに失敗する
- たとえば、
redis
サービス接続障害、データベース接続障害、kafka
接続障害が発生しました
- 解決策: すべての依存ミドルウェアを開始して、通常のアクセスを確保します
質問 2: 登録はでき、エラーは報告されていませんが、検査に合格できません
-
現象: これは、サードパーティのサービスを呼び出してサービスを提供する、新しく追加されたマイクロサービスです.バージョン
SDK
しかないため、このサービスはシステムにのみ展開でき、登録センターは内部にあり、ネットワークは開かれています. の単一のマイクロサービスが開始され、起動ログにエラー メッセージがなく、登録が成功しています。サービス インターフェイスは正常に呼び出すことができますが、登録センターに赤いバツ印があり、検証に失敗しますwindows
SDK
windows
consul
linux
windows
All service checks failing
-
理由: 登録センターの情報を確認したところ、ヘルスチェックのアドレスが間違っていることがわかりました.それはイントラネットアドレス (
192.168.1.x
) であり、windows
マシンには複数のネットワークカードがありました.マシンのアドレスの1つがip
代わりに取られました.実際の接続アドレス (183.169.xxx.xx
)、その結果、ヘルスチェックhttp
アクセス
-
解決策: 構成ファイルで、ヘルス チェックのアドレスを直接指定し、それにアクセス可能なローカル IP を設定します。
spring:
cloud:
consul:
discovery:
health-check-url: http://183.169.xxx.xx:xxxx/management/health
質問3:同じサービスが何度も登録されている
- 現象: サービスの再起動後、新しいマイクロサービスが追加され、以前のサービスは登録センターから削除されず、ヘルス ステータスも緑色になります。
- 理由: InstantId が異なり、レジストリ サービスの監視で使用される URL が同じです
-
乱数が追加されたサービスの InstantId。サービスが開始されるたびに新しい InstantId が生成されます。
-
InstantId は異なりますが、レジストリ サービスの監視で使用される URL は同じです
-
同じマシンで再起動を繰り返すと、レジストリに参加するために異なるインスタント ID を持つ多くのサービスが追加され、監視に使用される URL は同じです.最新のサービスが正常に開始された後、レジストリの監視が渡され、残りの
-
元の構成
-
spring:
cloud:
consul:
discovery:
healthCheckPath: /management/health
instanceId: data-analysis:${spring.application.instance-id:${random.value}}
service-name: data-analysis
- サービス名が同じで InstantId が異なるサービスはすべてレジストリに追加され、すべて最新のマイクロサービスをチェックします
- 解決策:乱数を削除するだけです
- instanceId 行をコメントアウトし、IP ポート番号を使用して生成し
服务名-ip地址-端口号
、instance-id
一貫性が必要な場合は一貫していることを確認します (同じ IP ポート) - 追加
heartbeat.enabled=true
、ttl
ハートビート監視サービスの監視ステータスを使用 - 変更された構成
- instanceId 行をコメントアウトし、IP ポート番号を使用して生成し
spring:
cloud:
consul:
discovery:
healthCheckPath: /management/health
instance-id: ${spring.application.name}-${spring.cloud.client.ip-address}-${server.port}
service-name: ${spring.application.name}
heartbeat:
enabled: true # 为true使用 ttl 方式,默认false使用 http 方式
注: ${spring.cloud.client.*} は、Spring Boot 構成ファイルが環境変数を読み取ることができる機能を使用しており、アプリケーションは Spring Boot アクチュエーターを統合する必要があります。