すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:MSE Sync 移行ソリューション

最終更新日:Nov 23, 2025

MSE Sync は、オープンソースの Nacos Sync プロジェクトを高度にカスタマイズおよび最適化したバージョンのデータ同期ツールです。双方向データ同期を提供し、自動サービス検出やワンクリックでのフルサービス同期などの機能を備えています。MSE Sync は、マルチインスタンスデプロイメントアーキテクチャを使用して、高可用性とディザスタリカバリを提供します。これにより、Nacos、ZooKeeper、Eureka などの構成管理プラットフォーム間でスムーズな移行が必要なシナリオに最適です。

MSE Sync 移行の概要

MSE Sync 移行の利点

  • スムーズな移行

    移行中、MSE Sync はソースクラスターと MSE クラウドプロダクト間でサービス情報を同期します。これにより、自己管理型のレジストリセンターから MSE プロダクトへのスムーズな移行が可能になります。

    図では、`pub` はサービスパブリッシャーを、`sub` はサービスサブスクライバーを指します。平滑迁移

  • マルチインスタンスデプロイメント

    サービス同期モードでは、マルチインスタンスデプロイメントがサポートされています。多实例部署

    同期ツールは、ノードがダウンした場合にデータを回復するためにスケジュールされたタスクを使用します。正常なノードは、スケジュールされたタスクを実行して、失敗したノードからデータを回復します。ノードの障害とスケジュールされたタスクの完了の間の間隔では、クライアントのインスタンスリストが一時的に空になることがあります。次のパラメーターを使用して、スケジュールされたタスクのスキャン間隔を構成できます。これは、`JAVA_OPT` 環境変数を使用して指定できる Java 仮想マシン (JVM) パラメーターです。

    -Dmsesync.daemon.refresh.interval=60 // 単位: 秒

    次に例を示します。

    JAVA_OPT="$JAVA_OPT -Dmsesync.daemon.refresh.interval=10"
    重要
    • スケジュールされたタスクのデフォルトのスキャン間隔は 60 秒です。スキャン間隔を小さい値に設定しないでください。短い間隔は、サーバーと同期ノードに過度の圧力をかける可能性があります。適切な間隔は、クラスターの負荷と同期ツールの負荷によって異なります。推奨される最小値は 10 秒です。

    • 構成の同期にマルチインスタンスデプロイメントを使用しないでください。

  • 簡単な操作

    MSE Sync は、ZooKeeper、Nacos、および Eureka のサービス登録ロジックと互換性があります。ZooKeeper から ZooKeeper、ZooKeeper から Nacos、Nacos から Nacos、Eureka から Nacos などのパスのサービス情報同期をサポートしています。MSE Sync はまた、これらのレジストリセンターからサービス情報を自動的に取得し、ワンクリック選択機能によってプロセスが簡素化されます。适配注册逻辑

サポートされているレジストリセンタータイプ

MSE Sync は、次の同期インスタンスタイプをサポートしています。

ソースレジストリセンタータイプ

ターゲットレジストリセンタータイプ

同期サポート

Nacos

Nacos

ネイティブ Nacos サービスタイプ。

ZooKeeper

ZooKeeper

サービスと永続的な構成。

重要
  1. MSE Sync 移行ツールを使用して ZooKeeper データノードを同期する場合、ソースクラスターとターゲットクラスターで同じ Znode を同時に変更しないでください。そうしないと、移行中に書き込まれたデータが失われる可能性があります。サービスとエフェメラルノードを同期するために構成同期メソッドを使用しないでください。

  2. 同期ツールが永続ノードを同期すると、各 Znode のソースクラスターに watch を登録します。ソースクラスターに多くのノードがある場合、このプロセスは多くの watch を作成し、大量のメモリを消費します。Znode の数とソースクラスターの構成が、同期ツールからの変更リスナーをサポートできることを確認してください。

Eureka

Nacos

ネイティブ Eureka サービスタイプ。

