すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:MSE Nacosインスタンスのドメイン名の解決に失敗した場合の対処方法

最終更新日:Feb 13, 2025

このトピックでは、マイクロサービスエンジン(MSE)Nacosインスタンスのドメイン名の解決に失敗した場合のトラブルシューティング方法について説明します。

問題の説明

アプリケーションが MSE Nacosインスタンスに接続されているときに、インスタンスのドメイン名の解決に失敗し、次のエラーメッセージが返される場合があります。
  • UnknownHostException
  • No route to host
  • Unable to resolve host

原因

  • アプリケーションノードの DNS サーバーまたはネームサーバーが正しく構成されていません。その結果、MSE Nacosインスタンスのドメイン名の解決に失敗します。
  • コンテナがホストの DNS サーバーまたはネームサーバーを使用していないか、ネットワークタイプが無効です。その結果、MSE インスタンスのドメイン名の解決に失敗します。
  • アプリケーションノードに構成されている DNS サーバーまたはネームサーバーに障害が発生しています。たとえば、Kubernetes クラスターに必要な CoreDNS が失敗します。その結果、MSE インスタンスのドメイン名の解決に失敗します。

解決策

解決策 1:dig コマンドを使用する

次のコマンドを実行して、dig ツールをインストールします。

yum install -y bind-utils

次のコードにリストされている dig コマンドを使用して、インスタンスのドメイン名を解決してみてください。status フィールドと SERVER フィールドの値に基づいて、ドメイン名が正しく解決されているかどうかを確認します。

status フィールドの値が NOERROR で、SERVER フィールドで指定された DNS サーバーまたはネームサーバーが有効な場合、ドメイン名は正しく解決されます。

dig ${mse.nacos.host}

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.1.alios7.2 <<>> ${mse.nacos.host}
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN ## status フィールドの値を確認します。 id: 46791
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;${mse.nacos.host}. IN A

;; AUTHORITY SECTION:
com.                    900     IN      SOA     a.gtld-servers.net. nstld.verisign-grs.com. 1670413473 1800 900 604800 86400

;; Query time: 0 msec
## SERVER フィールドの値を確認します。
;; SERVER: yyy.yyy.yyy.yyy#zz(...)
;; WHEN: Wed Dec 07 19:39:32 CST 2022
;; MSG SIZE  rcvd: 73
  • dig コマンドを使用してドメイン名を解決できない場合は、次のいずれかの方法を使用して問題を修正します。
    • Elastic Compute Service(ECS)インスタンスを使用して環境をデプロイする場合は、SERVER フィールドに DNS サーバーまたはネームサーバーの IP アドレスを記録します。次に、チケットを送信するを送信して、ECS またはネットワークテクニカルサポートに連絡し、ドメイン名解決の失敗の原因を特定してもらいます。
    • Docker または Kubernetes クラスターを使用して環境をデプロイする場合は、ホストまたはノードにアクセスし、dig コマンドを再度実行して、ドメイン名を解決してみてください。
      • ドメイン名解決が成功した場合、ネットワークタイプが無効であるか、コンテナ内の DNS サーバーまたはネームサーバーの構成がノードの構成と異なっています。この場合は、ネットワークタイプを変更するか、ノードの /etc パスにある resolv.conf ファイルの構成情報をコンテナに移行し、ドメイン名を再度解決してみてください。
      • ドメイン名を解決できない場合は、チケットを送信するを送信して、ECS またはネットワークテクニカルサポートに連絡し、ドメイン名解決の失敗の原因を特定してもらいます。
  • dig コマンドを使用してドメイン名を解決でき、アプリケーションが正常に復元された場合、DNS サーバーまたはネームサーバーに障害が発生しています。チケットを送信するを送信して、ネットワークテクニカルサポートに連絡し、DNS サーバーまたはネームサーバーの障害の原因を特定してもらいます。

    Container Service for Kubernetes(ACK)クラスターを使用して環境をデプロイする場合は、チケットを送信するを送信して、ACK テクニカルサポートに連絡し、CoreDNS 障害の原因を特定してもらいます。

解決策 2:ping コマンドを使用する

  1. ping ${mse.nacos.host} コマンドを実行して、ドメイン名を解決してみてください。
    • unknown host というメッセージが表示された場合、ドメイン名の解決に失敗しています。
    • PING ${mse.nacos.host} (xxx.xx.xx.xx) 56(84) bytes of data. というメッセージが表示された場合、ドメイン名は正常に解決されています。
  2. ping コマンドを使用してドメイン名を解決できない場合は、/etc パスにある resolv.conf ファイルの内容を表示し、DNS サーバーまたはネームサーバーの IP アドレスを取得し、次のいずれかの方法を使用して問題を修正してみてください。
    • ECS インスタンスを使用して環境をデプロイする場合は、/etc パスにある resolv.conf ファイルの内容を記録し、チケットを送信するを送信して、ECS またはネットワークテクニカルサポートに連絡し、ドメイン名解決の失敗の原因を特定してもらいます。
    • Docker または Kubernetes クラスターを使用して環境をデプロイする場合は、ホストまたはノードにアクセスし、ping コマンドを再度実行して、ドメイン名を解決してみてください。
      • ドメイン名解決が成功した場合、ネットワークタイプが無効であるか、コンテナ内の DNS サーバーまたはネームサーバーの構成がノードの構成と異なっています。この場合は、ネットワークタイプを変更するか、ノードの /etc パスにある resolv.conf ファイルの構成情報をコンテナに移行し、ドメイン名を再度解決してみてください。
      • ドメイン名を解決できない場合は、チケットを送信するを送信して、ECS またはネットワークテクニカルサポートに連絡し、ドメイン名解決の失敗の原因を特定してもらいます。
  3. ping コマンドを使用してドメイン名を解決でき、アプリケーションが正常に復元された場合、DNS サーバーまたはネームサーバーに障害が発生しています。チケットを送信するを送信して、ネットワークテクニカルサポートに連絡し、DNS サーバーまたはネームサーバーの障害の原因を特定してもらいます。

    ACK クラスターを使用して環境をデプロイする場合は、チケットを送信するを送信して、ACK テクニカルサポートに連絡し、CoreDNS 障害の原因を特定してもらいます。