Deskripsi Masalah
Jika Anda menggunakan instance Elastic Compute Service (ECS) Alibaba Cloud dalam jangka waktu lama tanpa melakukan restart, kemungkinan dapat terjadi masalah jaringan. Instance tersebut mungkin kehilangan koneksi jaringan, dan Anda mungkin tidak dapat melakukan ping ke alamat IP publik atau pribadinya.
Penyebab
Saat instance Elastic Compute Service (ECS) pertama kali dinyalakan, sistem menggunakan Protokol Konfigurasi Host Dinamis (DHCP) untuk secara otomatis menetapkan alamat IP ke elastic network interface (ENI) dan mendapatkan sewa dengan waktu kedaluwarsa. Dalam kondisi normal, proses dhclient di Linux dan layanan DHCP Client di Windows secara berkala memperbarui sewa dengan server DHCP untuk memastikan alamat IP tetap tersedia. Namun, pada instance yang dibuat dari beberapa citra CentOS 7 (lihat bagian Scope), proses dhclient dapat berhenti secara tak terduga. Selain itu, layanan DHCP Client di Windows Server memiliki masalah yang diketahui. Akibatnya, instance tidak dapat secara otomatis memperbarui sewa alamat IP-nya. Ketika sewa berakhir, alamat IP pribadi instance dilepaskan, yang mengakibatkan kegagalan koneksi jaringan.
Ruang Lingkup
Masalah ini memengaruhi instance ECS yang memenuhi kondisi berikut dan menggunakan DHCP untuk menetapkan alamat IP ke ENI mereka. Ikuti instruksi dalam topik ini untuk memperbaiki masalah tersebut. Jika instance ECS Anda menggunakan alamat IP statis, tidak diperlukan tindakan apa pun.
Instance yang dibuat dari citra publik CentOS 7 berikut sebelum 31 Mei 2018 dan belum direstart setelah 15 November 2018:
centos_7_04_64_20G_alibase_20180419.vhd
centos_7_04_64_20G_alibase_20180326.vhd
centos_7_04_64_20G_alibase_201701015.vhd
centos_7_03_64_20G_alibase_20170818.vhd
centos_7_02_64_20G_alibase_20170818.vhd
centos_7_03_64_40G_alibase_20170710.vhd
centos_7_03_64_40G_alibase_20170625.vhd
centos_7_03_64_40G_alibase_20170523.vhd
centos_7_03_64_40G_alibase_20170503.vhd
Instance yang menjalankan sistem operasi Windows Server berikut, dibuat sebelum 15 November 2018, dan belum direstart sejak itu:
Windows Server 2008 R2
Windows Server 2012 R2
Windows Server 2016
Windows Server Versi 1709
Solusi
Sebelum melakukan operasi berisiko tinggi, seperti memodifikasi instance atau datanya, pastikan instance memiliki kemampuan pemulihan bencana dan toleransi kesalahan untuk melindungi data Anda.
Sebelum memodifikasi konfigurasi atau data instance, seperti instance Elastic Compute Service (ECS) atau ApsaraDB RDS, buat snapshot atau aktifkan fitur seperti cadangan log untuk RDS.
Jika Anda telah memberikan izin atau mengirimkan informasi keamanan, seperti kredensial logon, di platform Alibaba Cloud, segera ubah informasi tersebut.
Pilih salah satu dari empat solusi dalam topik ini berdasarkan kebutuhan Anda.
Metode 1: Perbaikan massal menggunakan Asisten Cloud. Metode ini sederhana dan ideal untuk memperbaiki banyak instance dari Konsol ECS.
Metode 2: Skrip SDK Python. Metode ini menggunakan skrip Python berdasarkan API Asisten Cloud untuk memeriksa status instance di wilayah tertentu dan memperbaikinya secara otomatis. Cocok untuk pengguna yang terbiasa dengan operasi dan pemeliharaan berbasis skrip.
Metode 3: Skrip Shell dan PowerShell. Metode ini mengharuskan Anda masuk ke setiap instance ECS dan menjalankan skrip secara manual untuk memperbaiki masalah. Ideal untuk polling atau pengujian pada sejumlah kecil instance. Isi skrip sama dengan yang digunakan pada Metode 1.
Metode 4: Pemecahan masalah ENI satu per satu. Metode ini cocok untuk sejumlah kecil instance.
Metode 1: Perbaikan Massal dengan Asisten Cloud
Contoh ini menunjukkan cara menggunakan Asisten Cloud untuk memeriksa dan memperbaiki instance ECS secara otomatis. Pastikan Agen Asisten Cloud telah terinstal pada instance Anda. Secara default, Agen Asisten Cloud dipra-instal pada instance ECS yang dibuat setelah 1 Desember 2017. Untuk informasi lebih lanjut tentang Agen Asisten Cloud, lihat Instal Agen Asisten Cloud.
Unduh skrip Shell atau PowerShell yang sesuai dan tempelkan ke dalam bidang Isi Perintah di Asisten Cloud.
Instance CentOS: linux_fix_dhclient.sh
Instance Windows: win_fix_dhclient.ps1
Pilih instance ECS target dan jalankan perintah. Untuk informasi lebih lanjut, lihat Jalankan perintah.
Verifikasi bahwa perintah telah berhasil dieksekusi. Untuk informasi lebih lanjut, lihat Lihat hasil eksekusi dan status. Gambar berikut menunjukkan output perintah untuk instance CentOS dan Windows.

