Tair インスタンスの内部エンドポイントに ping を実行したときに Destination Host Unreachable エラーが表示された場合は、このトピックのソリューションをご参照ください。
症状
Elastic Compute Service (ECS) インスタンスまたは Docker コンテナーから Tair インスタンスの内部エンドポイントに ping を実行できません。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 コンテナーの内部 CIDR ブロックが Tair インスタンスの CIDR ブロックと競合するために発生します。これを確認するには、次のステップを実行します。
Tair インスタンスの内部エンドポイントに ping を実行して、その内部 IP アドレスを取得します。
この例では、Tair インスタンスの内部 IP アドレスは
172.17.0.31です。クライアントのルートテーブルをクエリします。
たとえば、Linux で実行されている Docker コンテナーでは、
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ネットワークインターフェイスカード (NIC) の CIDR ブロックが172.17.0.0/24であることを示しています。この CIDR ブロックは、Tair インスタンスの内部 IP アドレスと競合します。その結果、Docker はパケットを Tair インスタンスにルーティングできません。
トラブルシューティングのアプローチ
クライアントまたは Tair インスタンスのネットワーク構成を変更して、競合を解決します。
ソリューション
ソリューション 1:クライアントサービスのデフォルト CIDR ブロックを変更する
この例では、デフォルトの `docker0` ブリッジを使用する Linux 上の Docker コンテナーを使用します。
Docker サービスを停止するか、そのデフォルトの CIDR ブロックを変更すると、サービスが中断されます。この操作は、オフピーク時に実行することをお勧めします。
デフォルトの CIDR ブロックを変更するときは、接続の問題を防ぐために、既存のコンテナーおよびアプリケーションのネットワーク設定と互換性があることを確認してください。
Docker サービスを停止します。
sudo systemctl stop dockerDocker 構成ファイルを編集します。ファイルは通常、
/etc/docker/daemon.jsonまたは/etc/docker/daemon.confにあります。ファイル名は異なる場合があります。sudo vim /etc/docker/daemon.jsonファイルに次の内容を追加します。変更を加える前に、元のファイルをバックアップすることをお勧めします。
{ "bip":"New CIDR block" // 新しいCIDRブロック }CIDR ブロックを、Tair インスタンスと競合しないものに変更します。たとえば、Tair インスタンスの内部 IP アドレスが
172.17.0.31の場合、新しい CIDR ブロックを 192.168.0.1/24 に設定できます。構成ファイルを保存して閉じます。
Docker サービスを開始して変更を適用します。
sudo systemctl start docker
注:Tair
Tair インスタンスの vSwitch を 変更 して、vSwitch の CIDR ブロックがクライアントの CIDR ブロックと競合しないようにすることができます。
異なる VPC は内部ネットワーク経由で通信できないため、vSwitch が同じ VPC 内にある場合にのみ vSwitch を変更できます。
vSwitch を変更すると、約 30 秒間の一時的な接続中断が発生します。この操作はオフピーク時に実行し、アプリケーションに自動再接続メカニズムがあることを確認することをお勧めします。