跳转到内容

Milvus和Redis的安装(扩展资料)

基于 Docker 部署单机版 Milvus 和 Redis 教程

Section titled “基于 Docker 部署单机版 Milvus 和 Redis 教程”

本教程介绍如何在 Windows 11 和 M1 芯片的 macOS 系统上使用 Docker 同时部署和运行单机版 Milvus(向量数据库)和 Redis(键值存储数据库)。教程分为两部分,分别针对不同操作系统提供详细步骤。

  • 硬件要求
    • 至少 8GB 内存(建议 16GB 或更高)。
    • 至少 20GB 可用磁盘空间(Milvus 和 Redis 数据存储)。
  • 软件要求
    • 已安装 Docker Desktop(Windows 11 或 macOS)。
    • 确保 Docker Compose 已包含在 Docker Desktop 中(通常默认安装)。
  • 网络要求
    • 稳定的互联网连接,用于拉取 Docker 镜像。
  • 软件版本
    • Milvus:2.4.4(最新稳定版)。
    • Redis:7.2(最新稳定版)。
  • 端口要求
    • Milvus:19530(gRPC)、9091(RESTful API)。
    • Redis:6379(默认端口)。
    • 确保以上端口未被占用。

一、Windows 11 系统部署 Milvus 和 Redis

Section titled “一、Windows 11 系统部署 Milvus 和 Redis”
  1. 下载 Docker Desktop

  2. 安装 Docker Desktop

    • 双击下载的安装文件,按照提示完成安装。

    • 启用 WSL 2(Windows Subsystem for Linux 2)支持:

      • 打开 PowerShell(以管理员身份),运行:

        wsl --install
      • 安装完成后,重启计算机。

  3. 验证 Docker 安装

    • 打开 PowerShell 或命令提示符,运行:

      Terminal window
      docker --version
      docker compose version
    • 确保输出版本信息,例如 Docker version 27.x.xDocker Compose version v2.x.x

  1. 创建项目目录

    • 在本地磁盘(例如 C盘)创建一个文件夹,用于存放 Milvus 和 Redis 的配置文件和数据:

      Terminal window
      mkdir C:\milvus_redis
      cd C:\milvus_redis
  2. 创建 Docker Compose 文件

    • 在 C:\milvus_redis 目录下创建文件

      docker-compose.yml

      内容如下:

      version: '3.5'
      # Windows/x86_64 Version
      # Redis Password set to: 1234
      services:
      etcd:
      container_name: milvus-etcd
      image: quay.io/coreos/etcd:v3.5.5
      environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_ENABLE_V2=true
      volumes:
      - ./volumes/etcd:/etcd/data
      command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd/data
      minio:
      container_name: milvus-minio
      image: minio/minio:RELEASE.2023-03-20T20-16-18Z
      environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
      volumes:
      - ./volumes/minio:/minio/data
      command: minio server /minio/data
      healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
      standalone:
      container_name: milvus-standalone
      # 使用多架构镜像,Docker on Windows 会自动拉取 x86_64 版本
      image: milvusdb/milvus:v2.4.4
      command: ["milvus", "run", "standalone"]
      environment:
      - ETCD_ENDPOINTS=etcd:2379
      - MINIO_ADDRESS=minio:9000
      volumes:
      - ./volumes/milvus:/var/lib/milvus
      ports:
      - "19530:19530"
      - "9091:9091"
      depends_on:
      - "etcd"
      - "minio"
      redis:
      container_name: milvus-redis
      image: redis:latest
      restart: always
      ports:
      - "6379:6379"
      volumes:
      - ./volumes/redis:/data
      # 设置 Redis 密码为 1234
      command: redis-server --requirepass 1234
      networks:
      default:
      name: milvus-network
    • 说明

      • Milvus 服务

        • image: 使用 Milvus 官方镜像 milvusdb/milvus:v2.4.10
        • ports: 映射 gRPC(19530)和 RESTful API(9091)端口。
        • volumes: 数据持久化存储到本地 ./volumes/milvus 目录。
        • environment: 配置日志级别和 Etcd 参数。
        • command: 启动 Milvus 单机模式。
      • Redis 服务

        • image: 使用 Redis 官方镜像 redis:7.2
        • ports: 映射默认端口 6379
        • volumes: 数据持久化存储到本地 ./volumes/redis 目录。
        • command: 启用 AOF(Append Only File)持久化模式。
      • volumes: 定义持久化存储卷。

  1. 拉取镜像并启动容器

    • 在 C:\milvus_redis 目录下,打开 PowerShell,运行:

      Terminal window
      docker compose up -d
    • -d 表示后台运行容器。

  2. 验证容器状态

    • 检查容器是否正常运行:

      Terminal window
      docker ps
    • 确认 milvus_standaloneredis 容器均处于 Up 状态。

  1. 安装 Milvus Python SDK

    • 确保已安装 Python 3.8 或以上版本。

    • 在 PowerShell 中安装:

      Terminal window
      pip install pymilvus
  2. 测试 Milvus 连接

    • 创建 Python 脚本(例如 test_milvus.py ),内容如下:

      from pymilvus import connections, utility
      # 连接到 Milvus
      connections.connect(host="localhost", port="19530")
      # 检查版本
      print(f"Milvus version: {utility.get_server_version()}")
    • 运行脚本:

      python test_milvus.py
    • 输出类似 Milvus version: 2.4.10 表示 Milvus 部署成功。

  1. 安装 Redis Python 客户端

    • 在 PowerShell 中安装:

      Terminal window
      pip install redis
  2. 测试 Redis 连接

    • 创建 Python 脚本(例如 test_redis.py ),内容如下:

      import redis
      # 连接到 Redis
      client = redis.Redis(host="localhost", port=6379, decode_responses=True)
      # 测试读写
      client.set("test_key", "Hello, Redis!")
      value = client.get("test_key")
      print(f"Redis value: {value}")
    • 运行脚本:

      python test_redis.py
    • 输出类似 Redis value: Hello, Redis! 表示 Redis 部署成功。

  • 停止服务

    Terminal window
    docker compose down

