Weaviate部署完全指南:从单机到K8s集群

Weaviate部署完全指南:从单机到K8s集群

【免费下载链接】weaviate Weaviate is an open source vector database that stores both objects and vectors, allowing for combining vector search with structured filtering with the fault-tolerance and scalability of a cloud-native database, all accessible through GraphQL, REST, and various language clients. 【免费下载链接】weaviate 项目地址: https://gitcode.com/GitHub_Trending/we/weaviate

概述

Weaviate是一个开源的向量数据库(Vector Database),它能够同时存储对象和向量,支持向量搜索与结构化过滤的结合。本文将为您提供从单机部署到Kubernetes集群部署的完整指南,涵盖各种部署场景和最佳实践。

部署方式对比

部署方式适用场景优点缺点
Docker单机开发测试、小型项目简单快速、资源占用少不适合生产环境
Docker Compose本地开发、演示环境多服务编排、配置灵活单点故障风险
Kubernetes生产环境、高可用高可用性、自动扩缩容配置复杂、资源需求高
Helm ChartKubernetes生产部署标准化部署、版本管理需要K8s知识

单机部署

Docker快速启动

# 拉取最新镜像
docker pull semitechnologies/weaviate:latest

# 启动Weaviate容器
docker run -d \
  -p 8080:8080 \
  -p 50051:50051 \
  --name weaviate \
  -e PERSISTENCE_DATA_PATH="/var/lib/weaviate" \
  -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED="true" \
  -e QUERY_DEFAULTS_LIMIT="25" \
  -e DEFAULT_VECTORIZER_MODULE="none" \
  semitechnologies/weaviate:latest

Docker Compose部署

创建docker-compose.yml文件:

version: '3.4'
services:
  weaviate:
    image: semitechnologies/weaviate:latest
    ports:
      - "8080:8080"
      - "50051:50051"
    environment:
      - PERSISTENCE_DATA_PATH="/var/lib/weaviate"
      - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED="true"
      - QUERY_DEFAULTS_LIMIT="25"
      - DEFAULT_VECTORIZER_MODULE="none"
      - CLUSTER_HOSTNAME="node1"
    volumes:
      - weaviate_data:/var/lib/weaviate
    restart: unless-stopped

volumes:
  weaviate_data:

启动服务:

docker-compose up -d

生产环境部署

Kubernetes集群部署

创建命名空间
apiVersion: v1
kind: Namespace
metadata:
  name: weaviate
部署配置
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: weaviate
  namespace: weaviate
spec:
  serviceName: weaviate
  replicas: 3
  selector:
    matchLabels:
      app: weaviate
  template:
    metadata:
      labels:
        app: weaviate
    spec:
      containers:
      - name: weaviate
        image: semitechnologies/weaviate:latest
        ports:
        - containerPort: 8080
        - containerPort: 50051
        env:
        - name: PERSISTENCE_DATA_PATH
          value: "/var/lib/weaviate"
        - name: AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED
          value: "true"
        - name: CLUSTER_HOSTNAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        volumeMounts:
        - name: data
          mountPath: /var/lib/weaviate
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "standard"
      resources:
        requests:
          storage: 10Gi
创建服务
apiVersion: v1
kind: Service
metadata:
  name: weaviate
  namespace: weaviate
spec:
  selector:
    app: weaviate
  ports:
  - name: http
    port: 8080
    targetPort: 8080
  - name: grpc
    port: 50051
    targetPort: 50051
  type: ClusterIP

高可用配置

集群配置示例

apiVersion: v1
kind: ConfigMap
metadata:
  name: weaviate-config
  namespace: weaviate
data:
  config.yaml: |
    persistence:
      data_path: /var/lib/weaviate
    cluster:
      enabled: true
      hostname: $(HOSTNAME)
      join: weaviate-0.weaviate.weaviate.svc.cluster.local
    authentication:
      anonymous_access:
        enabled: true

监控与运维

健康检查配置

livenessProbe:
  httpGet:
    path: /v1/.well-known/ready
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10

readinessProbe:
  httpGet:
    path: /v1/.well-known/ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

资源限制

resources:
  requests:
    memory: "2Gi"
    cpu: "1"
  limits:
    memory: "4Gi"
    cpu: "2"

数据持久化策略

mermaid

安全配置

TLS证书配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: weaviate-ingress
  namespace: weaviate
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  tls:
  - hosts:
    - weaviate.example.com
    secretName: weaviate-tls
  rules:
  - host: weaviate.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: weaviate
            port:
              number: 8080

认证配置

env:
- name: AUTHENTICATION_APIKEY_ENABLED
  value: "true"
- name: AUTHENTICATION_APIKEY_ALLOWED_KEYS
  value: "your-secret-api-key"
- name: AUTHENTICATION_APIKEY_USERS
  value: "user1,user2"

备份与恢复

数据备份策略

# 创建备份
kubectl exec -n weaviate weaviate-0 -- \
  curl -X POST http://localhost:8080/v1/backups/filesystem \
  -H "Content-Type: application/json" \
  -d '{"id":"backup-001","include":{"classes":["Article","Image"]}}'

# 恢复备份
kubectl exec -n weaviate weaviate-0 -- \
  curl -X POST http://localhost:8080/v1/backups/filesystem/backup-001/restore \
  -H "Content-Type: application/json"

性能优化

内存配置优化

env:
- name: MEMORY_LIMIT
  value: "4G"
- name: DISK_CACHE_SIZE
  value: "2G"
- name: VECTOR_CACHE_MAX_OBJECTS
  value: "1000000"

查询优化配置

env:
- name: QUERY_MAXIMUM_RESULTS
  value: "10000"
- name: QUERY_DEFAULTS_LIMIT
  value: "100"
- name: QUERY_NESTED_CROSS_REFERENCE_LIMIT
  value: "100"

故障排除

常见问题解决

问题现象可能原因解决方案
启动失败端口冲突检查端口8080和50051是否被占用
内存不足资源限制增加内存限制或调整配置
节点无法加入集群网络配置检查网络策略和DNS解析
数据丢失存储问题检查持久化卷配置

日志查看

# 查看Pod日志
kubectl logs -n weaviate weaviate-0 -f

# 查看集群状态
kubectl exec -n weaviate weaviate-0 -- \
  curl http://localhost:8080/v1/nodes

总结

Weaviate提供了灵活的部署选项,从简单的单机部署到复杂的Kubernetes集群部署。选择适合您业务需求的部署方式,并遵循本文中的最佳实践,可以确保系统的稳定性、性能和可维护性。

记住定期备份数据、监控系统性能,并根据业务增长及时调整资源配置。通过合理的部署架构和运维策略,Weaviate能够为您的AI应用提供可靠的向量数据库服务。

【免费下载链接】weaviate Weaviate is an open source vector database that stores both objects and vectors, allowing for combining vector search with structured filtering with the fault-tolerance and scalability of a cloud-native database, all accessible through GraphQL, REST, and various language clients. 【免费下载链接】weaviate 项目地址: https://gitcode.com/GitHub_Trending/we/weaviate

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值