亚马逊AWS官方博客
如何在AWS部署高可用MaxKB知识库应用
概述
MaxKB是一款基于RAG技术的开源知识库问答系统,支持对接多种大语言模型,广泛应用于智能客服、企业知识库等场景。虽然MaxKB社区版提供了便捷的Docker快速部署方式,但企业在生产环境中需要更高的可靠性、安全性和运维便利性。
本文介绍如何基于AWS托管服务构建高可用MaxKB应用架构。方案采用AmazonECS运行容器化应用,配合RDS PostgreSQL(含pgvector扩展)和ElastiCache Valkey提供数据持久化和缓存能力,通过Application Load Balancer实现流量分发和多可用区部署,确保99.9%以上的服务可用性。方案还集成了Secrets Manager进行密钥管理,支持对接Amazon Bedrock模型服务。
本文面向需要在生产环境部署企业级AI知识库的架构师和运维工程师,提供从架构设计、服务配置到部署验证的完整实施指南。
方案价值
MaxKB核心能力¹
MaxKB是基于RAG(检索增强生成)技术的开源知识库问答系统,自2024年4月发布以来,已获得19,000+ GitHub Stars,发展为企业级智能体平台。其核心能力包括:
- 开箱即用的RAG问答引擎:支持多格式文档导入(PDF、Word、Markdown等),自动文档解析、文本分块和向量化处理,答案支持富文本展示(图片、表格、图表等);
- 多模型灵活对接:基于开源架构,支持对接Amazon Bedrock托管模型及国内外主流大语言模型和Embedding模型服务,兼容标准API接口,可根据业务需求灵活选择和切换;
- 工作流编排:内置工作流引擎和函数库,支持MCP工具调用,可编排复杂的AI Agent处理流程,实现多步骤任务自动化;
- 快速集成:提供API接口和零编码嵌入方式,可快速集成到企业现有业务系统或第三方系统,降低企业开发和部署成本。
典型应用场景:智能客服(7×24小时自动问答)、企业知识库(内部知识管理和检索)、智能办公助手等。
AWS托管方案的增强价值
MaxKB社区版提供基于Docker Compose的快速部署方式,适合开发测试和小规模应用。但在企业生产环境中,面临单点故障风险、手动运维负担重、安全管理复杂等挑战。本方案基于AWS托管服务,提供以下企业级增强能力:
1. 企业级高可用性
- 多可用区架构、可用性SLA可达99.9%以上:应用层(ECS)、数据库层(RDS Multi-AZ)、缓存层(ElastiCache)均采用跨多可用区部署,RDS主节点故障时60-120秒内自动切换,ALB自动分发流量并剔除异常容器,保障整体架构可达99.9%以上的服务可用性,满足企业级应用要求;
2. 弹性伸缩能力
- 应用层自动扩缩容:面对业务流量波动的场景需求,ECS可根据资源使用率或请求数量规则自动调整任务数量;
- 向量查询加速:RDS PostgreSQL + pgvector提供高性能向量检索,db.r8g.16xlarge规格下100并发可达毫秒级响应;
- 缓存层在线扩展:ElastiCache支持在线添加节点,无需停机即可提升缓存容量
3. 安全与合规
- 密钥集中管理:Secrets Manager安全存储数据库凭证、API密钥等敏感信息,支持自动轮换,避免硬编码风险
- 网络隔离:VPC私有子网部署数据库和缓存,仅应用层可访问,公网不可达
- 细粒度权限控制:IAM角色和Security Group实现最小权限原则
适用场景:本方案特别适合需要在生产环境部署智能客服、企业知识库等AI应用的中大型企业,以及对可用性、安全性、合规性有较高要求的行业客户(如金融、医疗、政务等)。
解决方案概述
本解决方案将MaxKB Docker托管运行在AWS容器服务ECS上,并配置AWS RDS for PostgresSQL和ElastiCache Valkey(兼容Redis),作为MaxKB的外部数据库,实现MaxKB应用的高可用架构。
架构设计
![]() |
- 用户通过互联网连接到应用程序,所有请求首先通过 Elastic Load Balancing 服务,确保流量均匀分布并提高系统可用性和容错能力。
- 负载均衡器将流量智能分配到 ECS集群 内的多个 Service Frontend 实例,实现请求的高效处理和资源的动态伸缩。ECS集群提供容器化环境,便于部署和管理应用服务。
- 应用程序内可以配置LLM模型和Embedding模型,支持访问Bedrock 的模型服务:
- Bedrock LLM:提供大型语言模型服务
- Bedrock Embedding:提供文本嵌入服务
- 系统与 Secrets Management 模块集成,通过 Secrets Manager 安全存储和管理应用所需的密钥、令牌、凭证等敏感信息,确保信息不被硬编码到应用中。
- 应用程序连接到 RDS PostgreSQL 数据库服务,PostgreSQL提供了强大的关系型数据库功能;同时在数据库安装了pgvector,使您能够直接在PostgreSQL 数据库中高效地存储、操作和分析向量数据。
- 架构引入了Amazon ElastiCache for Valkey 缓存层(兼容Redis 8.0),用于存储频繁访问的数据,减少数据库负载并提高应用响应速度。
AWS托管数据库的产品优势
AWS RDS for PostgresSQL
PostgreSQL 是许多企业开发人员和企业的首选开源关系数据库,为领先的商用和移动应用程序提供助力。Amazon RDS 让用户能够更轻松地在云中设置、操作和扩展 PostgreSQL 部署。借助 Amazon RDS,您可以在几分钟内完成可扩展的 PostgreSQL 部署,不仅经济实惠,而且可以调整硬件容量。Amazon RDS 除了具备托管的优势外,针对知识库应用场景也有明显的优势:
1.跨AZ强一致,保证主备数据一致性
Amazon RDS Multi-AZ 部署架构在存储层EBS采用物理同步复制机制,主节点写入操作同步到备节点后才返回确认,确保数据零丢失,满足知识库数据完整性要求。
2.自动failover,保证系统可用性
当Amazon RDS 主节点故障时,Multi-AZ支持自动failover到备节点,故障转移时间通常在 60-120 秒内完成,应用程序自动重连,无需人工干预,提供 99.95% 的可用性 SLA。
3.vector向量查询性能高,读性能横向扩展
PostgreSQL 支持 pgvector 扩展,在满足OLTP数据库正常的业务需求之外还可以提供向量存储和高并发检索的能力,满足多模态业务需求,另外RDS只读副本可以进行在线扩展,支持最多 15 个只读副本。在10TB以内,并且有高QPS需求的场景下,性价比优于Elasticsearch和Milvus。
如下是在Amazon RDS for PostgreSQL db.r8g.16xlarge规格下使用VectorDBBench进行100并发线程进行压测,每次压测时长300s,分别在Performance768D1M和Performance768D10M两种数据集下,不同ef_search下的性能表现:
![]() |
ElastiCache for Valkey
Valkey 是由 Linux 基金会支持的开源缓存数据库,保证了vendor的中立性,过去6个月,有50多万次container pull代码,几千个贡献,以及40多家公司的支持。AWS作为Valkey的主要贡献之一,ElastiCache for Valkey不仅给客户带来稳定的方案,也能保证Valkey持续的创新。ElastiCache for Valkey的主要优势如下:
性价比提升
- 单点处理能力增强,采用IO线程多路复用技术,吞吐量增加72%和P99 耗时降低71%,可以达到1.2M QPS读取性能,用户可以用更少节点数量或者更小机型来支撑同样规模应用。
- 托管的ElastiCache for Valkey 8.0优化了内存结构,单节点上可以存储更多的数据(相同数据存储空间占用减少20%)。
客户端兼容性高
- 已有客户端访问Valkey,接口和redis 7.2 兼容,jedis、redis-benchmark、rediscluster、K6等。
- Valkey-glide作为AWS贡献的开源客户端,与python/Java/node.js/golang 多种客户端提供一致能力,支持更好failover以及连接池管理等。
其他增强
- Valkey8.0 主从复制效率大幅提升,RDB和复制backlog的双通路实现,可以加快sync速度,单独进程处理RDB复制可以减少对主节点影响。
- resharding 重分片期间抗主节点故障能力增强。
- 提供slot级别指标,提供更好可观测性。
MaxKB on AWS解决方案部署指南
部署要求
MaxKB应用部署要求包括:
- 操作系统:Ubuntu 22.04 / CentOS 7(内核版本要求 ≥ 3.10)
- CPU/内存:4C/8GB 以上
- 磁盘空间:100GB
- PostgrsSQL:17.6版本
- Redis:8.0版本
在AWS部署之前,您需要有一个可访问的AWS账户,部署的主要资源包括:
- AWS VPC
- Amazon RDS for postgreSQL
- Amazon ElastiCache for Valkey
- Amazon ECS
- Amazon ALB
CDK部署方式
为了简化高可用架构的部署流程,我们提供了基于AWS CDK(Cloud Development Kit)的一键部署代码和脚本:通过基础设施即代码(IaC)的方式,能够自动处理资源间的依赖关系,一条命令即可完成VPC、RDS、ElastiCache、ECS、ALB等所有组件的创建和配置,无需手动在控制台操作多个服务,大幅降低部署复杂度和人为错误,显著提高部署成功率和运维效率。
以下部署命令请在Linux环境运行。
1、从github下载MaxKB-on-AWS部署代码
运行以下命令下载部署代码包:
git clone https://github.com/supinyu/sample-maxkb-on-aws.git
2、安装Docker
4、安装相关的npm包
5、账号信息及部署Region ID导入到环境变量中
6、进行CDK部署
以上部署过程通常需要15-20分钟,CDK会自动完成以下操作:
- 创建VPC和子网
- 配置安全组规则
- 部署RDS PostgreSQL数据库(含pgvector扩展)
- 部署ElastiCache Valkey集群
- 创建ECS集群和任务定义
- 配置ALB负载均衡器
- 设置Secrets Manager密钥管理
- 配置自动扩展策略
7、验证部署
部署完成后,CDK会输出ALB的DNS地址,通过该地址即可访问MaxKB应用:
8、版本更新
如需更新MaxKB版本(比如从maxkb-v2.1.1升级到maxkb-v2.x.x),只需修改Dockerfile中对应的MaxKB镜像版本号,然后重新执行部署命令:
CDK会自动检测变更并仅更新受影响的资源,实现零停机滚动更新。
MaxKB应用效果
这里我们以一个对话问答助手为例,演示MaxKB的使用效果。
支持Bedrock模型
首先需要添加LLM模型和Embedding模型,MaxKB 支持Bedrock模型,可以在模型配置页面进行添加,具体的操作如下:
1、添加LLM模型
![]() |
2、添加Embedding模型
![]() |
3、知识库创建
接下来,我们创建知识库
![]() |
4、上传需要问答的pdf文档
![]() |
5、创建知识库问答助手
![]() |
在创建对话助手页面,可以配置对话流程,MaxKB具有灵活的流程配置功能。配置完成,用户可以针对对话流程进行调试和发布。
![]() |
对话助手发布之后,我们可以进行相关的问答。
![]() |
在管理界面,我们也可以对相关的数据进行统计监控。
![]() |
总结
本方案通过将MaxKB社区版迁移部署在AWS托管服务上,构建了高可用、可扩展的RAG知识库应用,实现了从单机Docker部署向企业级云原生架构的转型,为企业知识管理和智能问答场景提供了完整的技术解决方案。
参考资料
[1] MaxKB on Github:https://github.com/1Panel-dev/MaxKB
[2] MaxKB社区版下载:https://community.fit2cloud.com/#/products/maxkb/downloads
[3] MaxKB离线安装文档:https://maxkb.cn/docs/v2/installation/offline_installtion/
*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。









