PING Tair執行個體內網地址時,如果出現Destination Host Unreachable報錯,請參考本文提供的解決方案。
問題現象
從ECS執行個體或Docker容器中無法PING通Tair執行個體的內網地址,返回Destination Host Unreachable報錯。
PING r-bp1****l7ein86xv6m.redis.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問題原因
通常是ECS執行個體或Docker容器的內網網段與Tair執行個體的網段衝突,您可以參考以下步驟進行驗證。
PING Tair執行個體的內網地址,查看其內網IP。
本樣本中,Tair執行個體的內網IP為
172.17.0.31。查詢用戶端服務的路由表。
以Docker容器(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,與Tair執行個體內網IP地址衝突,導致Docker無法路由到Tair執行個體。
解決思路
修改用戶端服務或者Tair執行個體的網路設定,保證相互不衝突。
解決方案參考
方案一:修改用戶端服務的預設網段
以Docker(Linux系統)使用預設dokcer0橋接器為例。
停止Docker或者修改Docker預設網段會中斷業務,建議業務低峰期進行操作。
修改Docker預設網段時請確保與任何現有容器和應用程式的網路設定相容,以避免潛在的串連問題。
停止Docker服務。
sudo systemctl stop docker編輯Docker設定檔(通常位於
/etc/docker/daemon.json或/etc/docker/daemon.conf,具體檔案名稱可能有所不同)。sudo vim /etc/docker/daemon.json確保檔案內容如下(修改前請備份原檔案)。
{ "bip":"新的網段" }將新的網段改為和Tair執行個體不衝突的網段。例如Tair執行個體的內網IP為
172.17.0.31,將新的網段設定為192.168.0.1/24。儲存並關閉設定檔。
啟動Docker服務使修改生效。
sudo systemctl start docker
方案二:切換Tair執行個體的交換器
您可以切換Tair執行個體的交換器,以確保執行個體的交換器網段與用戶端的網段不發生衝突。
由於不同VPC之間無法內網互連,建議僅切換同一VPC中的交換器。
切換過程中會有30秒閃斷,請在業務低峰期操作並確保應用程式具有重連機制。