- 后端
- 人工智能
- AI Agent
【免费下载链接】aegra
Open source alternative to LangGraph Platform (now LangSmith Deployments) - Self-hosted AI agent backend with FastAPI and PostgreSQL. Zero vendor lock-in, full control over your agent infrastructure.
Aegra是一个开源的自托管 AI Agent 后端,也是 LangGraph Platform 的免费替代方案。它原生支持 PostgreSQL 高可用:只需在DATABASE_URL中配置多个主机地址,数据库主从节点就能自动故障切换,让 AI Agent 服务在数据库故障时依然保持零停机运行。
什么是 Aegra 高可用
Aegra 的 high-availability.mdx 指南完整描述了这套高可用配置。核心思路是:让 PostgreSQL 驱动直接支持多个主机地址,由驱动层完成故障切换,业务代码无需任何修改。
该机制适用于任何暴露多端点的 PostgreSQL HA 方案:
- Patroni/Stolon/CloudNativePG
- Amazon RDS Multi-AZ/Google Cloud SQL HA
- 手工搭建的流复制集群
如何在 DATABASE_URL 中配置多个 PostgreSQL 节点
只需在DATABASE_URL中用逗号分隔多个主机即可:
DATABASE_URL=postgresql://user:password@primary:5432,standby1:5432,standby2:5432/aegraAegra 在内部自动完成双驱动适配:
- psycopg(LangGraph 连接池)直接使用原始 URL —— libpq 原生支持逗号分隔的主机
- asyncpg(SQLAlchemy 连接池)接收被改写的 URL,主机和端口作为 query 参数传递
改写逻辑位于 settings.py 的_to_sqlalchemy_multihost方法中,无需修改任何业务代码。
target_session_attrs 参数速查:如何精确控制连接目标
PostgreSQL 的target_session_attrs参数可精确控制从候选主机中选择哪一台连接:
# 连接任意可用主机(默认) DATABASE_URL=postgresql://user:pass@primary:5432,standby:5432/aegra?target_session_attrs=any # 只连接可写主机(primary) DATABASE_URL=postgresql://user:pass@primary:5432,standby:5432/aegra?target_session_attrs=read-write # 优先连接只读 standby,不可用时回退 primary DATABASE_URL=postgresql://user:pass@primary:5432,standby:5432/aegra?target_session_attrs=prefer-standby| 参数值 | 行为 |
|---|---|
any | 连接第一个可用主机 |
read-write | 仅连接可写主机(primary) |
read-only | 仅连接只读主机(standby) |
prefer-standby | 优先 standby,回退到 primary |
primary/standby | 仅连接 primary / 仅连接 standby |
💡 大多数部署场景省略该参数或使用
any即可 —— Aegra 需要可写连接来写入 metadata 和 checkpoints,单主节点也能满足所有 session 属性过滤。
pool_pre_ping 如何保证连接池自动恢复
Aegra 的 SQLAlchemy 引擎启用了pool_pre_ping=True(见 database.py),每个连接在使用前都会先做一次轻量 ping 探测。当某个数据库主机宕机时:
- 连接池内指向该主机的连接 ping 检查失败
- 连接池丢弃死连接
- 基于多主机 URL 建立新连接
- 驱动按顺序尝试各主机,直到有一个响应
整个过程无需人工介入,也无需重启应用。LangGraph 的 psycopg 连接池则通过其内置的连接健康检查实现同样能力。
多实例部署:Redis 任务队列 + Nginx 负载均衡
数据库高可用只是第一步,生产环境通常还需要多实例部署来横向扩展 AI Agent 吞吐量。仓库提供了完整的 docker-compose.multi.yml 参考架构:
- 两个 Aegra 实例(
aegra-a与aegra-b)共享同一个 PostgreSQL - Redis作为跨实例任务队列与 SSE 事件总线
- Nginx做 round-robin 负载均衡,见 nginx.conf
- 通过lease / heartbeat / reaper机制实现 worker 崩溃自动恢复,参考 worker-architecture.mdx
端到端测试 test_multi_instance.py 覆盖了跨实例创建/加入 run、跨实例取消 run、并发 run 分布、worker 容器崩溃恢复等关键场景,可作为上线前的验收清单。
适用场景与已知限制
推荐使用 Aegra 高可用配置的场景:
- 生产环境 AI Agent 服务,对停机时间零容忍
- 使用托管数据库(RDS Multi-AZ、Cloud SQL HA)的云端部署
- 自建 Kubernetes 集群上的流复制 PostgreSQL
已知限制:
- IPv6 地址必须使用方括号:
[::1]:5432,[::2]:5433 - 端口必须为数字,非数字端口会在启动时报错
- 独立
POSTGRES_HOST/POSTGRES_PORT字段不支持多主机 —— 请统一使用DATABASE_URL - 多主机方案不提供负载均衡,驱动只连接第一个响应的主机
⚠️ Aegra 的多主机切换由 PostgreSQL 驱动层完成,本身不做主从角色感知 —— 主从切换仍由 Patroni、RDS Multi-AZ 等外部 HA 组件负责。
- 后端
- 人工智能
- AI Agent
【免费下载链接】aegra
Open source alternative to LangGraph Platform (now LangSmith Deployments) - Self-hosted AI agent backend with FastAPI and PostgreSQL. Zero vendor lock-in, full control over your agent infrastructure.
相关推荐
OpenArk:Windows 系统安全分析实操手册
OpenArk:Windows 系统安全分析实操手册 从一个真实场景说起 凌晨两点,你在任务管理器里看到一个陌生的进程。 父进程显示 unknown ,路径列一
网络安全逆向工程桌面应用从安装到运行:TestDrive命令行工具完全使用手册
从安装到运行:TestDrive命令行工具完全使用手册 TestDrive是一款功能强大的命令行工具,能让你快速在Playground中试用任何Swift po
RabbitMQ故障恢复:集群节点故障自动切换机制
RabbitMQ故障恢复:集群节点故障自动切换机制 在分布式系统中,消息队列作为核心组件,其高可用性直接决定了业务连续性。RabbitMQ通过集群架构和自动故障
后端消息队列消息路由
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考