この同期タイプでは、Nacos に登録されるサービス名は小文字である必要があります。デフォルトでは、Eureka はサービス名を大文字で登録します。ただし、MSE Sync がこれらのサービスを Nacos に同期すると、サービス名が小文字に変換されます。元のサービス名に大文字が含まれている場合、Nacos に同期されたサービスは相互運用できない可能性があります。

たとえば、サービス `Service-1` は Eureka に `SERVICE-1` という名前で登録されます。MSE Sync はそれを `service-1` という名前で Nacos に同期します。その後、クライアントが Nacos ソフトウェア開発キット (SDK) を使用して `Service-1` という名前のサービスを Nacos に登録すると、`service-1` と `Service-1` は 2 つの異なるサービスとして扱われます。サービスインスタンスは相互運用できません。Nacos に直接登録されたインスタンスは、MSE Sync によって Eureka から同期されたインスタンスを検出できません。すべてのサービス名を小文字に変更すると、MSE Sync は Eureka からのサービス名を小文字に変換し、両側のサービス間の相互運用性を確保します。

Consul

Nacos

ネイティブ Consul サービスタイプ。

このツールは、正常なインスタンス情報のみを同期します。同期ツールは現在、メタデータの変更を検出しません。したがって、メタデータの変更は自動的に同期されません。同期ツールは、Consul 構成情報の同期もサポートしていません。

ステップ 1: MSE Sync 移行ツールをデプロイする

重要

移行ツールは、自己管理型クラスターと MSE クラスターに接続できる必要があります。両方のクラスターにアクセスできるネットワーク環境に移行ツールをデプロイする必要があります。たとえば、クラスターと同じ Virtual Private Cloud (VPC) にツールをデプロイするか、パブリックインターネット経由で両方のクラスターにアクセスできることを確認します。そうしないと、移行は失敗します。

デプロイメントモード

  • MySQL 依存のデプロイメント

    独自の MySQL サービスを提供する必要があります。MySQL サービスで、MSE Sync の読み取りおよび書き込み権限を持つデータベースとユーザーアカウントを作成します。環境変数を使用して MySQL の URL、ユーザー名、およびパスワードを渡します。複数の MSE Sync インスタンスが単一の MySQL サービスを共有できます。

  • Derby 依存のデプロイメント

    MSE Sync は、埋め込み Derby データベースをサポートしており、単一のマシンで実行できます。

環境変数

  • データベース関連の環境変数

    MSE Sync は、環境変数に基づいて MySQL または埋め込み Derby データベースを使用するかどうかを自動的に判断します。MYSQL_URLMYSQL_USER_NAME、および MYSQL_PASSWORD 環境変数がすべて設定されている場合、MSE Sync は起動時に MySQL サービスに接続します。それ以外の場合は、埋め込み Derby データベースを使用します。

    環境変数名

    説明

    MYSQL_URL

    MySQL の接続文字列。

    jdbc:mysql://localhost:3306/sync

    MYSQL_USER_NAME

    MSE Sync の読み取りおよび書き込み権限を持つアカウントのユーザー名。

    なし

    MYSQL_PASSWORD

    `MYSQL_USER_NAME` アカウントのパスワード。

    なし

  • JVM 関連の環境変数

    `conf` ディレクトリの `java.env` ファイルで、`JAVA_OPT` 変数を使用して JVM パラメーターを追加します。

    たとえば、JVM ヒープメモリサイズを設定するには、次のコードを追加します: JAVA_OPT="$JAVA_OPT -Xms2048m -Xmx2048m"

デプロイ方法

  • Kubernetes デプロイメント

    1. 以下の構成で、MySQL のユーザー名、パスワード、replicas などのパラメーターを変更します。構成ファイルを mse-sync-deployment.yaml として保存します。

      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
      説明

      MSE Sync UI にアクセスするには、MSE Sync のポート 8000 を指すサービスを追加します。

    2. 次のコマンドを実行して MSE Sync をデプロイします。

      kubectl apply -f mse-sync-deployment.yaml
  • ECS デプロイメント

    1. MSE Sync バイナリパッケージをダウンロードします。

      curl https://msesync.oss-cn-hangzhou.aliyuncs.com/MseSync.zip --output msesync.zip
    2. バイナリパッケージを解凍し、MSE Sync のルートディレクトリに移動します。

      unzip ./msesync.zip
    3. オプション: MySQL を使用する場合は、次の環境変数を構成します。

      export MYSQL_URL=""
      export MYSQL_USER_NAME=""
      export MYSQL_PASSWORD=""
    4. アプリケーションを起動します。

      ./MseSync/bin/startup.sh start