二、M1 芯片 macOS 系统部署 Milvus 和 Redis

Section titled “二、M1 芯片 macOS 系统部署 Milvus 和 Redis”

M1 芯片(ARM64 架构)运行 Docker 时需确保镜像兼容性。Milvus 和 Redis 官方镜像均支持 ARM64,因此可以直接使用,但需正确配置 Docker Desktop。

  1. 下载 Docker Desktop

    • 访问 Docker 官方网站,下载适用于 macOS(Apple Silicon)的 Docker Desktop 安装包。
  2. 安装 Docker Desktop

    • 双击下载的 .dmg 文件,按照提示拖动安装。
    • 安装完成后,启动 Docker Desktop,并确保其在菜单栏运行。
  3. 验证 Docker 安装

    • 打开终端,运行:

      Terminal window
      docker --version
      docker compose version
    • 确保输出版本信息,例如 Docker version 27.x.xDocker Compose version v2.x.x

  4. 启用 Rosetta(可选)

    • 如果遇到兼容性问题,可在 Docker Desktop 设置中启用 Rosetta 模拟:
      • 打开 Docker Desktop -> Settings -> Features in Development -> 勾选 “Use Rosetta for x86/AMD64 emulation on Apple Silicon”。
  1. 创建项目目录

    • 在终端中创建并进入目录:

      Terminal window
      mkdir ~/milvus_redis
      cd ~/milvus_redis
  2. 创建 Docker Compose 文件

    • 创建文件

      docker-compose.yml
      version: '3.5'
      # M1/ARM64 Mac Version
      # Redis Password set to: 1234
      services:
      etcd:
      container_name: milvus-etcd
      image: quay.io/coreos/etcd:v3.5.5
      environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_ENABLE_V2=true
      volumes:
      - ./volumes/etcd:/etcd/data
      command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd/data
      minio:
      container_name: milvus-minio
      image: minio/minio:RELEASE.2023-03-20T20-16-18Z
      environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
      volumes:
      - ./volumes/minio:/minio/data
      command: minio server /minio/data
      healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
      standalone:
      container_name: milvus-standalone
      # 使用多架构镜像,Docker on M1 会自动拉取 ARM64 版本
      image: milvusdb/milvus:v2.4.4
      command: ["milvus", "run", "standalone"]
      environment:
      - ETCD_ENDPOINTS=etcd:2379
      - MINIO_ADDRESS=minio:9000
      volumes:
      - ./volumes/milvus:/var/lib/milvus
      ports:
      - "19530:19530"
      - "9091:9091"
      depends_on:
      - "etcd"
      - "minio"
      redis:
      container_name: milvus-redis
      image: redis:latest # Redis 官方镜像同样支持多架构
      restart: always
      ports:
      - "6379:6379"
      volumes:
      - ./volumes/redis:/data
      # 设置 Redis 密码为 1234
      command: redis-server --requirepass 1234
      networks:
      default:
      name: milvus-network
    • 注意:Milvus 和 Redis 镜像均支持 ARM64,无需额外配置。

  1. 拉取镜像并启动容器

    • 在 ~/milvus_redis 目录下,运行:

      Terminal window
      docker compose up -d
  2. 验证容器状态

    • 检查容器是否运行:

      Terminal window
      docker ps
    • 确认 milvus_standaloneredis 容器均处于 Up 状态。

  1. 安装 Milvus Python SDK

    • 确保已安装 Python 3.8 或以上版本。

    • 在终端中安装:

      Terminal window
      pip install pymilvus
  2. 测试 Milvus 连接

    • 创建 Python 脚本(例如 test_milvus.py ),内容与 Windows 部分相同:

      from pymilvus import connections, utility
      # 连接到 Milvus
      connections.connect(host="localhost", port="19530")
      # 检查版本
      print(f"Milvus version: {utility.get_server_version()}")
    • 运行脚本:

      python test_milvus.py
  1. 安装 Redis Python 客户端

    • 在终端中安装:

      Terminal window
      pip install redis
  2. 测试 Redis 连接

    • 创建 Python 脚本(例如 test_redis.py ),内容与 Windows 部分相同:

      import redis
      # 连接到 Redis
      client = redis.Redis(host="localhost", port=6379, decode_responses=True)
      # 测试读写
      client.set("test_key", "Hello, Redis!")
      value = client.get("test_key")
      print(f"Redis value: {value}")
    • 运行脚本:

      python test_redis.py
  • 停止服务

    Terminal window
    docker compose down
  • 清理数据

    (可选):

    • 删除 milvus 和 redis 目录:

      rm -rf ~/milvus_redis/volumes/milvus
      rm -rf ~//milvus_redis/volumes/redis

  1. 端口冲突

    • 如果 1953090916379 端口被占用,修改 docker-compose.yml 中的端口映射(例如 19531:19530),并在客户端连接时使用新端口。
  2. 镜像拉取失败

    • 确保网络连接正常,或尝试手动拉取镜像:

      Terminal window
      docker pull milvusdb/milvus:v2.4.10
      docker pull redis:7.2
  3. M1 芯片兼容性问题

    • 如果镜像运行失败,检查 Docker Desktop 是否启用了 Rosetta 模拟。
  4. 连接失败

    • 确保容器运行正常,检查防火墙(Windows)或网络设置(macOS)是否阻止了端口。
  5. Redis 数据未持久化

    • 确保 docker-compose.yml 中启用了 --appendonly yes,且 ./redis_data 目录有写权限。