DB-GPT高可用集群部署指南:构建稳定可靠的大模型服务

DB-GPT高可用集群部署指南:构建稳定可靠的大模型服务

DB-GPT DB-GPT - 一个开源的数据库领域大模型框架,旨在简化构建数据库大模型应用的过程。 DB-GPT 项目地址: https://gitcode.com/gh_mirrors/db/DB-GPT

高可用架构设计

在构建企业级大模型服务时,高可用性(High Availability)是至关重要的考量因素。DB-GPT采用分布式架构设计,通过组件解耦和冗余部署实现服务的高可用性。

核心架构包含以下组件:

  1. 模型控制器(Model Controller):负责管理模型实例的生命周期和元数据
  2. 模型工作者(Model Worker):实际运行模型推理的进程
  3. API服务器(Web Server):提供统一的API接口
  4. 模型注册中心(Model Registry):存储所有模型服务的元数据

特别值得注意的是,默认情况下模型控制器是单实例的有状态服务,因为它需要维护模型服务的所有元数据。为了实现真正的高可用,我们需要使用基于数据库的StorageModelRegistry替代默认的内存存储方案。

高可用集群部署实战

准备工作:MySQL数据库配置

首先需要准备一个MySQL数据库作为共享存储:

  1. 安装MySQL服务器(建议5.7或以上版本)
  2. 创建专用数据库和用户
  3. 执行以下建表SQL,创建模型实例注册表:
CREATE TABLE IF NOT EXISTS `dbgpt_cluster_registry_instance` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `model_name` varchar(128) NOT NULL COMMENT '模型名称',
  `host` varchar(128) NOT NULL COMMENT '模型实例主机地址',
  `port` int(11) NOT NULL COMMENT '模型实例端口',
  `weight` float DEFAULT 1.0 COMMENT '负载均衡权重',
  `check_healthy` tinyint(1) DEFAULT 1 COMMENT '是否检查健康状态',
  `healthy` tinyint(1) DEFAULT 0 COMMENT '当前是否健康',
  `enabled` tinyint(1) DEFAULT 1 COMMENT '是否启用',
  `prompt_template` varchar(128) DEFAULT NULL COMMENT '提示词模板',
  `last_heartbeat` datetime DEFAULT NULL COMMENT '最后心跳时间',
  `user_name` varchar(128) DEFAULT NULL COMMENT '所属用户',
  `sys_code` varchar(128) DEFAULT NULL COMMENT '系统标识',
  `gmt_created` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_model_instance` (`model_name`, `host`, `port`, `sys_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DB-GPT集群模型实例注册表';

部署模型控制器集群

在server1和server2两台机器上分别启动模型控制器实例:

# server1
dbgpt start controller \
--port 8000 \
--registry_type database \
--registry_db_type mysql \
--registry_db_name dbgpt \
--registry_db_host 127.0.0.1 \
--registry_db_port 3306 \
--registry_db_user root \
--registry_db_password your_password

# server2 (相同配置)
dbgpt start controller \
--port 8000 \
--registry_type database \
--registry_db_type mysql \
--registry_db_name dbgpt \
--registry_db_host 127.0.0.1 \
--registry_db_port 3306 \
--registry_db_user root \
--registry_db_password your_password

关键参数说明:

  • registry_type:指定使用数据库存储
  • registry_db_*:配置MySQL连接信息
  • port:控制器服务端口

部署模型工作者

在server3上启动模型工作者:

# 启动GLM-4-9B-Chat模型工作者
dbgpt start worker --model_name glm-4-9b-chat \
--model_path /app/models/glm-4-9b-chat \
--port 8001 \
--controller_addr "http://server1:8000,http://server2:8000"

# 启动文本向量化模型工作者
dbgpt start worker --model_name text2vec \
--model_path /app/models/text2vec-large-chinese \
--worker_type text2vec \
--port 8003 \
--controller_addr "http://server1:8000,http://server2:8000"

注意点:

  • controller_addr参数包含所有控制器地址,工作者会自动选择可用的控制器注册
  • 不同模型类型需要指定对应的worker_type

部署Web服务

LLM_MODEL=glm-4-9b-chat EMBEDDING_MODEL=text2vec \
dbgpt start webserver \
--light \
--remote_embedding \
--controller_addr "http://server1:8000,http://server2:8000"

验证部署

查看已注册的模型实例:

CONTROLLER_ADDRESS="http://server1:8000,http://server2:8000" dbgpt model list

Docker Compose快速部署方案

对于需要快速验证的场景,可以使用预配置的Docker Compose方案:

  1. 构建包含OpenAI依赖的基础镜像:
bash ./docker/base/build_proxy_image.sh
  1. 启动高可用集群:
OPENAI_API_KEY="your_api_key" OPENAI_API_BASE="https://api.openai.com/v1" \
docker compose -f ha-cluster-docker-compose.yml up -d

常见问题解答

Q:DB-GPT未来会支持哪些注册中心类型?

A:除了当前的MySQL方案,未来版本计划支持etcd、Consul等分布式键值存储作为注册中心,满足不同场景的需求。

Q:如何在Kubernetes环境中部署高可用集群?

A:后续版本将提供Helm Chart支持,简化Kubernetes环境下的部署和管理。

Q:如何监控集群健康状态?

A:可以通过以下方式监控:

  1. 定期查询dbgpt model list获取实例状态
  2. 监控MySQL注册表中的healthylast_heartbeat字段
  3. 为各组件配置Prometheus监控指标

通过本文介绍的高可用部署方案,您可以构建一个稳定可靠的DB-GPT大模型服务集群,确保业务连续性并提升系统容错能力。

DB-GPT DB-GPT - 一个开源的数据库领域大模型框架,旨在简化构建数据库大模型应用的过程。 DB-GPT 项目地址: https://gitcode.com/gh_mirrors/db/DB-GPT

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纪嫣梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值