MilvusスタンドアロンのMQタイプの切り替え

このトピックでは、既存のMilvusスタンドアロンのメッセージキュー(MQ)タイプを切り替える方法について説明します。Milvusでは、ダウンタイムなしのオンラインMQ切り替えをサポートしています。

この機能はリリース待ちであり、変更される可能性があります。Milvusサポートまでお問い合わせください。

前提条件

  • DockerまたはDocker Compose経由でインストールされたMilvus Standaloneインスタンスが稼動していること。
  • Milvusインスタンスが本Switch MQ機能をサポートする最新バージョンにアップグレードされていること。

一般的なワークフロー

MQタイプを切り替えるための一般的なワークフローは以下の通りです:

  1. Milvusインスタンスが正常に稼働していることを確認する。
  2. ソースMQタイプとターゲットMQタイプを確認する。
  3. ターゲットMQのアクセス設定を、mqType の値を変更せずにMilvusのコンフィギュレーションに設定する。
  4. WAL alter APIを呼び出してスイッチをトリガーする。
  5. ログを監視し、切り替えが正常に完了したことを確認する。

切り替える前に、ターゲットMQに現在のMilvusインスタンスで使用されているものと同じ名前のトピックが含まれていないことを確認してください。これは、ターゲットMQサービスが以前別のMilvusインスタンスで使用されていた場合、トピック名が競合すると予期せぬ動作につながる可能性があるため、特に重要です。

RocksMQからWoodpecker(ローカルストレージ)への切り替え

この手順は、デフォルトでRocksMQを使用するMilvus Standalone Dockerデプロイメントに適用されます。

ステップ1: Milvusインスタンスが起動していることを確認する

Milvus Standalone Dockerインスタンスが正常に動作していることを確認します。テストコレクションを作成し、データを挿入し、クエリを実行することで確認できます。

ステップ2: ローカルストレージでWoodpeckerを設定する

Milvusの設定を更新し、mqType の値を変更せずにWoodpeckerの設定を追加します。以下の内容でuser.yaml ファイルを作成または更新します:

woodpecker:
  storage:
    type: local

その後、Milvusインスタンスを再起動し、設定を適用します:

bash standalone_embed.sh restart

ステップ3: MQスイッチの実行

以下のコマンドを実行し、Woodpeckerへの切り替えを実行します:

curl -X POST http://<mixcoord_addr>:9091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

<mixcoord_addr> (デフォルトではlocalhost )をMixCoordサービスの実際のアドレスに置き換えてください。

ステップ4:切り替え完了の確認

スイッチプロセスは自動的に完了します。Milvusのログを監視して、以下のキーメッセージを確認し、切り替えが完了したことを確認してください:

WAL switch success: <MQ1> switch to <MQ2> finish, re-opening required
AlterWAL broadcast message acknowledged by all vchannels
successfully updated mq.type configuration in etcd

上記のログメッセージでは、<MQ1> がソース MQ タイプ(rocksmq )、<MQ2> がターゲット MQ タイプ(woodpecker )です。

  • 最初のメッセージは、ソースからターゲットへのWAL切り替えが完了したことを示している。
  • 2つ目のメッセージは、すべての物理チャネルが切り替わったことを示す。
  • 3つ目のメッセージは、etcdでmq.type の設定が更新されたことを示す。

RocksMQからWoodpecker(MinIOストレージ)への切り替え

この手順は、Milvus Standalone Docker Composeデプロイメントに適用されます。

Milvus v2.6から、デフォルトのdocker-compose.yaml 、すでにmqType がWoodpeckerとして宣言されています。デフォルトの設定を変更したり、v2.5からアップグレードしたりしない限り、この手順は必要ないかもしれません。

ステップ1: Milvusインスタンスが起動していることを確認する。

Milvus Standalone Docker Composeインスタンスが正しく動作していることを確認してください。

ステップ 2: (オプション) Woodpeckerの設定を確認する

Milvusのデフォルト設定では、WoodpeckerのストレージタイプはすでにMinIOに設定されているため、ほとんどの場合、追加の設定は必要ありません。

しかし、以前にWoodpecker構成をカスタマイズした場合は、woodpecker.storage.typeminio に設定されていることを確認する必要があります。以下の内容でuser.yaml ファイルを作成または更新します:

woodpecker:
  storage:
    type: minio

その後、Milvusインスタンスを再起動し、設定を適用します:

docker compose down
docker compose up -d

ステップ3: MQスイッチの実行

以下のコマンドを実行し、Woodpeckerに切り替えます:

curl -X POST http://<mixcoord_addr>:9091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

<mixcoord_addr> (デフォルトではlocalhost )をMixCoordサービスの実際のアドレスに置き換えてください。

ステップ4:切り替え完了の確認

スイッチプロセスは自動的に完了します。Milvusのログを監視して、以下のキーメッセージを確認し、切り替えが完了したことを確認してください:

WAL switch success: <MQ1> switch to <MQ2> finish, re-opening required
AlterWAL broadcast message acknowledged by all vchannels
successfully updated mq.type configuration in etcd

上記のログメッセージでは、<MQ1> がソース MQ タイプ(rocksmq )、<MQ2> がターゲット MQ タイプ(woodpecker )です。

  • 最初のメッセージは、ソースからターゲットへのWAL切り替えが完了したことを示している。
  • 2つ目のメッセージは、すべての物理チャネルが切り替わったことを示す。
  • 3つ目のメッセージは、etcdでmq.type 構成が更新されたことを示す。