Topik ini berlaku untuk cluster Spring Cloud yang telah diterapkan di Alibaba Cloud dan mencakup beberapa aplikasi. Topik ini menjelaskan cara memigrasikan cluster beserta semua aplikasinya ke Enterprise Distributed Application Service (EDAS) secara lancar, serta cara mengimplementasikan pendaftaran layanan dasar dan penemuan layanan. Jika cluster Spring Cloud Anda belum diterapkan di Alibaba Cloud, ajukan Tiket atau hubungi dukungan teknis EDAS untuk mendapatkan solusi lengkap migrasi ke EDAS.
Manfaat migrasi ke EDAS
EDAS menyediakan fitur penyebaran aplikasi seperti konfigurasi fleksibel parameter startup, visualisasi proses, koneksi layanan yang mulus, dan pelepasan bertahap. Fitur ini memungkinkan Anda mengonfigurasi, menanyakan, dan mengontrol proses pelepasan aplikasi.
EDAS menyediakan fitur penemuan layanan dan manajemen konfigurasi dalam rilis komersialnya, sehingga menghilangkan kebutuhan pemeliharaan middleware seperti Eureka, ZooKeeper, atau Consul.
Konsol EDAS mendukung administrasi layanan terpusat, memungkinkan Anda menanyakan detail layanan yang dirilis dan dikonsumsi.
EDAS menyediakan penskalaan otomatis, memungkinkan Anda menambah atau mengurangi skala aplikasi secara dinamis berdasarkan pola lalu lintas.
Selain kueri informasi instance, EDAS juga menyediakan fitur pemantauan tingkat lanjut seperti kueri jejak layanan mikro, kueri topologi panggilan sistem, dan kueri SQL lambat.
EDAS menyediakan fitur pembatasan dan degradasi untuk memastikan ketersediaan tinggi aplikasi Anda.
EDAS menyediakan fitur pelepasan bertahap ujung ke ujung untuk validasi skala kecil saat Anda mengulangi dan memperbarui aplikasi.
Apa itu migrasi lancar?
Anggaplah cluster Spring Cloud Anda dan aplikasinya telah diterapkan di lingkungan produksi dan berjalan sesuai harapan. Jika Anda perlu memigrasikan cluster ke EDAS untuk mengakses semua fitur EDAS, Anda dapat memastikan kontinuitas layanan melalui migrasi lancar.
Jika cluster Spring Cloud Anda tidak diterapkan di lingkungan produksi atau downtime diperbolehkan, Anda dapat mengembangkan aplikasi di lingkungan lokal dan menerapkannya ke EDAS. Untuk informasi lebih lanjut, lihat Implementasikan Pendaftaran Layanan dan Penemuan Layanan.
Proses migrasi
Diperlukan. Migrasikan aplikasi.
Aplikasi tanpa status biasanya dapat dimigrasikan terlebih dahulu. Topik ini berfokus pada cara memigrasikan aplikasi tersebut.
Opsional. Migrasikan instance Server Load Balancer (SLB) atau modifikasi konfigurasi nama domain.
Setelah migrasi aplikasi selesai, Anda perlu memigrasikan instance SLB atau memodifikasi konfigurasi nama domain.
SLB
Jika instance SLB digunakan sebelum migrasi, Anda dapat menggunakan kembali instance SLB setelah migrasi.Ikhtisar.
Jika tidak ada instance SLB yang digunakan sebelum migrasi, disarankan untuk membuat dan mengikat instance SLB ke aplikasi entri, seperti API Gateway pada gambar sebelumnya, setelah migrasi.
Nama Domain
Konfigurasi nama domain dapat dipertahankan jika instance SLB dapat digunakan kembali setelah migrasi.
Untuk membuat dan mengikat instance SLB ke aplikasi yang dimigrasikan, tambahkan konfigurasi instance SLB ini ke konfigurasi nama domain dan hapus instance SLB asli. Untuk informasi lebih lanjut, lihat Ubah Server DNS untuk Nama Domain.
Opsional: Opsional. Migrasikan penyimpanan dan antrian pesan.
Aplikasi yang diterapkan di Alibaba Cloud menggunakan layanan Alibaba Cloud seperti ApsaraDB RDS dan Antrian Pesan. Oleh karena itu, Anda tidak perlu memigrasikan penyimpanan dan antrian pesan bersama dengan aplikasi.
Jika aplikasi Anda tidak diterapkan di Alibaba Cloud, ajukan Tiket atau hubungi dukungan teknis EDAS untuk mendapatkan solusi lengkap migrasi ke EDAS.
Topik ini menjelaskan cara memigrasikan aplikasi. EDAS menyediakan demo untuk menunjukkan cara memigrasikan aplikasi dengan lancar. Anda dapat mengunduh demo ini dan menjalankannya dengan merujuk pada Readme.
Solusi migrasi
Anda dapat memigrasikan aplikasi dengan dua metode: pergantian registry dan pendaftaran ganda serta langganan ganda. Kedua metode ini memungkinkan Anda memigrasikan aplikasi tanpa gangguan layanan.
Topik ini menjelaskan metode pendaftaran ganda dan langganan ganda.
Pergantian Registry
Gunakan Spring Cloud Alibaba untuk beralih dari registry layanan asli ke Nacos. Kembangkan aplikasi dan terapkan ke EDAS, lalu alihkan lalu lintas dengan mengonfigurasi instance SLB dan nama domain.
Jika Anda menggunakan metode pergantian registry untuk mengembangkan aplikasi, Anda dapat melewati konten selanjutnya dari topik ini. Untuk informasi lebih lanjut, lihat Implementasikan Pendaftaran Layanan dan Penemuan Layanan.
Pendaftaran Ganda dan Langganan Ganda
Akses registry layanan asli dan registry layanan EDAS saat aplikasi dimigrasikan untuk mengaktifkan pemanggilan timbal balik antara aplikasi yang dimigrasikan dan aplikasi yang belum dimigrasikan.
Aplikasi yang dimigrasikan dan aplikasi yang belum dimigrasikan dapat menemukan dan memanggil satu sama lain, memastikan kontinuitas layanan.
Anda hanya perlu menambahkan dependensi dan memodifikasi satu baris kode untuk mengimplementasikan pendaftaran ganda dan langganan ganda.
Anda dapat melihat detail daftar panggilan layanan konsumen dan memantau kemajuan migrasi secara real-time.
Anda dapat memodifikasi kebijakan pendaftaran layanan dan langganan secara dinamis tanpa perlu memulai ulang aplikasi. Aplikasi hanya dimulai ulang sekali selama proses migrasi.
Migrasikan aplikasi pertama
Pilih aplikasi yang akan dimigrasikan pertama kali.
Disarankan untuk memulai migrasi dari penyedia dasar. Anda dapat memilih aplikasi yang akan dimigrasikan jika jejaknya kompleks dan sulit dianalisis. Migrasikan aplikasi yang dipilih dengan melakukan langkah-langkah berikut:
Tambahkan dependensi ke aplikasi dan modifikasi konfigurasinya.
Tambahkan dependensi ke aplikasi dan modifikasi konfigurasinya sebelum aplikasi dimigrasikan ke EDAS.
Tambahkan dependensi
spring-cloud-starter-alibaba-nacos-discoveryke filepom.xml.<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>{Version}</version> </dependency>Tambahkan alamat Nacos Server ke
application.propertiesdan nonaktifkanRibbonServerListdari Nacos.spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 ribbon.nacos.enabled = falseDi bawah Spring Cloud, Anda hanya dapat menambahkan satu registry ke dependensi dalam file pom.xml secara default. Jika Anda mencoba menambahkan beberapa registry, kesalahan mungkin terjadi. Untuk mendukung beberapa registry di bawah Spring Cloud, tambahkan dependensi
edas-sc-migration-starter.<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-sc-migration-starter</artifactId> <version>1.0.5</version> </dependency>Untuk memungkinkan aplikasi berlangganan layanan dari beberapa registry, Anda harus memodifikasi konfigurasi Ribbon yang digunakan untuk load balancing. Di kelas utama startup aplikasi, atur RibbonClients ke
MigrationRibbonConfiguration.Anggaplah kode kelas utama berikut tersedia:
@SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }Berikut adalah kode kelas utama yang dimodifikasi:
@SpringBootApplication @RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class) public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }CatatanSetelah aplikasi dimodifikasi di lingkungan lokal Anda atau diterapkan ke EDAS, Anda dapat mengelola aplikasi tersebut. Misalnya, Anda dapat mendaftarkan aplikasi dengan registry tertentu atau berlangganan layanan dari registry tertentu. Untuk memenuhi persyaratan, gunakan Spring Cloud Config atau Nacos Config untuk menyesuaikan konfigurasi aplikasi secara dinamis. Dalam hal ini, Anda tidak perlu memulai ulang aplikasi. Untuk informasi lebih lanjut, lihat Sesuaikan Registry Layanan dan Kebijakan Langganan Layanan Secara Dinamis.
Untuk menggunakan Spring Cloud Config atau Nacos Config, Anda harus menambahkan dependensi manajemen konfigurasi ke aplikasi dan memodifikasi konfigurasi terkait. Untuk informasi lebih lanjut, lihat dokumentasi open source jika Anda menggunakan Spring Cloud Config atau Kelola Konfigurasi Aplikasi jika Anda menggunakan Nacos Config.
Terapkan aplikasi yang dimodifikasi ke EDAS.
Anda dapat menerapkan aplikasi ke kluster ECS atau kluster Container Service for Kubernetes (ACK) berdasarkan kebutuhan Anda. Anda dapat menggunakan konsol EDAS atau alat terkait untuk menerapkan aplikasi. Untuk informasi lebih lanjut, lihat Ikhtisar dan Ikhtisar.
Disarankan untuk menggunakan kembali Instance ECS yang ada dengan mengimpor instance ke EDAS. Ini menghemat biaya. Untuk informasi lebih lanjut, lihat Buat Kluster ECS di Konsol EDAS.
Jika Anda tidak menggunakan kembali Instance ECS yang ada, Anda harus membuat sumber daya seperti Instance ECS dan kluster di virtual private cloud (VPC) yang ada. Ini memastikan jaringan antara aplikasi sebelum dan sesudah migrasi tetap terhubung sehingga aplikasi dapat dimigrasikan. Untuk informasi lebih lanjut, lihat Ikhtisar.
Konfigurasikan daftar putih alamat IP untuk Instance ECS baru di produk-produk seperti database, cache, dan antrian pesan, untuk memastikan akses normal ke komponen pihak ketiga yang bergantung pada aplikasi.
Verifikasi hasilnya.
Periksa apakah layanan normal.
Lihat data tentang pemantauan langganan layanan.
Jika Spring Boot Actuator diaktifkan untuk aplikasi, Anda dapat mengakses Actuator untuk melihat informasi tentang RibbonServerList dari setiap layanan yang dilanggan aplikasi. Anda dapat mengakses Actuator menggunakan URL berikut:
Spring Boot 1.x: http://ip:port/migration_server_list
Spring Boot 2.x: http://ip:port/actuator/migration-server-list
Bidang serverGroup di metaInfo menunjukkan registry layanan untuk node tersebut.
Migrasikan semua aplikasi lainnya
Migrasikan aplikasi lainnya ke EDAS dengan mengulangi prosedur migrasi aplikasi pertama.
Hapus konfigurasi migrasi
Setelah migrasi, hapus konfigurasi registry asli dan dependensi edas-sc-migration-starter yang digunakan oleh migrasi, dan mulai ulang aplikasi dalam batch selama jam-jam sepi.
edas-sc-migration-starter adalah starter yang didedikasikan untuk migrasi. Jika Anda menggunakan starter ini untuk waktu yang lama, ini tidak memengaruhi stabilitas layanan. Namun, starter ini membatasi efek load balancing Ribbon. Disarankan untuk membersihkan starter setelah migrasi dan memulai ulang aplikasi dalam batch selama jam-jam sepi.
Sesuaikan registry layanan dan kebijakan langganan layanan secara dinamis
Anda dapat menyesuaikan registry layanan dan kebijakan langganan layanan secara dinamis selama migrasi dengan menggunakan fitur manajemen konfigurasi EDAS.
Sesuaikan Kebijakan Langganan Layanan Secara Dinamis
Kebijakan langganan default adalah berlangganan ke semua registry dan menggabungkan data.
Untuk berlangganan data dari registry tertentu, Anda dapat menggunakan fitur manajemen konfigurasi EDAS untuk memodifikasi properti
spring.cloud.edas.migration.subscribes.spring.cloud.edas.migration.subscribes=nacos,eureka # Berlangganan layanan dari Eureka dan Nacos. spring.cloud.edas.migration.subscribes=nacos # Berlangganan layanan hanya dari Nacos.Sesuaikan Registry Layanan Secara Dinamis
Kebijakan pendaftaran default adalah mendaftar ke semua registry.
Anda dapat menyesuaikan registry layanan dengan menggunakan fitur manajemen konfigurasi EDAS.
Tentukan registry yang ingin Anda nonaktifkan dengan menggunakan properti
spring.cloud.edas.migration.registry.excludes.spring.cloud.edas.migration.registry.excludes= # Secara default, nilainya kosong. Ini menunjukkan pendaftaran ke semua registry layanan. spring.cloud.edas.migration.registry.excludes=eureka # Menonaktifkan pendaftaran ke Eureka. spring.cloud.edas.migration.registry.excludes=nacos,eureka # Menonaktifkan pendaftaran ke Nacos dan Eureka.Anggaplah Anda perlu memodifikasi registry tempat aplikasi terdaftar secara dinamis saat aplikasi sedang berjalan. Anda dapat menggunakan fitur manajemen konfigurasi Spring Cloud untuk memodifikasi properti tersebut.