All Products
Search
Document Center

Microservices Engine:Konfigurasikan rilis canary

Last Updated:Jun 21, 2026

Microservices Engine (MSE) mendukung rilis canary, yang memungkinkan Anda menerapkan perubahan konfigurasi ke subset kecil instans untuk verifikasi sebelum peluncuran penuh. Praktik ini meminimalkan risiko mendorong konfigurasi yang bermasalah. Topik ini menjelaskan cara mengonfigurasi rilis canary untuk instans Nacos di MSE.

Prasyarat

Catatan
  • Kami menyarankan menggunakan Nacos Client versi 2.x atau yang lebih baru.

Informasi latar belakang

Saat Anda mengelola konfigurasi kluster secara terpusat, modifikasi konfigurasi biasanya akan menimpa konfigurasi lama dan mendorong pembaruan ke semua instans dalam kluster. Pendekatan dorongan penuh ini berisiko karena satu kesalahan konfigurasi saja dapat menyebabkan seluruh kluster gagal.

Oleh karena itu, saat mengedit konfigurasi, kami menyarankan terlebih dahulu melakukan rilis canary. Ini akan mendorong konfigurasi baru ke subset kecil mesin untuk validasi awal. Jika perubahan telah diverifikasi, Anda dapat secara bertahap memperluas rilis hingga mencakup semua instans, sehingga mengurangi risiko yang terkait dengan perubahan konfigurasi.

Selama perubahan konfigurasi, Anda memilih node tertentu untuk rilis canary. MSE Nacos mendukung dua metode rilis canary: rilis canary berbasis alamat IP dan rilis canary berbasis tag.

Rilis canary berbasis alamat IP

Untuk sistem yang lebih kecil, metode ini sering kali sudah cukup dan secara signifikan mengurangi risiko kegagalan deployment akibat kesalahan konfigurasi.

Buat konfigurasi canary

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi kiri, pilih Microservices Registry > Instances.

  3. Pada halaman Instances, klik nama instans tersebut.

  4. Di panel navigasi kiri, pilih Configuration Management > Configurations.

  5. Pada kolom Actions dari konfigurasi target, klik Edit. Pada panel Edit Configuration, atur Release Type menjadi IP-based Canary Release.

  6. Klik kotak input Application Node IP Address dan pilih alamat IP untuk rilis canary dari daftar.

    Anda juga dapat memasukkan alamat IP secara manual. Fitur autocompletion didukung.

    Catatan

    Alamat IP menentukan mesin yang berlangganan konfigurasi tersebut. Gunakan koma (,) untuk memisahkan beberapa alamat.

  7. Setelah memodifikasi konfigurasi, klik Canary Release. Pada kotak dialog Comparison of Configuration Content, tinjau Current Official Version Content dan Current Release Content, lalu klik Release.

Lihat konfigurasi canary

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi kiri, pilih Microservices Registry > Instances.

  3. Pada halaman Instances, klik nama instans tersebut.

  4. Di panel navigasi kiri, pilih Configuration Management > Configurations.

  5. Temukan konfigurasi yang sedang dalam rilis canary, lalu pada kolom Actions, klik Edit.

  6. Pada panel Edit Configuration, klik tab Beta(IP) untuk melihat informasi rilis canary.

    Tab Beta(IP) menampilkan detail rilis canary: jenis rilis adalah ip address-based canary release, IP node aplikasi adalah 172.16, format konfigurasi adalah Properties, dan konten konfigurasi adalah useLocalCache=false. Di bagian bawah halaman, Anda dapat menemukan tombol Canary Release, Stop Canary Release, dan Full Release.

Operasi lainnya

  • Stop Canary Release: Pada tab Beta(IP) di panel Edit Configuration, klik Stop Canary Release untuk membatalkan rilis canary.

  • Full Release: Pada tab Beta(IP) di panel Edit Configuration, klik Full Release. Pada kotak dialog Comparison of Configuration Content yang muncul, konfirmasi informasi konfigurasi lalu klik Full Release. Konfigurasi canary menjadi versi resmi baru dan mengakhiri rilis canary.

Rilis canary berbasis alamat IP memiliki isu berikut:

  • Untuk client yang menggunakan Nacos 1.x, server tidak dapat memperoleh alamat IP client secara akurat karena traffic dialihkan melalui instans Server Load Balancer (SLB).

  • Dalam arsitektur berbasis Kubernetes, pembuatan ulang node dapat mengubah alamat IP-nya, sehingga versi canary berbasis alamat IP menjadi tidak valid.

Rilis canary berbasis tag

MSE Nacos 2.2.3.3 dan yang lebih baru mendukung rilis canary berbasis tag. Anda dapat menetapkan tag pada node aplikasi client, lalu menargetkan tag tersebut untuk rilis canary.

