MilvusクラスタのMQタイプの切り替え

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

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

前提条件

  • MilvusOperatorまたはHelm経由でインストールされた稼働中のMilvusクラスタインスタンス。
  • MilvusインスタンスがこのSwitch MQ機能をサポートする最新バージョンにアップグレードされていること。

Pulsar/KafkaからWoodpecker (MinIO)への切り替え

以下の手順に従って、MQタイプをPulsarまたはKafkaからMinIOストレージを持つWoodpeckerに切り替えてください。

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

切り替える前に、Milvusクラスタ・インスタンスが正しく動作していることを確認してください。テスト・コレクションを作成し、データを挿入し、クエリを実行することで検証できます。

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

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

ただし、以前にWoodpecker構成をカスタマイズした場合は、woodpecker.storage.typeminio に設定されていることを確認する必要があります。mqType の値を変更せずに、Milvus構成を更新します:

woodpecker:
  storage:
    type: minio

ステップ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> は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 タイプ(例えば、pulsar またはkafka )であり、<MQ2> はターゲット MQ タイプ(woodpecker )です。

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

Woodpecker(MinIO)からPulsarまたはKafkaへの切り替え

以下の手順に従って、MQタイプをWoodpeckerからPulsarまたはKafkaに戻してください。

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

切り替える前に、Milvusクラスタ・インスタンスが正常に稼動していることを確認してください。

ステップ2: ターゲットMQの設定

切り替えをトリガする前に、ターゲットMQサービス(PulsarまたはKafka)が利用可能で、そのアクセス設定がMilvus設定にレンダリングされていることを確認する必要があります。

このセクションの正確な手順は、内部(バンドル)または外部MQサービスのどちらを使用するかによって異なります。

オプションA:内部Pulsar/Kafka(Helmにバンドル)

HelmにバンドルされたPulsarまたはKafkaを使用している場合は、Helmリリースを更新して対象のMQサービスを有効にし、Woodpeckerを無効にしてください。streaming.enabled=true フラグは、Switch MQ機能の前提条件であるStreaming Nodeを有効にするために必要です。例えば、Pulsarに切り替える場合などです:

helm upgrade -i my-release milvus/milvus \
  --set pulsarv3.enabled=true \
  --set woodpecker.enabled=false \
  --set streaming.enabled=true \
  -f values.yaml

アップグレード後、ターゲットMQアクセス設定がmilvus設定にレンダリングされていることを確認します。例えば、Pulsarの場合:

pulsar:
  address: <pulsar-proxy-address>
  port: 6650

オプションB: 内部Pulsar/Kafka(Milvus Operatorで管理)

Milvus Operatorを使用している場合は、Milvusカスタム・リソースを更新し、ターゲットMQアクセス構成を含めます。Milvus設定の更新の詳細については、「Milvus Operatorを使用したMilvusの設定」を参照してください。

オプションC: 外部Pulsar/Kafka

外部PulsarまたはKafkaサービスを使用している場合、mqType を変更する必要はありません。values.yaml に外部MQアクセス設定を追加し、Milvusインスタンスを再起動するだけで設定が反映されます。

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

以下のコマンドを実行し、Pulsarへの切り替えをトリガします(Kafkaへの切り替えの場合は、pulsarkafka に置き換えてください):

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

<mixcoord_addr> 、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 タイプ(woodpecker )、<MQ2> がターゲット MQ タイプ(pulsarkafka など)です。

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