ステップ 2: クラスター情報と移行タスクを構成する

MSE Sync で移行タスクを構成するには、UI または構成ファイルを使用します。

  • UI を使用したタスクの移行:

    MSE Sync ツールを開きます。左側のナビゲーションウィンドウで、[サービス同期] をクリックします。次に、[構成のインポート] をクリックします。[構成のインポート] ダイアログボックスで、構成内容を入力し、[OK] をクリックして構成をインポートします。

  • 構成ファイルを使用したタスクの移行:

    1. 構成ファイルを作成します。次の YAML ファイルは、`src` クラスターの `public` および `test` 名前空間から `dst` クラスターにすべてのサービスを自動的に同期する例です。このタスクは、サービス情報の双方向同期を実行します。

      構成には、clusterstasks の 2 つの主要なフィールドが含まれています。これらのフィールドは、それぞれクラスター情報と同期タスク情報を記述します。clusters フィールドと tasks フィールドの詳細については、「構成フィールド」をご参照ください。

      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
    2. 次のコマンドを実行して構成をインポートします。

      ./bin/msesyncCMD.sh apply -f {path_to_configuration_file}
    3. 構成ファイルを MseSync/conf/config.yaml にマウントまたは配置し、MSE Sync を起動します。MSE Sync が起動すると、構成ファイルが自動的に初期化され、データ移行が開始されます。

    説明
    • 構成ファイルは、MSE コンソールの クラウドへの移行 ページで移行タスクを構成することによって自動的に生成できます。

    • ファイルをインポートして同期を構成すると、新しく追加されたサービスが自動的に同期されます。

構成フィールド

以降のセクションでは、clusterstasks フィールドについて説明します。これらのフィールドは両方ともリスト型です。

Clusters フィールドの説明

フィールド

説明

値の例

clusterName

クラスター名。

説明

構成内のクラスター名は一意である必要があります。

sourceCluster

clusterType

クラスタータイプ。

  • NACOS

  • ZOOKEEPER

  • EUREKA

  • CONSUL

namespace

Nacos の名前空間名。

説明

複数の名前空間をカンマで区切って入力できます。

  • public

  • test

  • test1

connectKeyList

クラスターのアクセスエンドポイント。これはリストタイプです。

connectKeyList:
- localhost:8848
- localhost1:8848

userName

Nacos のユーザー名。

なし

password

Nacos のパスワード。

なし

Tasks フィールドの説明

フィールド

説明

値の例

source

ソースクラスター名。

なし。

destination

ターゲットクラスター名。

ターゲットクラスターの名前空間は、ソースクラスターの名前空間と自動的に一致するように維持されます。対応する名前空間がターゲットクラスターに存在しない場合、MSE Sync は自動的に作成します。

type

同期タイプ。

  • Service: サービス同期を実行します。

  • Config: 構成同期を実行します。これは Nacos と ZooKeeper でサポートされています。

  • All: ソースクラスターのタイプに基づいて、サービスと構成の同期タスクを自動的に作成します。

mode

同期モード。

  • Unidirectional (一方向同期): ソースクラスターからターゲットクラスターにのみネイティブに登録されたサービス情報を同期します。

  • Bidirectional (双方向同期): ソースクラスターとターゲットクラスター間でネイティブに登録されたサービス情報の双方向同期を有効にします。

serviceMatchPattern

同期したいサービスに一致する正規表現。

デフォルトでは、すべてのサービスが同期されます。

autoScanAndAddService

ソースクラスターに追加された新しいサービスを自動的にスキャンして同期するかどうかを指定します。

デフォルト値は True です。

よくある質問