ここでは、ECS インスタンスを RDS インスタンスに接続できない場合に、状況に応じてできることを説明します。

ECS を RDS に接続できない場合、一般的な理由の 1 つは、ECS インスタンスのネットワークタイプが RDS インスタンスのネットワークタイプと異なることです。 もう 1 つの一般的な理由は、RDS インスタンスの IP アドレスホワイトリストに必要な IP アドレスが含まれていないことです。 一般的な問題と対応する解決策を次に示します。

ECS と RDS のネットワークタイプの違い

ECS インスタンスが VPC で実行され、RDS インスタンスがクラシックネットワークで実行されている場合。

  • 解決策 1 (推奨):RDS インスタンスをクラシックネットワークから ECS インスタンスが存在する VPC に切り替えます。 詳細な手順については、「ネットワークタイプの設定」をご参照ください。
    切り替え後、RDS インスタンスを ECS インスタンスと同じ VPC で実行し、イントラネットを介して相互に通信できるようにする必要があります。
  • 解決策 2:クラシックネットワークで動作する別の ECS インスタンスを購入します (ECS インスタンスを VPC からクラシックネットワークに切り替えることはできません)。 VPC はクラシックネットワークよりも安全です。 そのため、VPC を使用することを推奨します。
  • 解決策 3:RDS インスタンスのインターネットアドレスを使用して、インターネット経由で ECS インスタンスを RDS インスタンスに接続します。 この解決策は、パフォーマンス、セキュリティ、および安定性の点で解決策 1 および 2 よりも劣っています。

ECS インスタンスがクラシックネットワークで実行され、RDS インスタンスが VPC で実行されている場合。

  • 解決策 1 (推奨):ECS インスタンスをクラシックネットワークから RDS インスタンスが存在する VPC に切り替えます。
    切り替え後、ECS インスタンスを RDS インスタンスと同じ VPC で実行し、イントラネットを介して相互に通信できるようにする必要があります。
  • 解決策 2:RDS インスタンスを VPC からクラシックネットワークに切り替えます。 ただし、VPC はクラシックネットワークよりも安全です。 そのため、VPC を使用することを推奨します。
  • 解決策 3:ClassicLink 機能を使用します。 この機能により、クラシックネットワークの ECS インスタンスは、イントラネットを介して VPC のリソースと通信できます。
  • 解決策 4:RDS インスタンスのインターネットアドレスを使用して、インターネット経由で ECS インスタンスを RDS インスタンスに接続します。 この解決策は、パフォーマンス、セキュリティ、および安定性の点で解決策 1、2、および 3 よりも劣っています。

ECS と RDS の属する VPC の違い

VPC は、それぞれが Alibaba Cloud 上の論理的に分離されたネットワークです。 ECS インスタンスと RDS インスタンスの両方が VPC で実行される場合、イントラネットを介して互いに通信できるように、それらは同じ VPC に存在する必要があります。

  • 解決策 1 (推奨):RDS インスタンスを、ECS インスタンスが配置されている VPC に切り替えます。

    具体的には、まず RDS インスタンスを VPC からクラシックネットワークに切り替え、次にクラシックネットワークから ECS インスタンスが存在する VPC に切り替えます。 詳細な手順については、「ネットワークタイプの設定」をご参照ください。

  • 解決策 2:2 つの VPC 間に Express Connect チャネルを確立します。 詳細な手順については、「Alibaba Cloud CEN チュートリアル」を参照してください
  • 解決策 3:ECS インスタンスをインターネット経由で RDS インスタンスに接続します。 この解決策は、パフォーマンス、セキュリティ、および安定性の点で解決策 1 および 2 よりも劣っています。

ECS と RDS のリージョンの違い

