必要条件

インストール

QDRANT__SERVICE__API_KEYは必須の環境変数です

以下のコマンドを使用してランダムな32バイトの16進文字列を生成できます:

openssl rand -hex 32

生成された文字列をコピーして、docker-compose.ymlファイルの#REPLACE_ME#に置き換えてください。

[First VM] docker-compose.ymlファイルを作成

  • コマンドを現在のVMアドレスに--uriオプションで置き換えます
version: "3.8"
services:
  qdrant:
    image: langgenius/qdrant:v1.7.3
    command: "./qdrant --uri 'http://dify-qdrant-node-01:6335'"
    network_mode: "host"
    restart: always
    volumes:
      - /data/qdrant/data/:/qdrant/storage
    environment:
      QDRANT__SERVICE__API_KEY: #REPLACE_ME#
      QDRANT__CLUSTER__ENABLED: 'true'

[Second VM] docker-compose.ymlファイルを作成

  • コマンドを--bootstrapオプションで最初のVMアドレスに、--uriオプションで現在のVMアドレスに置き換えます
version: "3.8"
services:
  qdrant:
    image: langgenius/qdrant:v1.7.3
    command: "./qdrant --bootstrap 'http://dify-qdrant-node-01:6335' --uri 'http://dify-qdrant-node-02:6335'"
    network_mode: "host"
    restart: always
    volumes:
      - /data/qdrant/data/:/qdrant/storage
    environment:
      QDRANT__SERVICE__API_KEY: #REPLACE_ME#
      QDRANT__CLUSTER__ENABLED: 'true'

[第三台虚拟机] 为第三台虚拟机创建 docker-compose.yml 文件

  • 将命令中的 --bootstrap 选项替换为第一台虚拟机地址,--uri 选项替换为当前虚拟机地址
version: "3.8"
services:
  qdrant:
    image: langgenius/qdrant:v1.7.3
    command: "./qdrant --bootstrap 'http://dify-qdrant-node-01:6335' --uri 'http://dify-qdrant-node-03:6335'"
    network_mode: "host"
    restart: always
    volumes:
      - /data/qdrant/data/:/qdrant/storage
    environment:
      QDRANT__SERVICE__API_KEY: #REPLACE_ME#
      QDRANT__CLUSTER__ENABLED: 'true'

クラスターのステータスを確認する

VMの1つにログインし、以下のコマンドを実行してクラスターのステータスを確認します。

curl -H 'api-key: <QDRANT__SERVICE__API_KEY>' localhost:6333/cluster | python3 -m json.tool

上記のコマンドを実行すると、以下のような出力が表示されます:

{
    "result": {
        "status": "enabled",
        "peer_id": 2978525476254873,
        "peers": {
            "8497171801402828": {
                "uri": "http://172.206.68.136:6335/"
            },
            "2978525476254873": {
                "uri": "http://172.206.71.251:6335/"
            },
            "530461904384369": {
                "uri": "http://20.85.121.81:6335/"
            }
        },
        "raft_info": {
            "term": 1,
            "commit": 7,
            "pending_operations": 0,
            "leader": 530461904384369,
            "role": "Follower",
            "is_voter": true
        },
        "consensus_thread_status": {
            "consensus_thread_status": "working",
            "last_update": "2024-06-30T15:13:23.508350153Z"
        },
        "message_send_failures": {}
    },
    "status": "ok",
    "time": 8.7e-06
}

ロードバランサーの追加

  • qdrantクラスターをデプロイした後、リクエストをqdrantノードに分散させるためにロードバランサーを追加できます。
  • ロードバランサーは、ポート6333でqdrantノードにリクエストを分散するように構成する必要があります。
  • 6335は内部通信専用であり、公開する必要はありません。

参考文献