エラーメッセージ
HSFServiceAddressNotFoundException: 呼び出し対象のサービスのアドレスが見つからない場合に、このエラーが報告されます。
説明
呼び出し対象のサービスは xxxx で、xxxx グループに属しています。
基本的なトラブルシューティング
サービスが正しく公開および呼び出されているかどうかを確認します。
サービスが公開されているかどうかを確認します。 日次環境、ステージング環境、オンライン環境などのサービス環境で、[マイクロサービスガバナンス] コンソールで必要なサービスを照会できます。
サービスプロバイダーとコンシューマーの XML ファイルで設定されている インターフェース、バージョン、および グループ パラメーターがコード内で一致しているかどうかを確認します。 これらの設定のコードセグメントは大文字と小文字が区別され、スペースが前後に続いてはいけません。
サービスプロバイダーの IP アドレスと High-speed Service Framework (HSF) ポートが Telnet 経由で適切に接続されているかどうかを確認します。 デフォルトでは、ポート番号は 12200 です。 IP アドレスとポートを適切に接続できない場合は、ファイアウォールが有効になっているか、ネットワーク接続に失敗しています。 この場合は、関連する開発者に連絡してトラブルシューティングを行う必要があります。
複数のネットワークインターフェースコントローラー (NIC) が存在するかどうかを確認します。 複数の NIC が存在する場合は、
-Dhsf.server.ip
を使用してサービスプロバイダーの IP アドレスを指定します。オンプレミス開発環境では、Java Virtual Machine (JVM) 起動パラメーターを設定できます。
本番環境では、関連する開発者に連絡してトラブルシューティングを行う必要があります。
サービスコールが早期に開始されたかどうかを確認します。 ConfigServer がアドレスをプッシュする前にコールが開始された場合、エラーが発生します。 maxWaitTimeForCsAddress の設定をサービスコンシューマーの設定項目に追加します。 詳細については、「開発者ガイド」をご参照ください。
オンプレミス開発環境でのトラブルシューティング
軽量設定センターを開発に使用する場合、サービスの公開とサブスクリプションに認証は必要ありません。 したがって、サービスは適切に起動された後に登録およびサブスクライブできます。 基本的なトラブルシューティングの後、以下の操作を実行します。
軽量設定センターのエラーをトラブルシューティングします。
サービスプロバイダーのエラーをトラブルシューティングします。
軽量設定センターコンソールでサービスの公開に失敗した場合は、以下の手順に従ってトラブルシューティングを実行します。
ping jmenv.tbsite.net コマンドを実行して、アドレスサーバーの IP アドレスが軽量設定センターの IP アドレスと同じであるかどうかを確認します。
/{userhome}/logs/ ディレクトリと /{userhome}/configclient/ ディレクトリにあるファイルをクリアします。
サービスプロバイダーを起動します。 Tomcat が起動している場合は、再起動します。
Tomcat 起動ログを確認します。
ログに例外が含まれていない場合は、起動時間が表示されます。 単位: ミリ秒。
ログに例外が含まれている場合は、例外を解決します。
/{userhome}/configclient/logs/configclient.log ファイルまたは /{userhome}/logs/configclient/configclient.log ファイルを確認して、
Connecting to remoting://{IP address}
を使用して接続されたレジストリの IP アドレスが軽量設定センターの IP アドレスと同じであるかどうかを判断します。 異なるバージョンの 2 つのファイルにはわずかな違いがあります。 IP アドレスが異なる場合は、-Daddress.server.ip={アクセス可能な IP アドレス}
を使用して軽量設定センターの IP アドレスが変更されているかどうかを確認します。サービス名、バージョン、およびグループが予期されたものであるかどうかを確認します。
[Register-ok][Publish-ok] が表示された場合、サービスプロバイダーはサービスレジストリに登録されています。 開発環境では、サービスは起動後に登録できます。
説明開発中、A、B、C などの複数のサービスプロバイダーが同じインスタンスで起動される場合があります。 各サービスプロバイダーによって提供される HSF ポート番号は、ポート番号 12200 から順番に増加します。 また、JVM パラメーター
-Dhsf.server.ip=<ip> -Dhsf.server.port=<port>
を使用して IP アドレスとポート番号を指定することもできます。 軽量設定センターでは、プロバイダーポートが使用されているポートと一致するかどうかを確認できます。 一致しない場合、サービスプロバイダーの呼び出しが失敗する可能性があります。 軽量設定センターコンソールでプロバイダーポートを更新するか、サービスを削除してアプリケーションを再公開できます。サービスコンシューマーのエラーをトラブルシューティングします。
ping jmenv.tbsite.net コマンドを実行して、アドレスサーバーの IP アドレスが軽量設定センターの IP アドレスと同じであるかどうかを確認します。
サービスコンシューマーを起動します。 Tomcat が起動している場合は、再起動します。
Tomcat 起動ログを確認します。
ログに例外が含まれていない場合は、起動時間が表示されます。 単位: ミリ秒。
ログに例外が含まれている場合は、例外を解決します。
/{userhome}/configclient/logs/configclient.log
ファイルまたは/{userhome}/logs/configclient/configclient.log
ファイルを確認して、Connecting to remoting://{IP address}
を使用して接続されたレジストリの IP アドレスが軽量設定センターの IP アドレスと同じであるかどうかを判断します。 異なるバージョンの 2 つのファイルにはわずかな違いがあります。 IP アドレスが異なる場合は、-Daddress.server.ip={アクセス可能な IP アドレス}
を使用して軽量設定センターの IP アドレスが変更されているかどうかを確認します。サービスサブスクリプション情報のログを確認します。
[Data-received]
に基づいて、サービスプロバイダーに関する具体的な情報が受信されているかどうかを確認します。 サービスプロバイダー情報が受信されない場合は、サービスプロバイダーが登録されているかどうかを確認します。サービスプロバイダーの IP アドレスとポートがコンシューマーインスタンスで Telnet 経由で接続できるかどうかを確認します。 IP アドレスとポートを適切に接続できない場合は、ファイアウォールが有効になっているか、ネットワーク接続に失敗しています。 この場合は、関連する開発者に連絡してトラブルシューティングを行う必要があります。
オンライン環境でのトラブルシューティング
Enterprise Distributed Application Service (EDAS) で管理およびデプロイされるアプリケーションは、厳格なサービス認証とデータ分離が有効になっている本番環境にあります。 認証のため、本番環境では Alibaba Cloud アカウント間でサービスを呼び出すことができず、本番環境のサービスを開発環境から呼び出したりアクセスしたりすることはできません。
サービスプロバイダーのエラーをトラブルシューティングします。
-Daddress.server.domain=={アドレスサーバーのドメイン名}
id="codeph_hor_1ki****">cat /home/admin/{taobao-tomcat directory}/bin/setenv.sh ファイルの に対応するアドレスサーバーのドメイン名を確認します。ping {アドレスサーバーのドメイン名}
コマンドを実行して、返された IP アドレスが正常かどうかを確認します。 ドメイン名を ping できない場合は、ネットワーク接続に失敗しています。 この場合は、ネットワーク接続を確認します。/home/admin/logs/、/home/admin/configclient/、および /home/admin/{taobao-tomcat directory}/logs/ ディレクトリにあるファイルをクリアします。
サービスプロバイダーを起動します。 Tomcat が起動している場合は、再起動します。
/home/admin/{taobao-tomcat directory}/logs/catalina.out ファイルを確認します。
ファイルに例外が含まれていない場合は、起動時間が表示されます。 単位: ミリ秒。
ファイルに例外が含まれている場合は、例外を解決します。
/home/admin/{taobao-tomcat directory}/logs/localhost-{日付}.log ファイルに例外が含まれているかどうかを確認します。 ファイルに例外が含まれている場合は、例外を解決します。
/home/admin/configclient/logs/configclient.log ファイルまたは /home/admin/logs/configclient/configclient.log ファイルを確認します。 異なるバージョンの 2 つのファイルにはわずかな違いがあります。 [Register-ok][Publish-ok] が表示された場合は、サービス名、バージョン、およびグループが予期されたものであるかどうかを確認します。 [Publish or unregister error] が表示された場合は、エラーをトラブルシューティングします。
edas.hsf.xxxx
catalina.out ログファイルの バージョンを確認します。バージョンが
edas.hsf.2114.1.0
より前の場合、必要なサービスグループを作成する必要があります。 そうしないと、認証に失敗します。 EDAS コンソールにログオンします。 左側のナビゲーションペインで、 を選択して、アプリケーションのサービスグループが作成されているかどうかを確認します。バージョンが
edas.hsf.2114.1.0
以降の場合、マルチテナントデータ分離が提供されます。 サービスグループを作成する必要はありません。 サービスは 2 回登録されます。テナントに基づいて登録され、グループに基づいて登録されます。 テナントベースの登録は常に成功します。 グループベースの登録は失敗する可能性がありますが、サービスコールには影響しません。2018-07-19 10:28:44.716|ERROR|[] [] [%s] [Publish or unregister error] spas-authentication-failed! dataId:com.alibaba.edas.testcase.api.TestCase:1.0.0 group:test error:java.lang.Error: A receivedRevision:2 tenant:DEFAULT_TENANT 2018-07-19 10:28:44.717|INFO|[] [] [] [Register-ok] Publisher (HSFProvider-com.alibaba.edas.testcase.api.TestCase:1.0.0.2 for com.alibaba.edas.testcase.api.TestCase:1.0.0)Tenant:0846c173-decf-4b47-xxxxxxxx in group test in env default 2018-07-19 10:28:44.717|INFO|[] [] [] [Publish-ok] dataId=com.alibaba.edas.testcase.api.TestCase:1.0.0, clientId=HSFProvider-com.alibaba.edas.testcase.api.TestCase:1.0.0.2, datumId=ecu:ed5b9d2b-a276-4ad7-b7b9-14e432ff****:192.168.xx.xx,tenant=0846c173-decf-4b47-xxxxxxxx, rev=2, env=default
上記のエラーログは、
tenant:DEFAULT_TENANT
を使用した認証が失敗したが、tenant=0846c173-decf-4b47-xxxxxxxx
を使用したサービス公開は成功したことを示しています。 少なくとも 1 つの認証操作が成功していることを確認します。返されたメッセージに [Register-ok][Publish-ok] が表示された場合、サービスプロバイダーはサービスレジストリに登録されています。
サービスコンシューマーのエラーをトラブルシューティングします。
cat /home/admin/{taobao-tomcat directory}/bin/setenv.sh
コマンドを実行して、-Daddress.server.domain={アドレスサーバーのドメイン名}
に対応するアドレスサーバーのドメイン名を確認します。ping {アドレスサーバーのドメイン名}
コマンドを実行して、返された IP アドレスが正常かどうかを確認します。 ドメイン名を ping できない場合は、ネットワーク接続に失敗しています。 この場合は、ネットワーク接続を確認します。/home/admin/logs/、/home/admin/configclient/、および /home/admin/{taobao-tomcat directory}/logs/ ディレクトリにあるファイルをクリアします。
サービスコンシューマーを起動します。 Tomcat が起動している場合は、再起動します。
/home/admin/{taobao-tomcat directory}/logs/catalina.out ファイルを確認します。
ファイルに例外が含まれていない場合は、起動時間が表示されます。 単位: ミリ秒。
ファイルに例外が含まれている場合は、例外を解決します。
/home/admin/{taobao-tomcat directory}/logs/localhost-{日付}.log ファイルに例外が含まれているかどうかを確認します。 ファイルに例外が含まれている場合は、例外を解決します。
サービスサブスクリプション情報の /home/admin/configclient/logs/configclient.log ファイルまたは /home/admin/logs/configclient/configclient.log ファイルを確認します。 異なるバージョンの 2 つのファイルにはわずかな違いがあります。 必要なサービスを検索し、返されたメッセージの [Data-received] に基づいて、サービスプロバイダーに関する具体的な情報が受信されているかどうかを確認します。 サービスプロバイダー情報が受信されない場合は、サービスプロバイダーが登録されているかどうかを確認します。
サービスプロバイダーの IP アドレスとポートがコンシューマーインスタンスで Telnet 経由で接続できるかどうかを確認します。 IP アドレスとポートを適切に接続できない場合は、ファイアウォールが有効になっているか、ネットワーク接続に失敗しています。 この場合は、関連する開発者に連絡してトラブルシューティングを行う必要があります。
関連ログを使用してエラーをトラブルシューティングします。
/home/admin/configclient/snapshot/DEFAULT_ENV/ でコンシューマーによるサブスクリプションサービスを確認します。
[root@iZ2ze26awga24ijh93152dZ com.alibaba.edas.carshop.itemcenter.ItemService:1.0.0]# cat HSF-0846c173-decf-4b47-8aa0-xxxxxx.dat [ "192.168.xx.xx:12200?_p\u003dhessian2\u0026_ENV\u003dDEFAULT\u0026v\u003d2.0\u0026_TIMEOUT\u003d3000\u0026_ih2\u003dy\u0026_TID\u003d0846c173-decf-4b47-8aa0-04b5a561****\u0026_SERIALIZETYPE\u003dhessian\u0026_auth\u003dy" ]
/home/admin/logs/hsf/hsf.log ファイルでサービスコールエラーを確認します。
/home/admin/logs/hsf/hsf-remoting.log ファイルでコンシューマーとプロバイダーのハートビートチェックログを確認します。
01 2018-06-20 12:35:00.797 ERROR [HSF-Worker-2-thread-1:hsf.remoting] [] [] [HSF-0085] [remoting] fail to connect: /192.168.xx.xx:12200 in timeout: 4000
上記のログは、コンシューマーとプロバイダー間で永続的な TCP 接続を確立できないことを示しています。
インスタンス IP アドレスに対応するサービスが起動しているかどうか、および関連ポート (ポート 12200 など) がリッスンされているかどうかを確認します。
サービスが起動していてポートがリッスンされている場合は、プロバイダーのポートがコンシューマーで Telnet 経由でアクセスできるかどうかを確認します。