ECS インスタンスが RDS インスタンスとは異なるリージョンにある場合、イントラネットを介して相互に通信できません。

  • 解決策 1:ECS または RDS インスタンスをリリースし、インスタンスを再度購入します。
  • 解決策 2:ECS インスタンスと RDS インスタンスのネットワークタイプを VPC に設定し、2 つの VPC 間に Express Connect チャネルを確立します。 詳細な手順については、「ネットワークタイプの設定」および「Alibaba Cloud CEN チュートリアル」をご参照ください。
  • 解決策 3:ECS インスタンスをインターネット経由で RDS インスタンスに接続します。 この解決策は、パフォーマンス、セキュリティ、および安定性の点で解決策 1 および 2 よりも劣っています。

間違った IP アドレスホワイトリスト設定

  • デフォルトのホワイトリストには IP アドレス 127.0.0.1 しか含まれていません。これは、どのデバイスからも RDS インスタンスにアクセスできないことを示します。 ECS インスタンスの IP アドレスをホワイトリストに追加する必要があります。 詳細な手順については、「RDS ホワイトリストの設定」をご参照ください。
  • ホワイトリストの IP アドレスが 0.0.0.0 になっている場合。 正しい形式は 0.0.0.0/0 です。
    0.0.0.0/0 は、すべてのデバイスが RDS インスタンスにアクセスできることを示します。 使用には注意が必要です。
  • ホワイトリストがセキュリティ強化モードに設定されている場合。 この場合、次の点を確認する必要があります。
    • ECS インスタンスを VPC アドレスを介して RDS インスタンスに接続する場合は、ECS インスタンスのプライベート IP アドレスが RDS インスタンスの VPC ホワイトリストに追加されていることを確認してください。
    • ECS インスタンスをクラシックネットワークアドレスを介して RDS インスタンスに接続する場合は、ECS インスタンスのプライベート IP アドレスが RDS インスタンスのクラシックネットワークホワイトリストに追加されていることを確認してください。
    • ECS インスタンスをインターネットアドレス経由で RDS インスタンスに接続する場合は、ECS インスタンスのパブリック IP アドレスが RDS インスタンスのクラシックネットワークホワイトリストに追加されていることを確認してください。 VPC ホワイトリストは、インターネットからのアクセスを制限しません。
  • ホワイトリストに追加されたパブリック IP アドレスが、ECS インスタンスの実際のインターネット向け IP アドレスではない場合。 考えられる理由は次の通りです。
    • パブリック IP アドレスが固定されておらず、可変になっている可能性があります。
    • IP アドレス照会ツールまたは Web サイトが、不正確な IP アドレスを返す可能性があります。

    実際のIPアドレスを確認するには、「実際の IP アドレスの確認方法」をご参照ください。

ドメイン名解決エラー

DNS (Domain Name System) サーバーに障害が発生した場合、またはそのネットワークインターフェイスカード (NIC) の設定が変更された場合、ドメイン名の解決に失敗する可能性があります。 ping および telnet コマンドを実行して、RDS インスタンスに正しく接続できるかどうかを確認できます。

ping <domain name>
telnet <domain name> <port number>        
例:
通信が異常な場合は、次の手順により、DNS サーバーの NIC 設定ファイルを変更して問題を解決できます。
  1. NIC 設定ファイルを変更します。
    vi /etc/sysconfig/network-scripts/<name of the NIC configuration file>
    <name of the NIC configuration file> フィールドに ECS サーバーが使用する NIC の名前を入力します。 ifconfig コマンドを実行して、サフィックスを確認できます。 デフォルトのサフィックスは ifcfg-eth0 です。
  2. NIC 設定ファイルの最後に次の情報に追加します。
    DNS1=100.100.2.136
    DNS2=100.100.2.138
    DNS1 および DNS2 パラメーターが設定されている場合、設定を上記の IP アドレスに変更する必要があります。
  3. 次のコマンドを実行してネットワークサービスを再起動します。
    systemctl restart network
  4. 次のコマンドを実行して、変更が成功したかどうかを確認します。
     cat /etc/resolv.conf