DB-GPT高可用集群部署指南:构建稳定可靠的大模型服务
DB-GPT DB-GPT - 一个开源的数据库领域大模型框架,旨在简化构建数据库大模型应用的过程。 项目地址: https://gitcode.com/gh_mirrors/db/DB-GPT
高可用架构设计
在构建企业级大模型服务时,高可用性(High Availability)是至关重要的考量因素。DB-GPT采用分布式架构设计,通过组件解耦和冗余部署实现服务的高可用性。
核心架构包含以下组件:
- 模型控制器(Model Controller):负责管理模型实例的生命周期和元数据
- 模型工作者(Model Worker):实际运行模型推理的进程
- API服务器(Web Server):提供统一的API接口
- 模型注册中心(Model Registry):存储所有模型服务的元数据
特别值得注意的是,默认情况下模型控制器是单实例的有状态服务,因为它需要维护模型服务的所有元数据。为了实现真正的高可用,我们需要使用基于数据库的StorageModelRegistry
替代默认的内存存储方案。
高可用集群部署实战
准备工作:MySQL数据库配置
首先需要准备一个MySQL数据库作为共享存储:
- 安装MySQL服务器(建议5.7或以上版本)
- 创建专用数据库和用户
- 执行以下建表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方案:
- 构建包含OpenAI依赖的基础镜像:
bash ./docker/base/build_proxy_image.sh
- 启动高可用集群:
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:可以通过以下方式监控:
- 定期查询
dbgpt model list
获取实例状态 - 监控MySQL注册表中的
healthy
和last_heartbeat
字段 - 为各组件配置Prometheus监控指标
通过本文介绍的高可用部署方案,您可以构建一个稳定可靠的DB-GPT大模型服务集群,确保业务连续性并提升系统容错能力。
DB-GPT DB-GPT - 一个开源的数据库领域大模型框架,旨在简化构建数据库大模型应用的过程。 项目地址: https://gitcode.com/gh_mirrors/db/DB-GPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考