ELB+ECS低成本高可靠部署LiteLLM代理,实现messages和responses接口
LiteLLM介绍
LiteLLM 是一个开源的大模型统一接口与网关,它的核心价值在于,让你能用一套标准化的 OpenAI API 格式,去调用全球超过 100 种不同的大语言模型:
- 作为统一的 API 接口 (Python SDK & 代理)
- 作为企业级的 AI 网关 (治理与可观测性)
详细介绍可以参考官方文档:https://docs.litellm.ai/docs?trk=public_post_comment-text
方案架构
在多台(成本考虑推荐2台)ECS内以docker容器部署LiteLLM软件,为仅支持/chat/completions接口的模型代理支持/v1/messages和/v1/responses接口。再由ELB为多台ECS提供负载均衡能力,提升可靠性。
总配置规格:
|
云服务 |
规格推荐 |
数量 |
实例推荐 |
|
ECS |
不低于4U8G,系统盘不低于40GB |
2 |
c7.xlarge.2 + 通用SSD 80GB |
|
ELB |
共享,EIP带宽不低于10Mbps |
1 |
共享ELB |
|
VPC |
提前创建好,或复用已有VPC |
1 |
NA |
注意:
1)该方案是成本最低的高可靠部署方案,未提供数据库、redis缓存、k8s集群管理等能力对接,如果需要这类部署,请参考官方指导:https://docs.litellm.ai/docs/proxy/deploy
2)上面的配置规格,请以实际业务需要配置,例如ECS规格、ELB的EIP带宽等。
3)后续命令全部采用root权限执行,未考虑普通用户账号。
部署教程
创建配置ECS
1、购买2台XXX规格的ECS,镜像推荐使用ubuntu 24.04。配套EIP用于从LiteLLM官方下载docker镜像和更新安装配套的依赖软件。
注意:
① 保证2台ECS在同一个VPC内
② 为可靠性考虑,2台ECS部署在不同的AZ内
③ 安全组添加策略,将100.125.0.0/16网段添加到入方向规则中,确保ELB可以对ECS中的LiteLLM做健康检测
④ 为简化部署,可以考虑先部署配置好一台ECS,基于该ECS创建私有镜像,另一台再基于该私有镜像部署,避免重复1-8步骤。
2、部署配置docker
执行命令安装docker,并将docker服务配置为开机自启动。
|
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh systemctl enable docker systemctl start docker |
3、获取模型API的地址和API KEY,以华为云MaaS上的deepseek-v4-flash为例

