All Products
Search
Document Center

Microservices Engine:Migrasi registri layanan dengan MSE Sync

Last Updated:Mar 01, 2026

MSE Sync menyinkronkan data layanan dan konfigurasi antara registri seperti Nacos, ZooKeeper, Eureka, dan Consul. Dibangun di atas proyek open-source NacosSync, MSE Sync mendukung sinkronisasi dua arah, penemuan layanan otomatis, dan sinkronisasi satu-klik untuk seluruh layanan, memungkinkan migrasi lancar dari registri yang dikelola sendiri ke instans Microservices Engine (MSE).

Cara kerja

MSE Sync bertindak sebagai jembatan antara registri sumber dan instans MSE target. Selama migrasi, MSE Sync terus-menerus menyinkronkan data registrasi layanan sehingga kedua registri menyajikan informasi yang identik. Aplikasi yang terhubung ke salah satu registri dapat menemukan layanan yang terdaftar di registri lainnya, memungkinkan Anda melakukan migrasi aplikasi secara bertahap.

Pada diagram berikut, pub merepresentasikan penerbit layanan dan sub merepresentasikan subscriber layanan.

Smooth migration

MSE Sync menggunakan arsitektur penerapan multi-instans untuk ketersediaan tinggi. Jika suatu node gagal, node-node sehat menjalankan tugas pemulihan terjadwal untuk mengambil alih pekerjaan sinkronisasi dari node yang gagal tersebut.

Multi-instance deployment

Konsep utama

KonsepDeskripsi
ClusterInstans registri sumber atau target yang didefinisikan dalam konfigurasi MSE Sync. Setiap kluster memiliki nama unik, tipe (Nacos, ZooKeeper, Eureka, atau Consul), dan satu atau lebih titik akhir koneksi.
TaskPekerjaan sinkronisasi yang memindahkan data dari kluster sumber ke kluster tujuan. Setiap task menentukan tipe sinkronisasi, arah, dan filter nama layanan opsional.
Tipe sinkronisasiMenentukan data apa yang disinkronkan. Service menyinkronkan data registrasi layanan. Config menyinkronkan data konfigurasi (hanya untuk Nacos dan ZooKeeper). All membuat task sinkronisasi layanan dan konfigurasi berdasarkan tipe kluster sumber.
Mode sinkronisasiUnidirectional menyalin data layanan yang terdaftar secara native dari sumber ke target. Bidirectional menyinkronkan data layanan yang terdaftar secara native di kedua arah.

Jalur migrasi yang didukung

MSE Sync kompatibel dengan logika registrasi layanan ZooKeeper, Nacos, Eureka, dan Consul.

Supported registry types
Registri sumberRegistri targetApa yang disinkronkan
NacosNacosData layanan Nacos native
ZooKeeperZooKeeperLayanan dan konfigurasi persisten
EurekaNacosData layanan Eureka native
ConsulNacosData layanan Consul native (hanya instans yang sehat)

ZooKeeper

Penting

Jangan memodifikasi Znode yang sama di kedua kluster sumber dan target secara bersamaan. Penulisan konkuren dapat menyebabkan kehilangan data selama migrasi. Jangan gunakan sinkronisasi konfigurasi untuk menyinkronkan layanan atau node ephemeral.

Saat menyinkronkan node persisten, MSE Sync mendaftarkan watch pada kluster sumber untuk setiap Znode. Jika kluster sumber berisi banyak node, hal ini akan menghasilkan jumlah watch yang besar dan mengonsumsi memori signifikan. Pastikan jumlah Znode dan sumber daya kluster sumber mampu menangani listener watch tambahan dari MSE Sync.

Eureka ke Nacos

Eureka mendaftarkan nama layanan dalam huruf kapital secara default (misalnya, SERVICE-1). MSE Sync mengonversi nama-nama ini menjadi huruf kecil saat menyinkronkan ke Nacos (misalnya, service-1).