Penting
  • Rilis canary berbasis tag didukung di MSE Nacos 2.2.3.3 dan yang lebih baru. Anda harus meningkatkan engine Anda ke versi 2.2.3.3 atau yang lebih baru.

  • Tag aplikasi kustom untuk rilis canary didukung di Nacos Client open-source 2.3.2 dan yang lebih baru. Anda harus meningkatkan client Anda ke versi 2.3.2 atau yang lebih baru.

  • Untuk menyuntikkan tag menggunakan variabel lingkungan, Anda harus meningkatkan Nacos Client ke versi 2.4.2 atau yang lebih baru.

Tetapkan tag aplikasi client

Anda dapat mengatur tag aplikasi, yang dalam format pasangan kunci-nilai, dengan menggunakan properti, parameter JVM, atau Variabel lingkungan. Jika suatu kunci ditentukan di beberapa lokasi, prioritasnya adalah: properti > parameter JVM > Variabel lingkungan. nacos.config.gray.label adalah tag bawaan default untuk rilis canary konfigurasi di Pusat Registrasi Nacos.

//1. Kirim menggunakan properties.
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, "your endpoint");
properties.put("project.name", "your app name");
properties.put("nacos.config.gray.label","yourgrayname");
//2. Atur menggunakan parameter JVM.
// Atur parameter startup -Dnacos.config.gray.label=yourgrayname
//3. Tentukan menggunakan variabel lingkungan.
// Atur variabel lingkungan nacos_config_gray_label=yourgrayname
 String dataId = "gray_test_dataid";
 String group = "test-group";
 configService.addListener(dataId, group, new Listener() {
        @Override
        public Executor getExecutor() {
            return null;
        }
        @Override
        public void receiveConfigInfo(String configInfo) {
            System.out.println("receiveConfig:" + configInfo);
        }
 });

Terbitkan rilis canary berbasis tag

  • Lihat tag pendengar

    Setelah Anda menyuntikkan tag aplikasi di sisi client, Anda dapat melihat daftar pendengar konfigurasi di server untuk memeriksa tag masing-masing pendengar.

    Klik tab Listening Query. Anda dapat melihat bahwa tag node aplikasi pendengar adalah nacos.config.gray.label:yourgrayname dan status dorongannya adalah Push succeeded.

  • Terbitkan konfigurasi canary berbasis tag

    Klik Edit Configuration, pilih Tag-based Canary Release, lalu pilih pasangan kunci-nilai dari tag yang sudah ada pada node aplikasi Anda. Anda dapat melihat jumlah node yang sesuai dengan tag yang dipilih. Pada halaman Edit Configuration, masukkan Data ID (misalnya nacos-config-example-demo) dan Group (misalnya yang-group). Atur Release Type menjadi tag-based canary release, pilih nacos.config.gray.label untuk Application Node Tag Key, tambahkan tag canary (misalnya yourgrayname) ke Application Node Tag Value, dan pilih Properties untuk Configuration Format. Lalu, klik Canary Release.

Setelah menerbitkan versi canary berbasis tag, Anda dapat melihat versi konfigurasi yang sesuai dengan client saat ini pada tab Configuration Listening Query. Anda dapat melihat detail versi canary saat ini di Configuration details.

Setelah mengamati grup canary awal, Anda dapat memperluas cakupan rilis dengan mengedit nilai tag hingga siap untuk rilis penuh. Mengklik Full Release akan menghentikan versi canary yang bersangkutan. Jika rilis canary menyebabkan exception bisnis, klik Stop Canary Release untuk mengembalikan perubahan.

Pertanyaan terkait

Penggunaan lanjutan tag aplikasi

