在Azure进行部署
部署前的准备
需要提供的资源
- 一个新的专门用于部署产品的订阅,并且确保这个订阅能够创建OpenAI相关的资源。
- 一个Azure AD账号,这个账号拥有该订阅的Contributor或以上权限。
- 可以 将已有AAD账号以Guest身份加入租户并授权,也可以是专门创建的用于部署的AAD账号。
- 该账号能够创建和配置AAD应用注册(例如授予:Application Developer角色)。
需要安装的工具
- 能够连接Azure SQL以及PGSQL的数据库客户端(例如:DBeaver)
- Azure Storage Explorer
- Az CLI 命令行
- 安装Terraform命令行
需要掌握的知识(建议)
- 对Azure资源有一定的了解(如:App Service、Azure SQL、Storage、Key Vault等),并且能够通过Azure Portal进行资源管理
- 对SERVICEME产品的功能和基础操作有一定了解
- 了解产品的基础功能(如Copilot问答、文档上传、预处理、文档翻译等)
- 了解用户、组织、角色的创建、配置,用户密码重置
- 了解Copilot的创建、授权、配置
- 了解空间的创建、授权、配置
- https://docs.serviceme.com/
- 对Terraform有一定了解,完成官方的azure-get-started教程
产品部署架构及资源清单
产品部署架构
资源清单 & 推荐配置
提示
不同场景和使用频率下,服务器的负载情况不同,需要根据实际的负载情况进行调整
- 500 用户推荐配置(Trial环境默认配置)
- 3000 用户推荐配置
- 3000 以上用户推荐配置
用途说明
服务类型 | 自定义名称 | 用途说明 |
---|---|---|
Azure Front Door | CDN | 内容分发网络,用于加速静态资源的访问 |
Azure Front Door | API Acceleration | API 加速,用于加速API的访问 |
API Management | API Endpoint | API 管理终端,用于管理API |
App Service | API Service | API 服务,用于处理API请求 |
App Service | Job Service | 作业服务,用于处理高负载的任务,定时任务的执行 |
Azure OpenAI Service | LLM-Primary | 主要大语言模型,用于Copilot问答的主模型(例如gpt-4o) |
Azure OpenAI Service | LLM-Secondary | 备用大语言模型,用于文档处理的辅助模型(例如gpt-4o-mini) |
Azure OpenAI Service | Embedding | 向量嵌入,用于处理向量数据 |
Azure OpenAI Service | Text to Image | 文本生成图像,用于处理文本生成图像的任务 |
Azure OpenAI Service | Whisper | 语音识别,用于处理语音识别的任务 |
Azure AI Document Intelligence | Document OCR | 文档OCR识别,用于处理文档OCR识别的任务 |
Azure AI services | Document Translate | 文档翻译,用于处理文档翻译的任务 |
Azure SQL Database | Data | 数据存储,主数据库,系统大部分的数据存储于此 |
Azure Database for PostgreSQL | Index | 索引数据库,主要存储文档相关的索引数据 |
Azure Cache for Redis | Cache | 缓存服务,用于缓存数据 |
Storage Accounts | Files | 文件存储,用于存储用户上传的文件 |
Key Vault | - | 密钥管理,用于存储密钥 |
进行产品部署
部署流程
- 执行部署
- 创建AAD应用注册
- Terraform部署参数设置
- Azure账号登录,订阅切换
- 执行部署
- 更新AAD应用注册
- 资源包上传,系统启动
- 安装前端部署包、字体包、图标资源
- 安装License
- 启动系统,检查是否启动成功
- 系统检查
- 管理员登录系统
- 测试系统功能是否正常
- 完善配置
- 系统设置修改
- Copilot设置
- 空间设置
- 测试文档上传
Terraform部署
创建AAD应用注册
在Azure Entra ID中创建AAD应用注册,获取client_id
命名规则:appreg-[app-name]-[environment]
eg. appreg-serviceme-trial
Terraform部署参数设置
提示
请联系产品团队获取最新的部署包(包含Terraform部署包、前端部署包、字体包、图标资源)
根据Terraform部署包中的README.md文件,设置variables.tf中的参数
Azure账号登录,订阅切换
在部署包的工作目录中 打开powershell,执行以下命令登录Azure,TENANT_ID
是客户提供的租户ID
Global Cloud 登录命令
az login --tenant TENANT_ID
如果是非Global cloud,请指定--cloud参数,例如:
China Cloud 登录命令
az login --tenant TENANT_ID --cloud AzureChinaCloud
设置订阅ID,[subscriptionId]
是客户提供的订阅ID
az account set --subscription "[subscriptionId]"
查看当前订阅,确保已经登录到正确的订阅
az account show
执行部署
首先检查即将执行的变更是否符合预期
terraform plan
+ 代表新增资源
- 代表删除资源
~ 代表更新资源
如无问题,正式应用这些变更,注意Terraform会再次检查和输出变更内容,查看后需要输入yes
进行确认
terraform apply
等待部署完成(大约需要20~60分钟,其中APIM的部署时间较长)
如果没有发生报错,Terraform将会提示创建了多少资源,部署成功。
如果出现错误,需要根据错误提示进行排查,常见问题如下:
- 执行过程中发生network error、request timeout之类的错误
- 重新执行Terraform apply一般就可以解决
- 执行过程中发生Resource already exists之类的错误
- 通过Azure Portal检查相应的资源是否已经存在,如果已经存在通过Azure Portal进行删除。(部分资源有Purge Protection,可能需要通过专门的az cli命令进行删除)
- OpenAI资源创建失败,提示quota不足
- 请检查OpenAI资源在该Region的限额是否足够,如果不足,请改换其他区域
更新AAD应用注册
将APIM的URL更新至AAD应用注册中(规则:$APIM_GATEWAY_URL + "/",eg. https://xxx-apim.azure-api.net/ ),注意勾选access token,ID token