4、登录ECS,创建config.yaml配置文件,将写入如下内容作为模板,并修改对应的参数配置。
|
model_list: - model_name: dsv4 litellm_params: model: openai/deepseek-v4-flash api_base: https://api.modelarts-maas.com/v2/ api_key: <your API KEY> use_chat_completions_api: true
- model_name: glm4.7 #多个模型可以按这个继续添加,否则可以删除本段 litellm_params: model: openai/glm-4.7-flash api_base: https://open.bigmodel.cn/api/paas/v4/ api_key: <your API KEY> use_chat_completions_api: true
litellm_settings: drop_params: True use_chat_completions_url_for_anthropic_messages: true
general_settings: disable_auth: true |
关键参数说明:
|
参数 |
功能说明 |
配置值参考 |
|
Model_name |
LiteLLM代理的模型名称,可以自定义,不强制要求和原始模型名称一致 |
Dsv4 |
|
Model |
后端模型的名称,因为主要openai风格的chat/completions接口,所以格式必须要是: Openai/<模型名称> |
Openai/deepseek-v4-flash |
|
Api_base |
后端模型的API地址。 注意:litellm会在base_url的基础上增加/chat/completions,所以如果官方接口有/chat/completions需要删除掉,例如华为云官网MaaS的API:https://api.modelarts-maas.com/v2/chat/completions就需要填写为参考值。 |
https://api.modelarts-maas.com/v2/ |
|
Api_key |
你的模型API KEY |
Sk-1234 |
|
use_chat_completions_api |
允许将模型的/chat/completions接口转换为/v1/responses接口,必须配置true。不配置或配置为false将不支持/v1/responses接口 |
true |
|
use_chat_completions_url_for_anthropic_messages |
允许将模型的/chat/completions接口转换为/v1/messages接口,必须配置为true。不配置或配置为false将不支持/v1/messages接口 |
true |
5、进入config.yaml所在的目录,执行下面命令从官网下载最新litellm镜像,创建并启动容器实例。
|
docker run -d \ -v $(pwd)/config.yaml:/app/config.yaml \ -e LITELLM_MASTER_KEY=<Your API KEY,默认sk-1234> \ -p 4000:4000 \ --restart=unless-stopped \ docker.litellm.ai/berriai/litellm:latest \ --config /app/config.yaml |
说明:
1)首次执行下载镜像会耗费一段时间,请耐心等待,同时注意修改LITELLM_MASTER_KEY。
2)unless-stopped参数如果手动停止容器下次开机不会随系统自动启动,如果需要永远自动启动,可以替换为always参数。
6、执行docker ps命令,查看创建启动成功的litellm实例。
|
root@ecs-litellm:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f0a9418c5519 docker.litellm.ai/berriai/litellm:1.87.0 "docker/prod_entrypo…" 8 hours ago Up 3 hours 0.0.0.0:4000->4000/tcp, [::]:4000->4000/tcp festive_moser
|
7、执行下面curl命令,确保litellm接口功能正常。注意修改apikey和model名称
|
curl -X POST "http://127.0.0.1:4000/v1/messages" \ -H "x-api-key: <your API KEY>" \ -H "anthropic-version: 2023-06-01" -H "Content-Type: application/json" \ -d "{\"model\": \"dsv4\",\"max_tokens\": 1024,\"messages\": [{\"role\": \"user\", \"content\": \"hi\"}]}"
root@ecs-litellm:~# sh post_msg.sh {"id":"7856c20f30884cb288ade2f8cbd7f205","type":"message","role":"assistant","model":"dsv4","stop_sequence":null,"usage":{"input_tokens":5,"output_tokens":135,"total_tokens":140},"content":[{"type":"thinking","thinking":"好的,用户只发了一个“hi”,这是一个非常简单的问候。这可能是初次接触,想打个招呼,或者是在测试我是否在线。深层需求应该是开启对话,建立联系。\n\n我需要用一个友好、热情的回应来打招呼,并主动提供一个开放式的邀请,让用户能轻松地提出后续问题或说明意图。可以用一些常见的问候语,比如“你好”、“很高兴见到你”,然后明确表示“有什么可以帮你的”,用一个轻松的语气鼓励用户继续交流。","signature":null},{"type":"text","text":"你好!很高兴见到你!�� 有什么我可以帮你的吗?无论是聊天、解答问题,还是需要帮忙处理文档、整理信息之类的任务,尽管说!"}],"stop_reason":"end_turn"}r |
8、删除EIP(视情况):如果ECS不需要EIP与外面通信,到这里可以解绑删除EIP,提升安全并减少费用消耗。
创建配置ELB
1、创建1个共享ELB实例,选择和ECS相同的VPC,购买EIP,具体带宽根据代理API的总体TPM计算,例如4.2M TPM可考虑使用10Mbps带宽。

2、添加监听器:
(1) 根据需要选择HTTP或HTTP协议,注意HTTPS协议需要配置认证证书
(2) 端口配置为4000
(3) 访问控制根据实际网络访问需求配置,确保安全,例如通过白名单做限制
(4) 配置后端分配策略,后端协议选择HTTP,使用默认“加权轮询算法”
(5) 添加云服务器,将2台ECS加入,业务端口配置4000,权重默认都为1,并启用健康检测
3、修改监听器后端服务器组健康检查策略,使用HTTP协议,将检查路径配置为/health/liveness,其余保持默认值
4、等待30秒,观察ELB的监听器策略的健康检查状态是否恢复“正常”。
测试验收
1、执行test_litellm_api.py脚本(参考附件,将txt重命名为py后缀),脚本会自动评估chat/completions、/v1/messages、/v1/responses接口功能,注意使用ELB的EIP访问调用。


2、将ELB代理的地址配置给Claude Code,测试基本功能。

Claude Code部署和配置自定义模型参考:https://zhuanlan.zhihu.com/p/2024261343172129732
- 点赞
- 收藏
- 关注作者
评论(0)