接続アドレスを使用して ApsaraDB for Redis インスタンスに接続すると、DNS (Domain Name System) サービスの問題により、ECS インスタンスが接続アドレスの解決に失敗します。 その結果、ECS インスタンスは ApsaraDB for Redis インスタンスから切断されます。 このトピックの手順に従って、この問題を解決することができます。

背景

さまざまな理由により、ECS インスタンスと ApsaraDB for Redis インスタンス間で接続の問題が発生する可能性があります。 DNS 解決エラーが一般的な原因です。 システムで UnknownHostExceptionfailed to connect: r-***************.redis.rds.aliyuncs.com could not be resolved などのエラーが生成される場合、ホスト名が不明か、接続アドレスの解決に失敗しています。 ドメイン名と DNS サーバーの設定が正しいかどうかを確認し、DNS キャッシュをリフレッシュします。

次の例では、Linux オペレーティングシステムでの手順を説明します。

手順

  1. ApsaraDB for Redis インスタンスのサービスコード内のエンドポイント (接続アドレス) が正しいかどうかを確認します。
  2. # cat /etc/resolv.conf コマンドを実行して、ECS インスタンスの /etc/resolv.conf ファイルに DNS サーバーの正しい IP アドレスが指定されていることを確認します。DNS サーバーの IP アドレスの確認
    • DNS サーバーが指定されていない場合は、# vi /etc/resolv.conf コマンドを実行して、/etc/resolv.conf ファイルを編集します。 前の図に示された形式で DNS サーバーの IP アドレスを追加します。 次に、キーボードの Esc を押して、:wq を入力し、Enter キーを押して変更を保存します。
    • ECS インスタンスでデフォルトの DNS サーバーを使用するか、安全で安定した別の DNS サーバーを使用することを推奨します。
  3. DNS サービスに応じて、次のいずれかの方法で DNS キャッシュをクリアします。
    • Name Service Cache Daemon (nscd) の DNS キャッシュをクリアします。
      # service nscd restart

      または、次のコマンドを実行します。

      # service nscd reload
    • dnsmasq の DNS キャッシュをクリアします。
      # service dnsmasq restart
    • Berkely Internet Name Domain (BIND) サーバーの DNS キャッシュをクリアします。
      # /etc/init.d/named restart

      または、次のコマンドを実行します。

      # rndc restart
問題が解決しない場合は、AdisaraDB for Redis インスタンスのドメイン名と IP アドレスのマッピングを /etc/hosts ファイルに追加してドメイン名が正しく解決されるようにします。 次に、「ApsaraDB for Redis の接続問題のトラブルシューティング」の手順を実行し、他の原因による接続の問題を解決してください。 hosts ファイルの編集方法の詳細については、手順 2 と次の図をご参照ください。 この方法は一時的な解決方法です。 ApsaraDB for Redis インスタンスの IP アドレスが変更されると、この方法では解決できません。