Konversi ini dapat menyebabkan masalah interoperabilitas dengan nama campuran (mixed-case). Misalnya, jika layanan bernama Service-1 terdaftar langsung di Nacos bersamaan dengan service-1 yang disinkronkan, Nacos menganggapnya sebagai dua layanan terpisah. Instans yang terdaftar di bawah satu nama tidak dapat menemukan instans di bawah nama lainnya.

Untuk menghindari masalah ini, standarisasikan semua nama layanan menjadi huruf kecil sebelum memulai migrasi.

Consul ke Nacos

MSE Sync hanya menyinkronkan informasi instans yang sehat dari Consul. Perubahan metadata tidak terdeteksi atau disinkronkan secara otomatis. Data konfigurasi Consul tidak didukung.

Langkah 1: Penerapan MSE Sync

Sebelum menerapkan, pastikan bahwa:

  • Lingkungan penerapan MSE Sync memiliki konektivitas jaringan ke registri sumber dan target (misalnya, terapkan MSE Sync di Virtual Private Cloud (VPC) yang sama atau pastikan MSE Sync memiliki akses internet publik ke kedua kluster)

  • (Jika menggunakan MySQL) Layanan MySQL tersedia dengan database dan akun pengguna yang memiliki izin baca dan tulis

Penting

MSE Sync harus terhubung ke registri sumber dan target. Jika tidak dapat mencapai keduanya, migrasi akan gagal.

Pilih backend penyimpanan

MSE Sync mendukung dua backend penyimpanan:

BackendGunakan saatDukungan multi-instans
MySQL (wajib untuk penerapan multi-instans)Menjalankan beberapa instans MSE Sync untuk ketersediaan tinggiYa -- beberapa instans berbagi satu database MySQL
Embedded DerbyPengujian atau penerapan single-nodeTidak -- hanya satu mesin

MSE Sync secara otomatis memilih backend berdasarkan variabel lingkungan. Jika MYSQL_URL, MYSQL_USER_NAME, dan MYSQL_PASSWORD semuanya diatur, MSE Sync terhubung ke MySQL. Jika tidak, MSE Sync menggunakan database embedded Derby.

VariabelDeskripsiContoh
MYSQL_URLString koneksi MySQLjdbc:mysql://localhost:3306/sync
MYSQL_USER_NAMEUsername dengan izin baca dan tulis--
MYSQL_PASSWORDPassword untuk akun tersebut--

Konfigurasi parameter JVM

Tambahkan parameter JVM dalam file conf/java.env menggunakan variabel JAVA_OPT:

JAVA_OPT="$JAVA_OPT -Xms2048m -Xmx2048m"

Terapkan di Kubernetes

  1. Simpan konfigurasi berikut sebagai mse-sync-deployment.yaml. Ganti detail koneksi MySQL dan sesuaikan replicas sesuai kebutuhan.

    Catatan

    Untuk mengakses antarmuka web MSE Sync, buat Service Kubernetes yang mengarahkan traffic ke port 8000.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app.kubernetes.io/name: mse-sync
      name: mse-sync-svc
    spec:
      replicas: 3
      selector:
        matchLabels:
          app.kubernetes.io/name: mse-sync
      template:
        metadata:
          labels:
            app.kubernetes.io/name: mse-sync
        spec:
          containers:
          - name: mse-sync
            image: msecrinstance-registry.cn-hangzhou.cr.aliyuncs.com/mse-demo/mse-sync:latest
            ports:
            - containerPort: 8000
            env:
            - name: MYSQL_URL
              value: "jdbc:mysql://192.xx.xx.xx:3306/sync"
            - name: MYSQL_USER_NAME
              value: "mse-sync"
            - name: MYSQL_PASSWORD
              value: password
  2. Terapkan MSE Sync:

    kubectl apply -f mse-sync-deployment.yaml

