全部產品
Search
文件中心

ApsaraDB RDS:串連RDS執行個體失敗,ping RDS執行個體內網地址時提示Destination Host Unreachable

更新時間:Nov 02, 2024

串連RDS執行個體失敗,且ping RDS內網地址時提示Destination Host Unreachable

問題現象

從ECS執行個體無法ping通RDS內網地址,返回Destination Host Unreachable

PING rm-bpxxxx.mysql.rds.aliyuncs.com (172.17.0.31) 56(84) bytes of data.
From xxxx (172.17.0.1) icmp_seq=1 Destination Host Unreachable
From xxxx (172.17.0.1) icmp_seq=2 Destination Host Unreachable
From xxxx (172.17.0.1) icmp_seq=3 Destination Host Unreachable

問題原因

原因通常是RDS執行個體的內網網段與其他服務的網段衝突。

分析過程

  1. 使用PING命令ping RDS內網地址,可以看到RDS內網IP。從上述例子中,可以看到RDS執行個體內網IP為172.17.0.31

  2. 以Linux系統為例,執行route-n命令查看路由,返回資訊類似如下。

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.17.2.253    0.0.0.0         UG    0      0        0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
    172.17.0.0      0.0.0.0         255.255.255.0   U     0      0        0 br-350b446c181a

    返回資訊顯示網卡br-350b446c181a的網段為172.17.0.0/24,與RDS內網IP地址衝突,導致ECS執行個體無法路由到RDS執行個體。

    這種情況通常是Container Service的網段與RDS網段衝突。下面以Container Service為例,介紹如何解決路由衝突問題。

解決方案

方案一:修改Container Service的預設網段

重要
  • 本方案不適用RDS SQL Server執行個體,RDS SQL Server執行個體請直接參考方案二處理。

  • 停止Docker或者修改Docker預設網段會中斷業務,建議業務低峰期進行操作。

  • 修改Docker預設網段時請確保與任何現有容器和應用程式的網路設定相容,以避免潛在的串連問題。

以Linux系統為例,操作如下。

  1. 停止Docker服務。

    sudo systemctl stop docker
  2. 編輯Docker設定檔。Docker設定檔通常位於/etc/docker/daemon.json/etc/docker/daemon.conf(具體檔案名稱可能有所不同)。

    sudo vim /etc/docker/daemon.json

    確保檔案內容如下。

    {
        "bip": "新的網路網段"
    }

    例如,將新的網路網段設定為192.168.0.0/16。

  3. 儲存並關閉設定檔。

  4. 啟動Docker服務使修改生效。

    sudo systemctl start docker

方案二:切換RDS執行個體的交換器

您可以切換RDS執行個體的交換器,使執行個體的交換器網段不與Container Service的網段衝突。

重要

預設情況下,不同VPC之間無法內網互連。建議僅切換交換器,不切換VPC,這樣不會影響其他阿里雲服務與RDS執行個體的內網串連。

相關文檔