Metode 2: Perbaikan Massal Menggunakan Skrip SDK Python
Metode ini menggunakan skrip Python berdasarkan API Asisten Cloud untuk memeriksa dan secara otomatis memperbaiki semua instance yang terpengaruh di wilayah Alibaba Cloud. Untuk informasi lebih lanjut tentang cara menginstal ECS SDK, lihat dokumen instalasi di repositori GitHub Alibaba Cloud.
Persiapan
Jalankan perintah berikut untuk mengunduh dependensi Python SDK yang diperlukan ke komputer lokal atau instance Elastic Compute Service (ECS) Anda.
pip install alibabacloud_ecs20140526Prosedur
Unduh file autofix_dhclient.py ke instance ECS Anda.
Jalankan perintah berikut untuk mengeksekusi skrip:
sudo python autofix_dhclient.py <AccessKeyID> <AccessKeySecret> <region-id>CatatanGanti
<AccessKeyID>,<AccessKeySecret>, dan<region-id>dalam perintah dengan nilai aktual Anda.AccessKeyID: ID AccessKey akun Alibaba Cloud atau Pengguna RAM Anda.
AccessKeySecret: Rahasia AccessKey akun Alibaba Cloud atau Pengguna RAM Anda.
region-id: ID wilayah tempat instance berada. Untuk daftar ID wilayah, lihat Wilayah dan zona.
Hasil Eksekusi
Gambar berikut menunjukkan contoh output dari skrip:
Berikut ini adalah daftar yang menjelaskan pemeriksaan status instance.
-
Asisten Cloud: Memeriksa apakah Agen Asisten Cloud telah terinstal pada instance.
Terinstal: Agen Asisten Cloud telah terinstal.
Tidak Terinstal: Agen Asisten Cloud tidak tersedia. Anda harus menginstal Agen Asisten Cloud sebelum melanjutkan dengan perbaikan.
-
NeedFix: Memeriksa apakah proses dhclient atau layanan DHCP Client memerlukan perbaikan.
Ya: Perbaikan diperlukan. Skrip secara otomatis menyelesaikan operasi berikutnya.
Tidak: Tidak diperlukan perbaikan.
Tidak Diketahui: Skrip tidak dapat menentukan apakah perbaikan diperlukan. Anda harus melakukan perbaikan secara manual.
-
FixResult: Melaporkan hasil perbaikan.
Sukses: Proses dhclient atau layanan DHCP Client berhasil diperbaiki.
Gagal: Perbaikan gagal dilakukan.
NoChange: Tidak diperlukan perbaikan.
Tidak Diketahui: Skrip tidak dapat menentukan hasilnya. Anda harus melakukan perbaikan secara manual.
Metode 3: Perbaikan Menggunakan Skrip Shell atau PowerShell
Metode ini mengharuskan Anda untuk masuk ke setiap instance yang terpengaruh dan memperbaiki masalah, cocok untuk sejumlah kecil instance.
Prosedur untuk Instance CentOS
Masuk ke instance ECS. Untuk informasi lebih lanjut, lihat Ikhtisar metode koneksi.
Unduh skrip linux_fix_dhclient.sh ke folder mana pun.
Beralihlah ke direktori kerja skrip dan jalankan skrip sebagai pengguna root.
sudo bash linux_fix_dhclient.shCatatanNilai balik "0" menunjukkan bahwa skrip berhasil menyelesaikan pemeriksaan dan perbaikan.
Nilai balik lainnya menunjukkan bahwa perbaikan gagal.
Prosedur untuk Instance Windows
Masuk ke instance ECS. Untuk informasi lebih lanjut, lihat Ikhtisar metode koneksi.
Unduh skrip win_fix_dhclient.ps1 ke folder mana saja.
Buka PowerShell sebagai administrator dan jalankan perintah berikut.
powershell -executionpolicy bypass -file C:\win_fix_dhclient.ps1CatatanCatatan:
Ganti
C:\win_fix_dhclient.ps1dengan jalur file aktual.Jika output adalah "No ip will expire in recent 500 days. Then no need fix.", layanan DHCP Client pada instance normal dan tidak diperlukan perbaikan.
Jika output adalah "Found one ip will expire in 500 days. We need fixing it!!! Fix it now... Fix success.", layanan DHCP Client pada instance abnormal dan skrip berhasil memperbaikinya.
Output lainnya menunjukkan bahwa perbaikan gagal.
Metode 4: Menangani Masalah ENI Secara Individual
Metode ini mengharuskan Anda memeriksa dan memperbaiki proses dhclient (untuk instance CentOS) atau waktu kedaluwarsa sewa alamat IP (untuk instance Windows) pada setiap ENI.
Prosedur untuk Instance CentOS
Masuk ke instance ECS. Untuk informasi lebih lanjut, lihat Ikhtisar metode koneksi.
Jalankan perintah berikut untuk memeriksa semua ENI pada instance.
ls -al /sys/class/net/Jalankan perintah berikut untuk memeriksa apakah ENI eth0 menggunakan DHCP untuk mendapatkan alamat IP.
cat /etc/sysconfig/network-scripts/ifcfg-eth0Jika output berisi
BOOTPROTO=dhcp, ENI menggunakan DHCP. Jika tidak, lewati ke langkah 7.
Jalankan perintah berikut untuk memeriksa status proses dhclient untuk ENI eth0.
ps aux | grep dhclient | grep eth0Jika output kosong, proses dhclient tidak normal.
Jika output serupa dengan berikut, proses dhclient berjalan normal. Lewati ke Langkah 7.
root 15340 0.0 0.3 113372 12788 ? Ss 14:16 0:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H izuf****************** eth0
Jalankan perintah berikut untuk memulai ulang proses dhclient.
ifup eth0CatatanContoh ini menggunakan ENI eth0. Ganti eth0 dengan pengenal aktual ENI Anda.
Verifikasi kembali status proses dhclient untuk ENI tersebut.
Ulangi langkah 3 hingga 6 untuk memeriksa dan memperbaiki proses dhclient untuk semua ENI lainnya.
Prosedur untuk Instance Windows
Masuk ke instance ECS. Untuk informasi lebih lanjut, lihat Ikhtisar metode koneksi.
Buka Command Prompt sebagai administrator.
Jalankan perintah berikut. Untuk setiap adaptor jaringan yang dijelaskan sebagai Red Hat VirtIO Ethernet Adaptor, periksa apakah DHCP Enabled disetel ke Yes dan catat waktu Lease Expires-nya.
ipconfig /allCatatanENI utama dan sekunder instance ECS dijelaskan sebagai Red Hat VirtIO Ethernet Adaptor. Kartu antarmuka jaringan (NIC) yang dikonfigurasi khusus, seperti NIC VPN atau loopback, dan NIC yang tidak diaktifkan DHCP tidak terpengaruh.
Jika sewa berakhir dalam satu tahun, jalankan perintah berikut untuk memperbarui sewa.
ipconfig /renewJalankan perintah
ipconfig /alllagi. Perbaikan berhasil jika waktu kedaluwarsa sewa baru adalah beberapa tahun di masa depan.
Berlaku untuk
ECS