Terapkan di Elastic Compute Service (ECS)

  1. Unduh biner MSE Sync:

    curl https://msesync.oss-cn-hangzhou.aliyuncs.com/MseSync.zip --output msesync.zip
  2. Ekstrak paket:

    unzip ./msesync.zip
  3. (Opsional) Jika menggunakan MySQL, atur variabel lingkungan database:

    export MYSQL_URL=""
    export MYSQL_USER_NAME=""
    export MYSQL_PASSWORD=""
  4. Jalankan MSE Sync:

    ./MseSync/bin/startup.sh start

Langkah 2: Konfigurasi kluster dan task sinkronisasi

MSE Sync mendukung tiga metode konfigurasi:

MetodePaling cocok untukDetail
File konfigurasi (direkomendasikan)Migrasi otomatis atau skala besarDefinisikan kluster dan task dalam YAML; impor melalui CLI atau muat otomatis saat startup
Web UIMigrasi ad-hoc atau skala kecilImpor konfigurasi melalui antarmuka berbasis browser
MSE consoleMenghasilkan file konfigurasi awalHalaman Cloud Migration menghasilkan otomatis file konfigurasi YAML

Opsi A: Konfigurasi dengan file YAML

File konfigurasi berisi dua bagian: clusters (detail koneksi registri) dan tasks (pekerjaan sinkronisasi).

Contoh berikut menyinkronkan semua layanan dari namespace public dan test di kluster sumber ke kluster tujuan, menggunakan sinkronisasi dua arah:

clusters:
  - clusterName: src
    connectKeyList:
      - mse-xxxxx-nacos-ans.mse.aliyuncs.com:8848
    clusterType: NACOS
    namespace: public,test
  - clusterName: dst
    connectKeyList:
      - mse-xxxxxx-nacos-ans.mse.aliyuncs.com:8848
    clusterType: NACOS

tasks:
  - source: src
    destination: dst
    type: Service
    mode: Bidirectional
    serviceMatchPattern: ".*"
    autoScanAndAddService: true

Impor konfigurasi menggunakan CLI:

./bin/msesyncCMD.sh apply -f {path_to_configuration_file}

Atau, letakkan file tersebut di MseSync/conf/config.yaml. MSE Sync akan memuatnya secara otomatis saat startup.

Catatan

Saat mengimpor file konfigurasi, layanan yang baru ditambahkan akan secara otomatis ditemukan dan disinkronkan.

Opsi B: Konfigurasi melalui antarmuka web

  1. Buka antarmuka web MSE Sync.

  2. Pada panel navigasi kiri, klik Service Sync.

  3. Klik Import Configuration.

  4. Pada kotak dialog Import Configuration, tempel konfigurasi YAML dan klik OK.

Referensi konfigurasi

Bidang kluster

BidangDeskripsiContoh
clusterNameNama unik untuk kluster. Setelah diatur, jangan ubah nilai ini.sourceCluster
clusterTypeTipe registri: NACOS, ZOOKEEPER, EUREKA, atau CONSULNACOS
namespaceNama namespace Nacos. Pisahkan beberapa namespace dengan koma. Jika dibiarkan kosong pada kluster sumber, data dari semua namespace akan disinkronkan.public,test
connectKeyListDaftar titik akhir koneksi untuk kluster.Lihat contoh di bawah
userNameUsername Nacos (jika autentikasi diaktifkan).--
passwordPassword Nacos (jika autentikasi diaktifkan).--
akID AccessKey untuk autentikasi dengan instans Nacos MSE cloud.LTAI5***dXai6
skRahasia AccessKey untuk autentikasi dengan instans Nacos MSE cloud.Jdvdj***6vs7wBEKO

Contoh connectKeyList:

connectKeyList:
  - localhost:8848
  - localhost1:8848

Bidang task