Selain mengatur satu tag seperti nacos.config.gray.label, Nacos memungkinkan Anda untuk mengatur beberapa tag dan menggunakan Collector Service Provider Interface (SPI) tag kustom. Hal ini memberikan fleksibilitas yang lebih besar dalam mendefinisikan dan mengambil tag.

  • Tetapkan tag bernilai ganda.

    Pusat Registrasi Nacos mendukung penyuntikan beberapa pasangan kunci-nilai sebagai tag aplikasi. Anda dapat menentukan parameter nacos.app.conn.labels (misalnya, nacos.app.conn.labels="k1=v1,k2=v2,k3=v3") dalam properti atau sebagai parameter JVM. Sebagai alternatif, Anda dapat menentukan parameter nacos_app_conn_labels sebagai Variabel lingkungan.

    //1. Kirim menggunakan properties.
    Properties properties = new Properties();
    properties.put(PropertyKeyConst.SERVER_ADDR, "your endpoint");
    properties.put("project.name", "your app name");
    properties.put("nacos.app.conn.labels","app=demo,site=hangzhou-c,otherkey=othervaue");
    //2. Atur menggunakan parameter JVM.
    // Atur parameter startup -Dnacos.app.conn.labels="app=demo,site=hangzhou-c,otherkey=othervaue"
    //3. Tentukan menggunakan variabel lingkungan.
    // Atur variabel lingkungan nacos_app_conn_labels="app=demo,site=hangzhou-c,otherkey=othervaue"
    NacosConfigService configService = new NacosConfigService(properties);
    String dataId = "gray_test_dataid";
    String group = "test-group";
    configService.addListener(dataId, group, new Listener() {
            @Override
            public Executor getExecutor() {
                return null;
            }
            @Override
            public void receiveConfigInfo(String configInfo) {
                System.out.println("receiveConfig:" + configInfo);
            }
    });
    
  • Tag aplikasi kustom SPI

    Klien Nacos mendefinisikan SPI untuk tag aplikasi kustom. Anda dapat mengimplementasikan antarmuka com.alibaba.nacos.common.labels.LabelsCollector dan memublikasikan kelas implementasi Anda sebagai layanan untuk membuat SPI tag aplikasi kustom.

    package your.demo.test;
    import com.alibaba.nacos.common.labels.LabelsCollector;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;
    /**
     * TestLabelsCollector.
     *
     * @author yourname
     */
    public class TestLabelsCollector implements LabelsCollector {
        @Override
        public String getName() {
            return "testlables";
        }
        @Override
        public Map<String, String> collectLabels(Properties properties) {
            Map<String, String> labels = new HashMap<>();
            labels.put("test", "implements your lables logic");
            return labels;
        }
        @Override
        public int getOrder() {
            return 1;
        }
    }

Versi canary paralel

Satu konfigurasi dapat memiliki beberapa versi, termasuk versi resmi, versi canary berbasis alamat IP, dan beberapa versi canary berbasis tag. Saat beberapa versi ada, server Nacos menggunakan urutan prioritas berikut untuk mencocokkan dan mendorong konfigurasi: versi canary berbasis alamat IP > versi canary berbasis tag > versi resmi.

Saat terdapat beberapa versi canary berbasis tag, versi tersebut diurutkan berdasarkan nilai bidang priority. Nilai yang lebih tinggi menunjukkan prioritas yang lebih tinggi. Jika prioritasnya sama, versi diurutkan berdasarkan nama. Kami menyarankan untuk menetapkan prioritas yang jelas untuk setiap versi canary.

Saat server menerima permintaan dari node aplikasi yang diberi tag, server pertama-tama memeriksa apakah ada versi canary berbasis alamat IP yang cocok. Jika ditemukan kecocokan, versi tersebut dikembalikan. Jika tidak, server mencoba mencocokkan versi canary berbasis tag berdasarkan prioritas. Jika ditemukan versi berbasis tag yang cocok, konfigurasi tersebut dikembalikan. Jika tidak ada versi canary yang cocok, server mengembalikan versi resmi. Anda dapat melihat versi konfigurasi mana yang dicocokkan untuk setiap node aplikasi pada halaman Listening Query di Konsol MSE.

Catatan

MSE Nacos 2.3.0 dan yang lebih baru mendukung versi canary paralel. Jumlah versi canary untuk satu konfigurasi dibatasi. Secara default, Anda dapat memiliki maksimal lima versi canary berbasis tag. Upaya membuat lebih banyak akan diblokir.

Perencanaan tag aplikasi

Saat merencanakan tag untuk node aplikasi Anda, definisikan tag tersebut berdasarkan dampak bisnis untuk memungkinkan peluncuran bertahap dan mengurangi risiko perubahan. Berikut adalah praktik terbaik umum:

  • Gunakan nama aplikasi sebagai tag. Mulai rilis canary pada aplikasi non-kritis. Setelah memastikan tidak ada masalah, perluas rilis untuk mencakup aplikasi inti.

  • Anda dapat mengisolasi traffic untuk mesin hulu dan hilir di lapisan ingress traffic. Misalnya, Anda dapat mengidentifikasi sekelompok mesin untuk pengujian pengguna internal dan memberinya tag canary unik. Hal ini memungkinkan Anda membuat rilis canary yang ditargetkan khusus untuk pengguna internal.

Format tag aplikasi

Kunci dan nilai tag hanya dapat berisi huruf besar dan huruf kecil, angka, garis bawah (_), tanda hubung (-), dan titik (.). Tag dalam format lain akan diabaikan. Jika Anda menentukan beberapa pasangan kunci-nilai dengan menggunakan parameter nacos.app.conn.labels, Anda harus mengikuti format "k1=v1,k2=v2,k3=v3" . Jika Anda meneruskan nilai yang salah format seperti "k1=v1,k2", bagian k2 akan diabaikan, dan input diurai sebagai k1=v1.