Gejala
Setelah Instance ECS berjalan dalam periode panjang tanpa restart, Anda mungkin mengalami masalah konektivitas jaringan, seperti gangguan total atau ketidakmampuan untuk melakukan ping ke Alamat IP publik maupun Alamat IP pribadi instans tersebut.
Penyebab
Saat Instance ECS pertama kali diluncurkan, sistem menggunakan Dynamic Host Configuration Protocol (DHCP) untuk secara otomatis menetapkan alamat IP ke antarmuka jaringan elastisnya dan mendapatkan waktu kedaluwarsa sewa (lease). Dalam kondisi normal, proses dhclient pada sistem Linux dan layanan DHCP Client pada sistem Windows secara berkala memperbarui sewa ini dengan server DHCP guna memastikan alamat IP tetap valid. Namun, pada instans yang dibuat dari beberapa gambar CentOS 7 tertentu, proses dhclient dapat berhenti secara tak terduga. Selain itu, terdapat isu yang diketahui pada layanan DHCP Client di beberapa sistem operasi Windows Server. Akibatnya, instans tidak dapat memperbarui sewa alamat IP-nya secara otomatis. Ketika sewa awal berakhir, Alamat IP pribadi instans dilepaskan, menyebabkan kegagalan jaringan.
Lingkup
Artikel ini berlaku untuk Instance ECS yang memenuhi kriteria berikut dan menggunakan DHCP untuk secara otomatis menetapkan alamat IP ke antarmuka jaringan elastis. Tidak diperlukan tindakan apa pun untuk instans yang dikonfigurasi dengan alamat IP statis.
-
Instans jenis apa pun yang dibuat dari gambar publik CentOS 7 berikut sebelum 31 Mei 2018 dan belum direstart sejak 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
-
-
Instans yang menjalankan sistem operasi Windows Server berikut yang dibuat sebelum 15 November 2018 dan belum direstart sejak saat itu:
-
Windows Server 2008 R2
-
Windows Server 2012 R2
-
Windows Server 2016
-
Windows Server Version 1709
-
Solusi
-
Sebelum melakukan operasi berisiko tinggi, seperti memodifikasi instans atau datanya, pastikan Anda telah menerapkan langkah-langkah disaster recovery dan fault tolerance.
-
Sebelum memodifikasi konfigurasi atau data instans seperti ECS dan RDS, buat Snapshot atau aktifkan fitur seperti cadangan log RDS.
-
Jika Anda telah mengirimkan informasi sensitif seperti Username dan Password di platform Alibaba Cloud, segera ganti informasi tersebut.
Pilih salah satu dari empat metode berikut sesuai kebutuhan Anda.
-
Metode 1: Perbaikan massal menggunakan Cloud Assistant. Metode ini cocok untuk mengelola banyak instans dan mudah dilakukan dari Konsol ECS.
-
Metode 2: Perbaikan massal menggunakan skrip Python SDK. Metode ini memeriksa status instans dan melakukan perbaikan otomatis di seluruh Wilayah. Metode ini ditujukan bagi pengguna yang terbiasa dengan skrip.
-
Metode 3: Perbaikan menggunakan skrip Shell dan PowerShell. Metode ini mengharuskan Anda login ke setiap Instance ECS untuk menerapkan perbaikan secara manual. Metode ini cocok untuk pengujian atau pembaruan sejumlah kecil instans. Skrip yang digunakan identik dengan yang dipakai pada Metode 1.
-
Metode 4: Periksa kartu antarmuka jaringan secara manual. Metode ini cocok untuk sejumlah kecil instans.
Metode 1: Perbaikan massal menggunakan Cloud Assistant
Pada contoh ini, Cloud Assistant digunakan untuk memeriksa dan memperbaiki Instance ECS secara otomatis. Pastikan instans Anda telah menginstal Cloud Assistant Agent. Cloud Assistant Agent telah dipra-instal secara default pada Instance ECS yang dibuat setelah 1 Desember 2017. Untuk informasi lebih lanjut, lihat Cloud Assistant Agent Install Cloud Assistant Agent.
-
Unduh skrip Shell atau PowerShell yang sesuai dan tempel isinya ke bidang Command Content di Konsol ECS.
-
Instans CentOS: linux_fix_dhclient.sh
-
Instans Windows: win_fix_dhclient.ps1
-
-
Pilih Instance ECS target dan jalankan perintah tersebut. Untuk petunjuk lengkap, lihat Run a command.
-
Konfirmasi bahwa perintah berhasil dijalankan. Untuk petunjuk lengkap, lihat View the command result and status. Contoh berikut menunjukkan output perintah untuk instans CentOS dan Windows.
[INFO] [2019-04-28 11:13:00] start check and fix [INFO] [2019-04-28 11:13:00] log file /tmp/dhcp_fix_20190428-11:13:00.log [INFO] [2019-04-28 11:13:00] start checking eth0 [INFO] [2019-04-28 11:13:00] eth0 state is up [INFO] [2019-04-28 11:13:00] ip a show dev eth0 [INFO] [2019-04-28 11:13:00] eth0 valid_lft 315359644 [INFO] [2019-04-28 11:13:00] no need fix, dhclient eth0 is running [1;32;40m[SUCCESS] [0m [2019-04-28 11:13:00] check and fix success [1;32;40m[SUCCESS] [0m [2019-04-28 11:13:00] return code: 0 [1;33;40m[WARN] [0m [2019-04-28 11:14:17] need fixing eth0 [INFO] [2019-04-28 11:14:17] start fixing eth0 [INFO] [2019-04-28 11:14:17] ip a show dev eth0 [INFO] [2019-04-28 11:14:17] ifup eth0 RTNETLINK answers: File exists [INFO] [2019-04-28 11:14:19] ip a show dev eth0 [INFO] [2019-04-28 11:14:19] ok, dhclient eth0 is running now [1;32;40m[SUCCESS] [0m [2019-04-28 11:14:19] check and fix success [1;32;40m[SUCCESS] [0m [2019-04-28 11:14:19] return code: 0 No ip will expire in recent 500 days. Then no need fix. Nic info: \\E2ETesthxxx...xxxterConfiguration.Index=3 Found one ip will expire in 500 days. We need fixing it!!! Fix it now... Nic info: \\E2ETesthxxx...xxxpterConfiguration.Index=3 fix success. ]]]]]]]]]]
Metode 2: Perbaikan massal menggunakan skrip Python SDK
Metode ini menggunakan skrip Python berbasis API Cloud Assistant untuk memeriksa dan memperbaiki semua instans yang terdampak dalam suatu Wilayah Alibaba Cloud. Untuk petunjuk instalasi ECS SDK, lihat panduan instalasi di repositori GitHub Alibaba Cloud.
Prasyarat
Jalankan perintah berikut untuk menginstal dependensi SDK Python yang diperlukan di mesin lokal Anda atau Instance ECS.
pip install alibabacloud_ecs20140526
Prosedur
-
Unduh file autofix_dhclient.py ke Instance ECS Anda.
-
Jalankan perintah berikut untuk mengeksekusi skrip.
sudo python autofix_dhclient.py <AccessKeyID> <AccessKeySecret> <region-id>CatatanAnda harus mengganti
<AccessKeyID>,<AccessKeySecret>, dan<region-id>dalam perintah tersebut.-
AccessKey ID: AccessKey ID Akun Alibaba Cloud atau Pengguna RAM Anda.
-
AccessKey Secret: AccessKey Secret Akun Alibaba Cloud atau Pengguna RAM Anda.
-
ID wilayah: ID wilayah tempat instans Anda berada. Untuk daftar ID wilayah, lihat Regions and zones.
-
Hasil
Berikut ini adalah contoh output skrip.
Performing the scan and this will take some time, please wait...
Scan done.
Instance Status details:
+----------------------------+----------------+---------------+---------------+
| InstanceID | Cloud Assistant| NeedFix | FixResult |
+----------------------------+----------------+---------------+---------------+
| i-uf639pxxxye4ldb | Installed | No | NoChange |
+----------------------------+----------------+---------------+---------------+
| i-uf69mdxxxk6sahw | Installed | Yes | Success |
+----------------------------+----------------+---------------+---------------+
Summary:
================================
Total instances scanned: 2
Fixed: 1
Unknown: 0
Failed: 0
Deskripsi field output sebagai berikut:
-
Cloud Assistant: Pemeriksaan ini menentukan apakah Cloud Assistant Agent telah diinstal pada instans Anda.
-
Installed: Cloud Assistant Agent telah diinstal.
-
Not Installed: Cloud Assistant Agent tidak tersedia. Anda dapat Install Cloud Assistant Agent lalu menjalankan skrip lagi.
-
-
NeedFix: Pemeriksaan ini menentukan apakah proses
dhclientatau layanan DHCP Client memerlukan perbaikan.-
Yes: Perbaikan diperlukan. Skrip akan menyelesaikan tugas tersebut secara otomatis.
-
No: Tidak diperlukan perbaikan.
-
Unknown: Skrip tidak dapat menentukan statusnya. Anda harus melakukan pemeriksaan secara manual.
-
-
FixResult: Field ini menunjukkan hasil perbaikan.
-
Success: Proses
dhclientatau layanan DHCP Client berhasil diperbaiki. -
Failed: Perbaikan gagal.
-
NoChange: Tidak diperlukan perbaikan.
-
Unknown: Skrip tidak dapat menentukan hasilnya. Anda harus melakukan pemeriksaan secara manual.
-
Metode 3: Perbaikan menggunakan skrip Shell atau PowerShell
Metode ini mengharuskan Anda login ke setiap instans yang terdampak dan menjalankan skrip secara manual. Metode ini cocok untuk sejumlah kecil instans.
Prosedur untuk instans CentOS
-
Login ke Instance ECS. Untuk informasi lebih lanjut, lihat Connection methods.
-
Unduh skrip linux_fix_dhclient.sh ke direktori mana pun.
-
Beralih ke direktori tempat skrip berada dan jalankan skrip sebagai pengguna root.
sudo bash linux_fix_dhclient.shCatatan-
Kode return "0" menunjukkan bahwa skrip berhasil menyelesaikan pemeriksaan dan perbaikan.
-
Kode return lainnya menunjukkan bahwa perbaikan gagal.
-
Prosedur untuk instans Windows
-
Login ke Instance ECS. Untuk informasi lebih lanjut, lihat Connection methods.
-
Unduh skrip win_fix_dhclient.ps1 ke direktori mana pun.
-
Buka PowerShell dengan hak administratif dan jalankan perintah berikut.
powershell -executionpolicy bypass -file C:\win_fix_dhclient.ps1CatatanCatatan:
-
Anda perlu mengganti
C:\win_fix_dhclient.ps1dengan path file yang sebenarnya. -
Output "No ip will expire in recent 500 days. Then no need fix." menunjukkan bahwa layanan DHCP Client berjalan normal dan tidak memerlukan perbaikan.
-
Output "Found one ip will expire in 500 days. We need fixing it!!! Fix it now... Fix success." menunjukkan bahwa layanan DHCP Client tidak berjalan dengan benar dan skrip telah memperbaiki masalah tersebut.
-
Output lainnya menunjukkan bahwa perbaikan gagal.
-
Metode 4: Periksa kartu antarmuka jaringan secara manual
Metode ini mengharuskan Anda memeriksa dan memperbaiki proses dhclient (untuk instans CentOS) atau waktu kedaluwarsa sewa alamat IP (untuk instans Windows) pada setiap kartu antarmuka jaringan secara manual.
Prosedur untuk instans CentOS
-
Login ke Instance ECS. Untuk informasi lebih lanjut, lihat Connection methods.
-
Jalankan perintah berikut untuk memeriksa semua kartu antarmuka jaringan pada instans.
ls -al /sys/class/net/ -
Jalankan perintah berikut untuk memeriksa apakah kartu antarmuka jaringan eth0 menggunakan DHCP guna memperoleh alamat IP-nya.
cat /etc/sysconfig/network-scripts/ifcfg-eth0Sistem akan menampilkan output yang mirip dengan contoh berikut.
BOOTPROTO=dhcpmenunjukkan bahwa kartu antarmuka jaringan menggunakan DHCP untuk menetapkan alamat IP. Jika alamat IP tidak ditetapkan melalui DHCP, lanjutkan ke Langkah 7.[root@xxx ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes [root@xxx ~]# grep 'BOOTPROTO=dhcp' /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=dhcp -
Jalankan perintah berikut untuk memeriksa status proses
dhclientuntuk kartu antarmuka jaringan eth0.ps aux | grep dhclient | grep eth0-
Output kosong menunjukkan bahwa proses
dhclienttidak berjalan dengan benar. -
Jika output mirip dengan berikut, proses berjalan normal. Dalam hal ini, lanjutkan 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 me-restart proses
dhclient.ifup eth0CatatanContoh ini menggunakan eth0. Ganti
eth0dengan pengenal aktual kartu antarmuka jaringan Anda. -
Periksa kembali status proses
dhclientuntuk memastikan proses tersebut berjalan. -
Ulangi langkah 3 hingga 6 untuk memeriksa dan memperbaiki proses
dhclientpada semua kartu antarmuka jaringan yang tersisa.
Prosedur untuk instans Windows
-
Login ke Instance ECS. Untuk informasi lebih lanjut, lihat Connection methods.
-
Buka Command Prompt (CMD) sebagai administrator.
-
Jalankan perintah berikut untuk memeriksa apakah DHCP Enabled diatur ke Yes untuk kartu antarmuka jaringan yang dijelaskan sebagai Red Hat VirtIO Ethernet Adaptor dan untuk melihat waktu Lease Expires-nya.
ipconfig /allCatatanRed Hat VirtIO Ethernet Adaptor berfungsi sebagai kartu antarmuka jaringan utama atau antarmuka jaringan elastis sekunder untuk Instance ECS. Konfigurasi khusus seperti VPN atau adapter loopback tidak terpengaruh. Kartu antarmuka jaringan yang tidak mengaktifkan layanan DHCP juga tidak terpengaruh.
-
Jika sewa berakhir dalam waktu satu tahun, jalankan perintah berikut untuk memperbaruinya.
ipconfig /renew -
Jalankan perintah
ipconfig /all. Waktu kedaluwarsa sewa dalam sepuluh tahun menunjukkan bahwa perbaikan telah selesai.
Berlaku untuk
-
ECS