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 | サービスと永続的な構成。 重要
|
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_URL、MYSQL_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 デプロイメント
以下の構成で、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 を指すサービスを追加します。
次のコマンドを実行して MSE Sync をデプロイします。
kubectl apply -f mse-sync-deployment.yaml
ECS デプロイメント
MSE Sync バイナリパッケージをダウンロードします。
curl https://msesync.oss-cn-hangzhou.aliyuncs.com/MseSync.zip --output msesync.zipバイナリパッケージを解凍し、MSE Sync のルートディレクトリに移動します。
unzip ./msesync.zipオプション: MySQL を使用する場合は、次の環境変数を構成します。
export MYSQL_URL="" export MYSQL_USER_NAME="" export MYSQL_PASSWORD=""アプリケーションを起動します。
./MseSync/bin/startup.sh start
ステップ 2: クラスター情報と移行タスクを構成する
MSE Sync で移行タスクを構成するには、UI または構成ファイルを使用します。
UI を使用したタスクの移行:
MSE Sync ツールを開きます。左側のナビゲーションウィンドウで、[サービス同期] をクリックします。次に、[構成のインポート] をクリックします。[構成のインポート] ダイアログボックスで、構成内容を入力し、[OK] をクリックして構成をインポートします。
構成ファイルを使用したタスクの移行:
構成ファイルを作成します。次の YAML ファイルは、`src` クラスターの `public` および `test` 名前空間から `dst` クラスターにすべてのサービスを自動的に同期する例です。このタスクは、サービス情報の双方向同期を実行します。
構成には、
clustersとtasksの 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次のコマンドを実行して構成をインポートします。
./bin/msesyncCMD.sh apply -f {path_to_configuration_file}構成ファイルを
MseSync/conf/config.yamlにマウントまたは配置し、MSE Sync を起動します。MSE Sync が起動すると、構成ファイルが自動的に初期化され、データ移行が開始されます。
説明構成ファイルは、MSE コンソールの クラウドへの移行 ページで移行タスクを構成することによって自動的に生成できます。
ファイルをインポートして同期を構成すると、新しく追加されたサービスが自動的に同期されます。
構成フィールド
以降のセクションでは、clusters と tasks フィールドについて説明します。これらのフィールドは両方ともリスト型です。
Clusters フィールドの説明
フィールド | 説明 | 値の例 |
clusterName | クラスター名。 説明 構成内のクラスター名は一意である必要があります。 | sourceCluster |
clusterType | クラスタータイプ。 |
|
namespace | Nacos の名前空間名。 説明 複数の名前空間をカンマで区切って入力できます。 |
|
connectKeyList | クラスターのアクセスエンドポイント。これはリストタイプです。 | |
userName | Nacos のユーザー名。 | なし |
password | Nacos のパスワード。 | なし |
Tasks フィールドの説明
フィールド | 説明 | 値の例 |
source | ソースクラスター名。 | なし。 |
destination | ターゲットクラスター名。 | ターゲットクラスターの名前空間は、ソースクラスターの名前空間と自動的に一致するように維持されます。対応する名前空間がターゲットクラスターに存在しない場合、MSE Sync は自動的に作成します。 |
type | 同期タイプ。 |
|
mode | 同期モード。 |
|
serviceMatchPattern | 同期したいサービスに一致する正規表現。 | デフォルトでは、すべてのサービスが同期されます。 |
autoScanAndAddService | ソースクラスターに追加された新しいサービスを自動的にスキャンして同期するかどうかを指定します。 | デフォルト値は True です。 |