BidangDeskripsiDefault
sourceNama kluster sumber (harus sesuai dengan clusterName di bagian clusters).--
destinationNama kluster target. Namespace target secara otomatis dipertahankan konsisten dengan sumber. Jika namespace tidak ada di target, MSE Sync akan membuatnya.--
typeTipe sinkronisasi: Service (data layanan), Config (data konfigurasi, hanya untuk Nacos dan ZooKeeper), atau All (keduanya).--
modeArah sinkronisasi: Unidirectional (hanya dari sumber ke target) atau Bidirectional (kedua arah).--
serviceMatchPatternEkspresi reguler untuk memfilter layanan mana yang akan disinkronkan..* (semua layanan)
autoScanAndAddServiceSecara otomatis menemukan dan menyinkronkan layanan baru yang ditambahkan ke kluster sumber.true

Penerapan multi-instans

Untuk lingkungan produksi, terapkan beberapa instans MSE Sync yang didukung oleh database MySQL bersama. Jika satu node gagal, node-node sehat yang tersisa mendeteksi kegagalan melalui tugas terjadwal dan mengambil alih pekerjaan sinkronisasi dari node yang gagal tersebut.

Interval pemindaian pemulihan

Interval pemindaian pemulihan mengontrol seberapa sering node sehat memeriksa kegagalan node. Konfigurasikan dengan parameter Java Virtual Machine (JVM) berikut, yang diatur melalui variabel lingkungan JAVA_OPT:

-Dmsesync.daemon.refresh.interval=60  // Satuan: detik

Contoh:

JAVA_OPT="$JAVA_OPT -Dmsesync.daemon.refresh.interval=10"
Penting
  • Interval default adalah 60 detik. Jangan atur terlalu rendah — interval pendek meningkatkan beban pada server dan node MSE Sync. Nilai minimum yang direkomendasikan adalah 10 detik. Sesuaikan berdasarkan beban kluster dan volume sinkronisasi.

  • Jangan gunakan penerapan multi-instans untuk task sinkronisasi konfigurasi.

Selama interval antara kegagalan node dan pemindaian pemulihan terjadwal berikutnya, daftar instans klien mungkin sementara kosong.

Catatan penggunaan

  • Sinkronisasi dua arah dan status offline: Selama sinkronisasi dua arah, jika penyedia layanan di-offline dari konsol instans target, status offline tersebut tidak disebarkan kembali ke instans sumber.

  • Imutabilitas nama kluster: Setelah clusterName diatur dalam konfigurasi, jangan ubah nilainya. Mengubahnya dapat mencegah task sinkronisasi dilanjutkan setelah restart.

FAQ

Task sinkronisasi telah ditambahkan melalui UI atau file YAML, tetapi tidak muncul di daftar task.

Periksa apakah layanan ada di namespace kluster sumber. MSE Sync hanya membuat task sinkronisasi untuk layanan yang dapat ditemukan. Verifikasi:

  1. Detail koneksi kluster benar (titik akhir, kredensial autentikasi).

  2. ID namespace sesuai dengan namespace yang ada di kluster sumber.

  3. Setidaknya satu instans layanan (penyedia layanan) terdaftar di namespace yang ditentukan.

Selama sinkronisasi dua arah, menonaktifkan penyedia layanan dari konsol target tidak disinkronkan kembali ke sumber.

Ini adalah perilaku yang diharapkan. Status offline yang diatur melalui konsol instans target tidak disinkronkan ke instans sumber.

Deskripsi bidang konfigurasi YAML tambahan

  • Bidang clusters:

    Bidang

    Deskripsi

    Nilai contoh

    namespace

    Nama namespace Nacos.

    Catatan: Anda dapat memasukkan beberapa namespace, dipisahkan koma. Jika bidang ini dibiarkan kosong dan instans tersebut merupakan sumber sinkronisasi, data dari semua namespace di instans tersebut akan disinkronkan.

    • public

    • test

    • test1

    ak

    AccessKey untuk autentikasi instans Nacos MSE cloud.

    LTAI5***********dXai6

    sk

    Rahasia AccessKey untuk autentikasi instans Nacos MSE cloud.

    Jdvdj*************6vs7wBEKO