Jika Anda menerima kesalahan Destination Host Unreachable saat melakukan ping ke titik akhir internal dari instance Tair, lihat solusi dalam topik ini.
Gejala
Anda tidak dapat melakukan ping ke titik akhir internal dari instance Tair dari sebuah Instance ECS atau Kontainer Docker. Kesalahan Destination Host Unreachable dikembalikan.
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 UnreachablePenyebab
Masalah ini biasanya terjadi karena blok CIDR internal dari Instance ECS atau Kontainer Docker bertentangan dengan blok CIDR dari instance Tair. Untuk memverifikasi hal ini, lakukan langkah-langkah berikut:
Ping titik akhir internal dari instance Tair untuk mendapatkan alamat IP internalnya.
Dalam contoh ini, alamat IP internal dari instance Tair adalah
172.17.0.31.Kueri tabel rute dari klien.
Sebagai contoh, dalam sebuah Kontainer Docker yang berjalan di Linux, Anda dapat menjalankan perintah
route -nuntuk melihat informasi routing. Outputnya mirip dengan berikut: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-350b446c181aOutput menunjukkan bahwa blok CIDR dari kartu antarmuka jaringan (NIC)
br-350b446c181aadalah172.17.0.0/24. Blok CIDR ini bertentangan dengan alamat IP internal dari instance Tair. Akibatnya, Docker tidak dapat merutekan paket ke instance Tair.
Pendekatan pemecahan masalah
Ubah konfigurasi jaringan dari klien atau instance Tair untuk menyelesaikan konflik tersebut.
Solusi
Solusi 1: Ubah blok CIDR default dari layanan klien
Contoh ini menggunakan Kontainer Docker pada Linux yang menggunakan bridge `docker0` default.
Menghentikan layanan Docker atau mengubah blok CIDR default akan mengganggu layanan Anda. Kami sarankan Anda melakukan operasi ini selama jam-jam sepi.
Saat Anda mengubah blok CIDR default, pastikan itu kompatibel dengan pengaturan jaringan kontainer dan aplikasi yang ada untuk mencegah masalah koneksi.
Hentikan layanan Docker.
sudo systemctl stop dockerEdit file konfigurasi Docker. File tersebut biasanya terletak di
/etc/docker/daemon.jsonatau/etc/docker/daemon.conf. Nama file mungkin berbeda.sudo vim /etc/docker/daemon.jsonTambahkan konten berikut ke dalam file. Kami sarankan Anda mencadangkan file asli sebelum membuat perubahan.
{ "bip":"Blok CIDR baru" }Ubah blok CIDR menjadi satu yang tidak bertentangan dengan instance Tair. Sebagai contoh, jika alamat IP internal dari instance Tair adalah
172.17.0.31, Anda dapat mengatur blok CIDR baru menjadi 192.168.0.1/24.Simpan dan tutup file konfigurasi.
Mulai layanan Docker untuk menerapkan perubahan.
sudo systemctl start docker
Solusi 2: Ubah vSwitch dari Tair instance
Anda dapat mengubah vSwitch dari instance Tair untuk memastikan bahwa blok CIDR vSwitch tidak bertentangan dengan blok CIDR klien.
Karena VPC yang berbeda tidak dapat berkomunikasi melalui jaringan internal, Anda hanya dapat mengubah vSwitch jika berada dalam VPC yang sama.
Mengubah vSwitch menyebabkan gangguan koneksi sementara yang berlangsung sekitar 30 detik. Kami sarankan Anda melakukan operasi ini selama jam-jam sepi dan memastikan bahwa aplikasi Anda memiliki mekanisme penyambungan otomatis.