☰
Aegra高可用配置:PostgreSQL多主从节点自动故障切换,实现零停机
2026/10/14 17:57:40 网站建设 项目流程
  • 后端
  • 人工智能
  • 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.

项目地址:https://gitcode.com/gh_mirrors/ae/aegra
点击查看免费下载

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/aegra

Aegra 在内部自动完成双驱动适配:

  • 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 探测。当某个数据库主机宕机时:

  1. 连接池内指向该主机的连接 ping 检查失败
  2. 连接池丢弃死连接
  3. 基于多主机 URL 建立新连接
  4. 驱动按顺序尝试各主机,直到有一个响应

整个过程无需人工介入,也无需重启应用。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.

项目地址:https://gitcode.com/gh_mirrors/ae/aegra
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询