Panduan ini memandu Anda melalui proses migrasi kluster Spring Cloud multi-aplikasi ke Enterprise Distributed Application Service (EDAS) tanpa mengalami waktu henti layanan. Pendekatan registrasi ganda dan langganan ganda memastikan aplikasi yang telah dimigrasikan dan yang belum tetap dapat berkomunikasi selama proses berlangsung.
Panduan ini berlaku untuk kluster Spring Cloud yang sudah diterapkan di Alibaba Cloud. Jika kluster Anda belum berada di Alibaba Cloud, kirim tiket atau hubungi dukungan teknis EDAS untuk solusi migrasi lengkap.
Jika kluster Anda belum digunakan di lingkungan produksi atau waktu henti dapat diterima, lewati panduan ini. Kembangkan aplikasi secara lokal dan terapkan langsung ke EDAS. Lihat Implementasikan penemuan dan registrasi layanan.
Mengapa migrasi ke EDAS
EDAS menggantikan beban operasional infrastruktur Spring Cloud yang dikelola sendiri dengan platform terkelola. Setelah migrasi:
Penerapan fleksibel — Konfigurasikan parameter startup, lacak progres penerapan secara visual, dan gunakan koneksi serta pemutusan layanan yang mulus untuk menghindari permintaan yang terputus.
Penemuan layanan bawaan — EDAS menyediakan penemuan layanan dan manajemen konfigurasi dalam rilis komersialnya, menggantikan Eureka, ZooKeeper, atau Consul yang dikelola sendiri.
Administrasi layanan terpusat — Kueri layanan yang dipublikasikan dan dikonsumsi dari Konsol EDAS. Selain kueri informasi instans, akses jejak layanan mikro, topologi panggilan sistem, dan analisis SQL lambat.
Auto scaling — Skala instans aplikasi secara dinamis naik atau turun berdasarkan traffic.
Rilis bertahap — Jalankan rilis bertahap end-to-end untuk validasi skala kecil sebelum menerapkan pembaruan ke semua instans.
Pembatasan kecepatan dan penurunan layanan — Terapkan throttling dan penurunan layanan untuk menjaga stabilitas aplikasi di bawah beban tinggi.
Pilih metode migrasi
EDAS mendukung dua metode migrasi. Keduanya menjaga kontinuitas layanan.
| Metode | Cara kerja |
|---|---|
| Registry switching | Gunakan Spring Cloud Alibaba untuk mengalihkan registri layanan asli ke Nacos. Kembangkan aplikasi dan terapkan ke EDAS, lalu alihkan traffic dengan mengonfigurasi Instance SLB dan nama domain. |
| Dual registration and dual subscription | Akses registri layanan asli dan registri layanan EDAS secara bersamaan selama migrasi, memungkinkan panggilan timbal balik antara aplikasi yang telah dan belum dimigrasikan. |
Jika Anda memilih registry switching, ikuti pengaturan standar dalam Implementasikan penemuan dan registrasi layanan. Sisa panduan ini membahas dual registration and dual subscription.
Cara kerja dual registration
Selama migrasi, setiap aplikasi mendaftar ke registri layanan asli dan registri EDAS (Nacos). Artinya:
Aplikasi yang telah dimigrasikan menemukan aplikasi yang belum dimigrasikan melalui registri asli.
Aplikasi yang belum dimigrasikan menemukan aplikasi yang telah dimigrasikan dengan cara yang sama.
Kedua kelompok saling memanggil tanpa gangguan.
Anda dapat melihat daftar panggilan layanan konsumen dan melacak progres migrasi secara real-time.
Aplikasi hanya restart sekali selama seluruh proses migrasi. Setelah itu, Anda dapat menyesuaikan kebijakan registrasi dan langganan secara dinamis tanpa perlu restart.
Setelah semua aplikasi dimigrasikan, hapus konfigurasi registri asli dan dependensi migrasi.
Ikhtisar migrasi
Migrasi terdiri dari tiga fase:
Migrasi aplikasi (wajib) — Aplikasi stateless dimigrasikan terlebih dahulu, satu per satu.
Migrasi Instance Server Load Balancer (SLB) atau perbarui DNS (opsional) — Arahkan traffic ke penerapan baru.
Migrasi penyimpanan dan antrian pesan (opsional) — Hanya diperlukan jika aplikasi Anda belum menggunakan layanan Alibaba Cloud seperti ApsaraDB RDS dan Message Queue.
Panduan ini berfokus pada fase 1.
Fase 1: Migrasi aplikasi
Langkah 1: Pilih aplikasi pertama
Mulailah dengan penyedia downstream — aplikasi yang dipanggil oleh layanan lain tetapi memiliki sedikit atau tidak memiliki dependensi upstream. Jika rantai panggilan Anda terlalu kompleks untuk mengidentifikasi aplikasi semacam itu, pilih aplikasi apa pun dan lanjutkan.
Langkah 2: Tambahkan dependensi dan perbarui konfigurasi
Lakukan perubahan berikut pada aplikasi sebelum menerapkannya ke EDAS.
2a. Tambahkan dependensi penemuan Nacos
Tambahkan spring-cloud-starter-alibaba-nacos-discovery ke file pom.xml Anda.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>{Version}</version>
</dependency>Ganti {Version} dengan versi Spring Cloud Alibaba yang kompatibel dengan versi Spring Boot Anda.
2b. Konfigurasikan alamat server Nacos
Tambahkan properti berikut ke application.properties:
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
ribbon.nacos.enabled=falseMengatur ribbon.nacos.enabled ke false mencegah Nacos mengganti daftar server Ribbon, yang diperlukan untuk pengaturan langganan ganda.
2c. Tambahkan starter migrasi
Spring Cloud secara default hanya mengizinkan satu registri layanan. Dependensi edas-sc-migration-starter menghapus batasan ini dan mengaktifkan registrasi ganda.
<dependency>
<groupId>com.alibaba.edas</groupId>
<artifactId>edas-sc-migration-starter</artifactId>
<version>1.0.5</version>
</dependency>2d. Konfigurasikan Ribbon untuk langganan multi-registri
Untuk menggabungkan instans layanan dari beberapa registri, atur MigrationRibbonConfiguration sebagai konfigurasi Ribbon default di kelas utama aplikasi Anda.
Sebelum:
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}Sesudah:
@SpringBootApplication
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}Hanya anotasi ini yang perlu diubah dalam kode.
Langkah 3: Terapkan ke EDAS
Terapkan aplikasi yang telah dimodifikasi ke kluster ECS atau kluster ACK. Gunakan Konsol EDAS atau alat CLI.
Penerapan kluster ECS — Lihat Terapkan aplikasi ke kluster ECS.
Penerapan kluster ACK — Lihat Terapkan aplikasi ke kluster Kubernetes.
Pertimbangan penting:
Gunakan kembali Instance ECS yang ada untuk menghemat biaya dengan mengimpornya ke EDAS. Lihat Buat kluster ECS di Konsol EDAS.
Jika Anda membuat Instance ECS baru, tempatkan dalam Virtual Private Cloud (VPC) yang sama dengan aplikasi yang ada agar konektivitas jaringan internal tetap terjaga. Lihat Ikhtisar manajemen sumber daya.
Perbarui daftar putih alamat IP di database, cache, dan antrian pesan agar mencakup alamat IP Instance ECS baru.
Langkah 4: Verifikasi migrasi
Setelah penerapan, verifikasi bahwa aplikasi yang dimigrasikan berfungsi dengan benar:
Periksa kesehatan layanan — Pastikan aplikasi berhasil dimulai dan memproses permintaan sesuai harapan.
Periksa daftar server Ribbon — Jika Spring Boot Actuator diaktifkan, kueri endpoint migrasi untuk melihat registri mana saja yang dilanggani aplikasi:
Spring Boot 1.x:
http://<ip>:<port>/migration_server_listSpring Boot 2.x:
http://<ip>:<port>/actuator/migration-server-list
Dalam respons, bidang
serverGroupdalammetaInfomengidentifikasi registri sumber untuk setiap instans layanan (misalnya,eurekaataunacos).
Langkah 5: Migrasi aplikasi yang tersisa
Ulangi Langkah 2 hingga 4 untuk setiap aplikasi yang tersisa di kluster.
Fase 2: Migrasi Instance SLB atau perbarui DNS (opsional)
Setelah semua aplikasi dimigrasikan, perbarui routing jaringan:
Jika Instance SLB digunakan sebelum migrasi, gunakan kembali.
Jika tidak ada Instance SLB yang digunakan, buat satu dan ikatkan ke aplikasi titik masuk Anda (misalnya, API Gateway).
Konfigurasi nama domain:
Jika Instance SLB digunakan kembali, tidak diperlukan perubahan DNS.
Jika Instance SLB baru dibuat, perbarui DNS agar mengarah ke Instance SLB baru tersebut dan hapus yang lama. Lihat Ubah server DNS untuk nama domain.
Fase 3: Migrasi penyimpanan dan antrian pesan (opsional)
Jika aplikasi Anda sudah menggunakan layanan Alibaba Cloud seperti ApsaraDB RDS dan Message Queue, tidak diperlukan migrasi penyimpanan atau antrian pesan.
Jika aplikasi Anda belum berada di Alibaba Cloud, hubungi dukungan teknis EDAS untuk rencana migrasi lengkap.
Menyesuaikan kebijakan registrasi dan langganan secara dinamis
Selama migrasi, Anda dapat menyesuaikan registri mana yang didaftarkan atau dilanggani oleh aplikasi — tanpa perlu restart. Gunakan fitur manajemen konfigurasi EDAS, Spring Cloud Config, atau Nacos Config untuk memperbarui properti berikut saat runtime.
Kontrol registri mana yang dilanggani aplikasi
Secara default, aplikasi melanggani semua registri dan menggabungkan hasilnya.
Untuk hanya melanggani registri tertentu, atur spring.cloud.edas.migration.subscribes:
# Langganan ke Eureka dan Nacos
spring.cloud.edas.migration.subscribes=nacos,eureka
# Langganan hanya ke Nacos
spring.cloud.edas.migration.subscribes=nacosKontrol registri mana yang didaftarkan aplikasi
Secara default, aplikasi mendaftar ke semua registri.
Untuk berhenti mendaftar ke registri tertentu, atur spring.cloud.edas.migration.registry.excludes:
# Daftar ke semua registri (default)
spring.cloud.edas.migration.registry.excludes=
# Berhenti mendaftar ke Eureka
spring.cloud.edas.migration.registry.excludes=eureka
# Berhenti mendaftar ke Nacos dan Eureka
spring.cloud.edas.migration.registry.excludes=nacos,eurekaTip: Jika Anda menggunakan Spring Cloud Config, lihat dokumentasi open source. Untuk instruksi pengaturan Nacos Config, lihat Kelola konfigurasi aplikasi.
Pembersihan pasca-migrasi
Setelah semua aplikasi berjalan di EDAS, hapus konfigurasi khusus migrasi:
Hapus dependensi
edas-sc-migration-starterdaripom.xml(ataubuild.gradle) setiap aplikasi.Hapus anotasi
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)dari kelas utama.Hapus dependensi dan konfigurasi registri layanan asli (misalnya, pengaturan klien Eureka atau Consul).
Hapus
ribbon.nacos.enabled=falsedariapplication.properties.Restart aplikasi secara bertahap selama jam sepi.
edas-sc-migration-starter tidak memengaruhi stabilitas layanan jika sementara waktu tetap dipertahankan. Namun, hal ini membatasi perilaku load balancing Ribbon, sehingga sebaiknya dihapus setelah migrasi selesai.
Proyek demo
EDAS menyediakan proyek contoh yang mendemonstrasikan dual registration dan dual subscription. Unduh proyek tersebut dan ikuti README yang disertakan untuk menjalankannya secara lokal.