切換 Milvus 集群的 MQ 類型

本主題描述如何切換現有 Milvus 集群部署的訊息佇列 (MQ) 類型。Milvus 支援在 Pulsar、Kafka 和 Woodpecker 之間進行線上 MQ 切換,而無需停機。

此功能尚待釋出,可能會有所變更。如果您想試用或有任何問題,請聯絡 Milvus 支援。

先決條件

  • 透過 MilvusOperatorHelm 安裝的運行中的 Milvus 集群實例。
  • Milvus 實例已升級到支援此 Switch MQ 功能的最新版本。

從 Pulsar/Kafka 切換到 Woodpecker (MinIO)

按照以下步驟,將 MQ 類型從 Pulsar 或 Kafka 切換到使用 MinIO 儲存的 Woodpecker。

步驟 1:確認 Milvus 實例正在運行

在切換之前,請確保您的 Milvus 集群實例運行正常。您可以透過建立測試集合、插入資料並執行查詢來驗證。

步驟 2:(可選)驗證啄木鳥配置

預設的 Milvus 配置已經將 Woodpecker 儲存類型設定為 MinIO,因此在大多數情況下不需要額外的配置。

但是,如果您之前自訂了 Woodpecker 配置,則必須確保woodpecker.storage.type 設定為minio 。更新 Milvus 配置時,請變更mqType 值:

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 類型 (例如pulsarkafka),而<MQ2> 是目標 MQ 類型 (woodpecker)。

  • 第一條訊息表示從原始碼到目標的 WAL 切換已經完成。
  • 第二條訊息表示所有實體通道已切換完成。
  • 第三條訊息表示mq.type 設定已在 etcd 中更新。

從 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 標誌是啟用 Streaming Node 的必要條件,而 Streaming Node 是 Switch MQ 功能的先決條件。例如,要切換到 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 配置的詳細資訊,請參閱使用MilvusOperator配置 Milvus。

選項 C:外部 Pulsar/Kafka

如果您使用外部 Pulsar 或 Kafka 服務,您不需要更改mqType 。只需將外部 MQ 存取配置添加到values.yaml ,並重新啟動 Milvus 實例以呈現配置。

步驟 3:執行 MQ 切換

執行以下指令來觸發切換到 Pulsar (如果切換到 Kafka,請將pulsar 改為kafka ):

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 切換已經完成。
  • 第二條訊息表示所有實體通道已切換完成。
  • 第三條訊息表示mq.type 配置已在 etcd 中更新。