目录
前言
1 CCE 容器高可用版 Dify 架构
1.1 网络资源配置
1.2 核心资源部署
1.3 数据存储与中间件
1.4 安全防护
2 总体部署流程介绍
2.1 选择模板
2.2 参数设置
2.3 资源栈配置
2.4 部署执行
3 参数设置详细说明
3.1 密码设定规范
3.2 OBS 桶配置说明
3.3 AK/SK 获取方式
4 部署过程的信息展示
4.1 基本信息展示
4.2 资源明细查看
4.3 输出结果区域
4.4 部署事件记录
4.5 模板结构展示
4.6 执行计划视图
5 报错处理与常见问题
5.1 CCE 集群创建失败
5.2 RDS 数据库实例创建失败
6 部署后的访问与使用
7 高可用部署体验与总结
7.1 操作需严格遵循指引
7.2 自动化部署工具大幅降低运维难度
7.3 技术支持非常关键
8 部署优化建议
结语
前言
随着大语言模型(LLM)在各行业中的广泛应用,构建稳定、可扩展的 LLM 应用平台逐渐成为企业的核心需求。Dify 作为一款开源的 LLM 应用开发平台,凭借其可视化操作、强大的插件系统以及对多模型后端的支持,越来越受到开发者的青睐。而在企业级生产环境中,仅依赖单机部署难以满足高可用、可扩展和安全性的要求,因此,结合华为云的 CCE Turbo 容器服务、Flexus 云主机、OBS 对象存储和一系列云原生组件,完成 Dify 的高可用部署显得尤为重要。
本文将全面记录在华为云上完成高可用版 Dify LLM 平台部署的全过程,从架构设计、部署流程、参数配置、报错处理,到部署体验与改进建议,帮助开发者顺利完成生产级部署,并实现高可靠性的 AI 应用开发能力。
1 CCE 容器高可用版 Dify 架构
Dify 平台的高可用部署结合了多种华为云服务组件,整体架构强调服务的容错性、扩展性和安全性。
1.1 网络资源配置
- 创建三个弹性公网IP(EIP),用于支持对外网络通信及公网访问能力。
- 创建弹性负载均衡(ELB),绑定EIP,实现服务入口的流量分发和故障转移能力。
- 配置 NAT 网关,绑定一个EIP,通过 SNAT 提供私网安全访问公网的能力,有效防止内网信息泄露。
1.2 核心资源部署
- 启动三台 FlexusX 实例,作为 CCE Turbo 节点资源池,部署 Dify 的主要服务组件。
- 单独部署一台 FlexusX 实例,用于承载 Embedding 模型(bge-m3)与 Reranker 模型(bge-reranker-v2-m3)。
- 使用云容器引擎(CCE Turbo)创建集群,并将上述实例纳管为集群节点,支持容器化服务的编排与自动扩缩容。
1.3 数据存储与中间件
- 使用对象存储服务(OBS)作为 Dify 知识库的底层存储系统,提升可扩展性和持久性。
- 部署分布式缓存服务(Redis® 兼容版),用于加速数据访问,提高服务性能。
- 启用 RDS for PostgreSQL 数据库,采用主备架构实现数据库高可用。
- 创建云搜索服务(CSS OpenSearch)集群,支持语义检索能力。
1.4 安全防护
- 创建四个安全组,根据服务类型灵活配置出入规则,为关键资源提供安全隔离和流量控制。
2 总体部署流程介绍
一键部署流程分为四大步骤,用户通过华为云控制台或 IaC 模板即可实现一键式部署。
2.1 选择模板
部署过程支持多种模板来源,如私有模板、上传模板、本地可视化编辑器或填写 URL 方式导入模板。官方推荐的模板为 Terraform(tf)格式模板,通过 URL 方式部署更加快捷稳定。
2.2 参数设置
这是部署过程中最关键的一步,涉及服务器密码、数据库账号、访问密钥、OBS 桶名等关键参数。必须严格按照字段要求进行填写,错误配置将导致部署失败或系统异常。
2.3 资源栈配置
包括设置 IAM 权限委托、部署失败是否回滚、资源栈是否启用删除保护等内容。其中 IAM 权限委托用于明确部署过程中的资源访问权限,若权限不足将无法继续。
2.4 部署执行
确认所有参数后,可选择“创建执行计划”或“直接部署应用”。推荐初学者选择“直接部署”,系统将自动拉起所有资源与服务,并最终输出可访问的 Dify 应用地址。
3 参数设置详细说明
在执行高可用部署前,参数设置是整个流程中最关键的步骤之一。正确的配置不仅关系到部署的成败,更直接影响后续平台的稳定性与安全性。以下将对三个核心参数字段进行详细说明和使用建议。
3.1 密码设定规范
在部署过程中,涉及到云主机登录密码、数据库访问密码、Redis 密码等多个敏感字段。所有这些密码均需遵循统一的复杂度要求。具体而言,密码长度应控制在 8 至 24 个字符之间,并且必须包含至少一个大写字母、一个小写字母,同时还需包含数字或常见特殊字符,例如 ~!@#$^*-=_+,? 中的任意一类字符。值得注意的是,系统在参数填写阶段并不会立即提示密码不合规,只有在实际资源创建过程中才可能因为密码校验失败导致整个部署中断。因此,建议用户提前按照规范设置密码,避免后续调试成本上升。
3.2 OBS 桶配置说明
Dify 平台依赖对象存储服务(OBS)作为底层知识库文件的存储后端,因此在部署前必须预先创建好对应的 OBS 桶。首先,确保对象存储服务已经在当前区域(例如“华北-北京四”)成功开通,并在该区域下新建一个存储桶。
为确保系统具备足够的存储容量,建议新用户在开通 OBS 后,顺带购买一个基础版 40GB 的存储资源包,每月仅需 1 元,性价比非常高,且能避免频繁触发容量限制。
在填写部署参数时,需将桶名称准确填写,确保大小写完全一致。同时,还需确保所选桶具有完整的读写权限,否则部署完成后知识库功能将无法正常工作。
3.3 AK/SK 获取方式
在部署过程中,平台需要使用访问密钥对用户账户下的各项资源进行授权访问。Access Key 包括两个部分:Access Key ID 与 Secret Access Key,简称 AK/SK。
获取方式如下:首先登录华为云控制台,在页面右上角点击用户头像,并进入“我的凭证”页面。在该页面中选择“访问密钥”栏目,点击“新增访问密钥”按钮后,系统将自动生成一对密钥,并提供下载链接。
下载文件为 CSV 格式,需妥善保存并及时备份。
随后,从该文件中提取 AK 和 SK 字段,准确填写至部署参数表中。
由于 AK/SK 是高权限凭证,建议仅用于部署用途,不应泄露或重复使用于非信任系统中。
4 部署过程的信息展示
在完成参数配置并启动资源栈部署后,系统将自动生成一组详细的部署信息用于跟踪和确认部署进度。这些信息主要包括:基本信息、资源、输出、事件、模板和执行计划等模块。每一部分都承担着不同的监控、审查和运维作用,用户可以在资源栈详情页实时查看,确保部署按预期进行。
4.1 基本信息展示
“基本信息”是资源栈创建初期最先生成的模块之一,它集中展示了整个资源栈的元数据信息。具体包括资源栈名称、资源栈 ID、当前状态(创建中、创建失败、创建完成等)、资源栈描述、IAM 权限委托配置、是否启用回滚与删除保护、创建时间与更新时间等。这些信息是后续运维操作和问题排查的基础依据。例如,通过状态信息可以第一时间判断部署是否成功,通过 IAM 权限委托确认是否赋予了足够权限供资源创建使用。
4.2 资源明细查看
“资源”模块是整个高可用部署架构的核心视图,它按照云产品名称、物理资源名称、逻辑名称、资源类型与资源状态等维度,展示了所有通过模板创建出来的具体资源。例如,CCE 集群节点、RDS 实例、Redis 缓存、OBS 桶、CSS 集群等都将被逐一列出,并可点击进入对应资源的控制台页面进行二次确认。通过这一模块,用户不仅可以审查资源创建是否成功,还可以发现资源命名、绑定 EIP、节点分布等配置是否符合预期。
4.3 输出结果区域
“输出”模块在部署过程中默认是空的,因为输出值一般依赖于资源创建成功后由模板内部逻辑生成。当所有核心资源部署完成,Dify LLM 应用平台正式上线后,该区域将自动填充相关输出信息,其中最重要的是平台访问地址(URL)。用户可直接点击该链接,进入 Dify 的管理后台进行初始化设置。这个 URL 的输出,也标志着部署的最后一步已经顺利完成。
4.4 部署事件记录
“事件”模块在部署过程中将持续动态生成日志记录。每一条记录都包含事件时间、事件类型(如资源创建、修改、失败等)、事件描述、相关资源名称与资源类型、资源 ID 等关键字段。这一部分对于问题排查极其重要。若某个资源部署失败,可以通过查看该事件的详细描述,快速定位失败原因,进而调整参数或权限重新部署,提升故障恢复效率。
4.5 模板结构展示
“模板”模块展示了用户用于创建资源栈的基础模板文件内容。如果部署采用的是 Terraform 模板(tf 文件),此处将完整呈现该模板结构。通过查看该模板,用户可以进一步理解资源之间的依赖关系、变量定义与输出结构,也方便后续基于此模板进行二次开发或优化。如果是使用自定义模板部署,该模块同样支持展示完整内容,供用户回顾与比对。
4.6 执行计划视图
“执行计划”模块用于记录用户在部署前是否执行过计划预览流程。如果用户选择的是“创建执行计划再部署”,此模块会显示具体的执行动作,例如哪些资源将被创建、更新或删除等内容。这一机制可提前预览资源变更对系统的影响,有效避免误操作带来的不可逆后果。
如果用户选择的是“直接部署应用”,则此区域不会显示任何内容,默认状态为“暂无表格数据”。
5 报错处理与常见问题
部署过程中如遇错误,系统会展示详细错误信息。以下为两个典型错误示例:
5.1 CCE 集群创建失败
部署初期较常见的问题之一,是容器引擎 CCE 集群创建失败。此时系统通常会提示“创建集群权限不足”,并终止后续资源的创建流程。
具体报错信息为:
huaweicloud_cce_cluster.cluster: Creation errored after 0s, Diagnostic details : [Error: error creating CCE cluster: Bad request with: [POST https://cce.cn-north-4.myhuaweicloud.com/api/v3/projects/8b22b15d28834930a1fecea23bced86f/clusters], request_id: ed4e0bbf9d15a575b914de318ec9af43, error message: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","code":400,"errorCode":"CCE.01400001","errorMessage":"Invalid request.","error_code":"CCE_CM.0004","error_msg":"Request is invalid","message":"Need authorize CCE to operate user resources","reason":"BadRequest"}
Diagnostic range : {"filename":"main.tf","start":{"line":443,"column":46,"byte":16455},"end":{"line":443,"column":47,"byte":16456}}
Diagnostic snippet : resource "huaweicloud_cce_cluster" "cluster"]
这类问题的根源在于,默认使用的华为云账号可能未被授予足够权限,或者未激活相应的资源栈委托。
正确的处理方式是进入华为云控制台,在资源管理页面中搜索“CCE”关键词,系统会自动检测并提示用户进行授权。点击确认后,即可为当前账号分配“CCE FullAccess”权限,并启用资源栈级别的权限委托。完成此操作后,重新执行部署流程,CCE 集群资源即可顺利创建。
5.2 RDS 数据库实例创建失败
另一个常见问题出现在 RDS 数据库的创建环节。系统在执行数据库资源编排时,如检测到所设密码不符合平台要求,会返回诸如“数据库密码复杂度不符合规范”的报错信息。
具体报错信息为:
huaweicloud_rds_instance.rds: Creation errored after 0s, Diagnostic details : [Error: error creating RDS instance: Bad request with: [POST https://rds.cn-north-4.myhuaweicloud.com/v3/8b22b15d28834930a1fecea23bced86f/instances], request_id: 7706d8bb2d56c136ecf8491061c58b33, error message: {"error_msg":"Weak password.","error_code":"DBS.280203"}
Diagnostic range : {"filename":"main.tf","start":{"line":368,"column":43,"byte":13964},"end":{"line":368,"column":44,"byte":13965}}
Diagnostic snippet : resource "huaweicloud_rds_instance" "rds"]
这类问题的本质在于,用户输入的密码过于简单,通常缺少特殊字符,或未包含大写与小写字母的组合。华为云对密码字段有较为严格的复杂度要求,建议在设置密码时,生成复杂度较高的随机密码。一旦密码符合要求,重新执行部署后,RDS 资源一般都能成功创建。
通过以上问题的应对实践可以看出,报错信息虽然详细,但关键在于用户是否能够迅速定位问题根源并采取正确的修复策略。每一次失败部署,都是一次对系统理解程度的提升,也是对部署流程稳定性的进一步优化。
6 部署后的访问与使用
当所有资源成功部署并初始化完成后,系统会在资源栈的“输出”模块中自动生成 Dify 平台的公网访问地址。用户可以复制该地址,在浏览器中打开,即可进入 Dify 应用平台的初始化界面。
进入平台后,首先呈现的是管理员账号创建页面。用户需要设置一个平台超级管理员账户,并填写初始密码。该账户将作为后续工作流配置、模型接入、权限管理等操作的入口。
设置完成后,便可通过填写的账号密码登录到 Dify 的后台控制台。
登录成功后,用户将进入 Dify 的主工作界面。
在这里,可以创建和编辑工作流,导入模型服务,配置知识库,以及接入向量搜索引擎等多种模块,全面开启 LLM 应用的开发之旅。至此,Dify 的高可用平台部署流程圆满完成。
7 高可用部署体验与总结
相比单机部署,高可用部署对用户的基础设施理解和操作准确性提出了更高要求。以下是我在部署过程中的一些实际体验:
7.1 操作需严格遵循指引
实际操作过程中,最深的体会是必须严格遵循部署模板和参数说明。每一项配置,包括密码复杂度、AK/SK 权限、桶的区域一致性等,背后都与底层资源能否成功创建息息相关。任何一步的小小疏忽,都可能导致整个资源栈回滚,甚至需要全部重建。因此,部署者必须具备细致入微的执行力,逐条比对说明文档,确认无误后再进入下一步。
7.2 自动化部署工具大幅降低运维难度
尽管部署涉及多个服务在之间的协作与资源依赖,但得益于华为云资源编排(ResourceFormation)和 CCE Turbo 集群的高度集成,整个部署流程实际上被有效简化。从一键启动到最终平台上线,全流程可控、信息清晰,极大降低了新手上手的门槛。尤其是模板驱动式部署方式,在默认参数合理的前提下,几乎可以做到“即填即用”,这一点对于初次接触云原生 LLM 应用部署的开发者来说非常友好。
7.3 技术支持非常关键
在部署过程中,如果遇到无法自行解决的问题,华为云的技术支持团队提供了及时高效的协助。通过提交工单的方式,我多次就权限配置、资源依赖等问题向官方寻求帮助。每一次沟通都非常专业,问题反馈与响应迅速,真正体现了企业级服务的稳定性与可靠性。可以说,正是在官方支持与自身学习的共同作用下,整个高可用部署流程最终得以顺利完成。
这次实践不仅让我成功搭建起了一个具备横向扩展能力的 Dify 平台,也深入理解了华为云在弹性计算、存储管理、容器编排等多个方面的技术优势,更为后续部署多租户服务、上线实际应用场景奠定了坚实的基础。
8 部署优化建议
通过本次完整的高可用部署实践,也发现了部分可以进一步优化的环节,尤其在密码复杂度校验层面,在参数配置阶段,系统并不会对用户输入的密码进行强校验,仅在资源实际创建阶段才会抛出错误提示。这种方式虽然不影响模板逻辑,但会大大降低部署效率,用户需要在等待数十个资源编排执行后,才因一个简单的密码问题导致整体失败。建议将密码复杂度的前置校验逻辑集成到参数校验步骤中,在用户点击“下一步”前就能立即反馈错误格式,避免后期返工。华为云已为高可用 Dify 平台部署提供了极为完善的资源模板与一键化支持。如果在细节层面持续优化,将更进一步提升部署成功率与用户整体体验。
结语
通过本文的实践记录,我们可以清晰地看到,在华为云上部署高可用 Dify 平台是可行且高效的。得益于 CCE、Flexus、OBS、RDS 等一系列云产品的支持,开发者可以构建一个稳定、安全、可扩展的 LLM 应用开发平台。尽管部署过程较为复杂,但只要严格按照步骤进行,就能顺利完成搭建工作。