You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Docker Compose搭建非外部API向量化器的多节点Weaviate集群?

双节点Weaviate集群+高可用向量化器配置方案

核心架构思路

  • 部署2个Weaviate节点组成集群,通过内部gossip协议实现节点通信与数据同步
  • 至少部署2个transformers-inference实例,避免向量化服务单点故障
  • 用Nginx作为负载均衡,统一接收Weaviate的向量化请求并转发到多个transformers实例,实现服务高可用

完整docker-compose.yml配置

以下是包含双节点Weaviate、双transformers实例、Nginx负载均衡的完整配置:

version: '3.4'

services:
  # Weaviate节点1
  weaviate-node1:
    image: semitechnologies/weaviate:1.18.3
    ports:
      - "8080:8080"
    environment:
      DEFAULT_VECTORIZER_MODULE: text2vec-transformers
      ENABLE_MODULES: text2vec-transformers,backup-s3
      # 指向Nginx负载均衡的内部地址
      TRANSFORMERS_INFERENCE_API: http://t2v-loadbalancer:80
      CLUSTER_HOSTNAME: 'node1'
      CLUSTER_JOIN: 'weaviate-node2'
      PERSISTENCE_DATA_PATH: "./data/node1"
      QUERY_DEFAULTS_LIMIT: 25
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      AUTHORIZATION_ADMINLIST_ENABLED: 'false'
    volumes:
      - weaviate-data-node1:/var/lib/weaviate
    restart: unless-stopped

  # Weaviate节点2
  weaviate-node2:
    image: semitechnologies/weaviate:1.18.3
    ports:
      - "8081:8080"
    environment:
      DEFAULT_VECTORIZER_MODULE: text2vec-transformers
      ENABLE_MODULES: text2vec-transformers,backup-s3
      TRANSFORMERS_INFERENCE_API: http://t2v-loadbalancer:80
      CLUSTER_HOSTNAME: 'node2'
      CLUSTER_JOIN: 'weaviate-node1'
      PERSISTENCE_DATA_PATH: "./data/node2"
      QUERY_DEFAULTS_LIMIT: 25
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      AUTHORIZATION_ADMINLIST_ENABLED: 'false'
    volumes:
      - weaviate-data-node2:/var/lib/weaviate
    restart: unless-stopped

  # Transformers向量化器实例1
  t2v-transformers-1:
    image: semitechnologies/transformers-inference:sentence-transformers-multi-qa-MiniLM-L6-cos-v1
    environment:
      ENABLE_CUDA: 1
      # 多GPU场景下可指定设备,比如 CUDA_VISIBLE_DEVICES: 0
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

  # Transformers向量化器实例2
  t2v-transformers-2:
    image: semitechnologies/transformers-inference:sentence-transformers-multi-qa-MiniLM-L6-cos-v1
    environment:
      ENABLE_CUDA: 1
      # 多GPU场景下可指定设备,比如 CUDA_VISIBLE_DEVICES: 1
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

  # Nginx负载均衡
  t2v-loadbalancer:
    image: nginx:alpine
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - "8000:80"
    depends_on:
      - t2v-transformers-1
      - t2v-transformers-2
    restart: unless-stopped

volumes:
  weaviate-data-node1:
  weaviate-data-node2:

配套Nginx配置文件(nginx.conf)

在docker-compose.yml同级目录创建nginx.conf,实现轮询负载均衡:

events {
    worker_connections 1024;
}

http {
    upstream transformers {
        server t2v-transformers-1:8080;
        server t2v-transformers-2:8080;
        # 可添加更多transformers实例
    }

    server {
        listen 80;

        location / {
            proxy_pass http://transformers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

关键配置说明

  1. Weaviate集群配置

    • 两个节点通过CLUSTER_JOIN参数互相指定对方,自动组建集群
    • 所有Weaviate节点均指向Nginx负载均衡地址,而非单个transformers实例,避免单点依赖
    • 每个节点挂载独立数据卷,确保数据存储隔离
  2. 向量化器高可用

    • 部署至少2个transformers实例,当其中一个故障时,Nginx会自动将请求转发至正常实例
    • 多GPU环境下,可通过CUDA_VISIBLE_DEVICES为每个实例分配独立GPU,提升并行处理能力
  3. 负载均衡策略

    • 默认采用轮询策略,也可根据业务需求调整为加权轮询、IP哈希等策略
    • Nginx与transformers实例处于同一Docker网络,内部通信无需暴露外部端口

启动与验证

  1. 将docker-compose.yml和nginx.conf放在同一目录
  2. 执行启动命令:
    docker-compose up -d
    
  3. 验证Weaviate集群状态:访问任意节点的/v1/cluster/nodes端点(如http://localhost:8080/v1/cluster/nodes),应返回2个节点的详细信息
  4. 验证向量化服务:通过Weaviate导入测试数据,观察两个transformers实例的日志,确认请求被轮询转发

内容的提问来源于stack exchange,提问作者junbetterway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:32:08