AgentBuilder 資料庫指南
AgentBuilder 資料庫儲存對更多 AgentBuilder 操作至關重要的數據,包括啟動、FLOW執行、使用者互動和管理任務。 資料庫支援前端(視覺編輯器)和後端(API)操作,使其可用性對 AgentBuilder 的穩定性和功能至關重要。 有關資料庫結構描述的詳細資訊,請參閱記憶體管理選項。
本指南專為負責在生產環境中部署和管理 AgentBuilder 的企業資料庫管理員 (DBA) 和操作員設計。 它解釋了如何配置 AgentBuilder 使用 PostgreSQL,包括高可用性 (HA) 和主動-主動配置,以及監控、維護和安全的最佳實務。
配置 AgentBuilder 使用 PostgreSQL
AgentBuilder 的預設資料庫是 SQLite。 不過,由於其可擴展性、效能和穩健性,建議生產部署使用 PostgreSQL。
以下步驟解釋如何配置 AgentBuilder 使用獨立或容器化部署的 PostgreSQL。 有關更多資訊,請參閱配置外部 PostgreSQL 資料庫。
-
設定 PostgreSQL:
- 使用本機伺服器、Docker 或受管理的雲端服務部署 PostgreSQL 實例(建議使用版本 12 或更高版本)。
- 為 AgentBuilder 建立資料庫。
- 建立具有適當、最小權限的 PostgreSQL 使用者來管理和寫入資料庫,例如在您的 AgentBuilder 表格上具有 CREATE、SELECT、INSERT、UPDATE、DELETE。
-
以
postgresql://user:password@host:port/dbname格式取得連接字串,例如postgresql://langflow:securepassword@postgres:5432/langflow。對於高可用性,請使用虛擬 IP 或代 理主機名稱而不是直接資料庫主機。 有關更多資訊,請參閱 PostgreSQL 的高可用性。
-
使用
.env或docker-compose.yml檔案配置 AgentBuilder。- .env
- docker-compose.yml
-
在
langflow目錄中建立.env檔案:_10touch .env -
將連接字串新增至
.env檔案:_10LANGFLOW_DATABASE_URL="postgresql://langflow:securepassword@postgres:5432/langflow"
有關更多環境變數,請參閱 AgentBuilder 儲存庫中的
.env.example檔案。使用 AgentBuilder 儲存庫中的範例
docker-compose.yml。 您可以使用預設值或根據需要自訂它們。_20version: '3'_20services:_20langflow:_20image: langflowai/langflow:latest_20ports:_20- "7860:7860"_20environment:_20- LANGFLOW_DATABASE_URL=postgresql://langflow:langflow@postgres:5432/langflow_20postgres:_20image: postgres:16_20ports:_20- "5432:5432"_20environment:_20- POSTGRES_USER=langflow_20- POSTGRES_PASSWORD=langflow_20- POSTGRES_DB=langflow_20volumes:_20- langflow-postgres:/var/lib/postgresql/data_20volumes:_20- langflow-postgres: -
使用您的 PostgreSQL 連接啟動 AgentBuilder:
- .env
- docker-compose.yml
_10uv run langflow run --env-file .env導航 至包含
docker-compose.yml的目錄,然後執行docker-compose up。 -
選用:執行遷移。
AgentBuilder 使用遷移來管理其資料庫結構描述。 當您首次連接到 PostgreSQL 時,AgentBuilder 會自動執行遷移來建立必要的表格。
直接結構描述修改可能會與 AgentBuilder 的內建結構描述管理發生衝突。 如果您需要更新結構描述,您可以使用 AgentBuilder CLI 手動執行遷移:
-
執行
langflow migration來預覽變更。 -
檢閱變更以確保安全地繼續遷移。
-
執行
langflow migration --fix來執行遷移並永久套用變更。這是一個破壞性操作,可能會刪除數據。 有關更多資訊,請參閱
langflow migration。
-
-
要驗證配置,請使用 AgentBuilder 視覺編輯器或 API 建立任何FLOW,然後查詢您的資料庫以確認表格和活動記錄在那裡。FLOW的內容無關緊要;您只需要確認FLOW儲存在您的 PostgreSQL 資料庫中。 您可以透過兩種方式查詢資料庫:
-
查詢資料庫容器:
_10docker exec -it <postgres-container> psql -U langflow -d langflow -
使用 SQL:
_10SELECT * FROM pg_stat_activity WHERE datname = 'langflow';
-
PostgreSQL 的高可用性
要進一步改善效能、可靠性和可擴展性,請使用高可用性 (HA) 或主動-主動 HA PostgreSQL 配置。 這建議用於生產部署,以最小化停機時間並確保在資料庫伺服器故障時持續運作,特別是當多個 AgentBuilder 實例依賴相同資料庫時。
- 高可用性 (HA)
- 主動-主動 HA
-
設定串流複寫:
-
配置一個主要資料庫用於寫入。
-
配置一個或多個複本用於讀取和故障轉移。
根據您的延遲和一致性需求選擇同步或非同步複寫。
-
-
使用以下選項之一實作自動故障轉移:
-
更新您的 PostgreSQL 連接字串以指向 HA 設定。 如果您有多實例部署,請確保所有 AgentBuilder 實例連接到相同的 HA PostgreSQL 資料庫。
您使用的連接字串取決於您的 HA 配置和服務。
- 使用解析為目前主要資料庫的虛擬 IP 或 DNS 名稱,例如
postgresql://langflow:securepassword@db-proxy:5432/langflow?sslmode=require。 - 使用受管理服務提供的端點,例如
langflow.cluster-xyz.us-east-1.rds.amazonaws.com。
- 使用解析為目前主要資料庫的虛擬 IP 或 DNS 名稱,例如
-
選用:實作讀取密集型工作負載的負載平衡:
- 使用連接池器如 PgBouncer 來跨複本分配讀取查詢。
- 配置 AgentBuilder 使用指向主要 PostgreSQL 資料庫或代理的單一連接字串。
要實作主動-主動 HA,您必須部署多個 AgentBuilder 實例、使用負載平衡來跨實例分配流量,並確保所有實例連接到相同的 HA PostgreSQL 資料庫:
-
使用 Kubernetes 或 Docker Swarm 部署多個 AgentBuilder 實例。
您必須配置您的實例使用共享 PostgreSQL 資料庫。 有關更多資訊,請參閱 Kubernetes 上 AgentBuilder 的最佳實務。
-
設定串流複寫:
-
配置一個主要資料庫用於寫入。
-
配置一個或多個複本用於讀取和故障轉移。
根據您的延遲和一致性需求選擇同步或非同步複寫。
-
-
使用以下選項之一實作自動故障轉移:
-
更新您的 PostgreSQL 連接字串以指向 HA 設定。 確保所有 AgentBuilder 實例連接到相同的 HA PostgreSQL 資料庫。
您使用的連接字串取決於您的 HA 配置和服務:
- 使用解析為目前主要資料庫的虛擬 IP 或 DNS 名稱,例如
postgresql://langflow:securepassword@db-proxy:5432/langflow?sslmode=require。 - 使用受管理服務提供的端點,例如
langflow.cluster-xyz.us-east-1.rds.amazonaws.com。
- 使用解析為目前主要資料庫的虛擬 IP 或 DNS 名稱,例如
-
使用負載平衡器來跨您的實例分配請求。
以下範例配置適用於具有三個 langflow-runtime 複本的生產部署,使用 Kubernetes 負載平衡器服務將流量分配到健康的 pod,並使用 HA PostgreSQL 資料庫連接字串。
_34apiVersion: apps/v1_34kind: Deployment_34metadata:_34 name: langflow-runtime_34spec:_34 replicas: 3_34 selector:_34 matchLabels:_34 app: langflow-runtime_34 template:_34 metadata:_34 labels:_34 app: langflow-runtime_34 spec:_34 containers:_34 - name: langflow_34 image: langflowai/langflow:latest_34 ports:_34 - containerPort: 7860_34 env:_34 - name: LANGFLOW_DATABASE_URL_34 value: "postgresql://langflow:securepassword@db-proxy:5432/langflow?sslmode=require"_34---_34apiVersion: v1_34kind: Service_34metadata:_34 name: langflow-runtime_34spec:_34 selector:_34 app: langflow-runtime_34 ports:_34 - port: 80_34 targetPort: 7860_34 type: LoadBalancer
實作 HA 或主動-主動 HA 後,監控故障轉移事件並確保複本同步。
AgentBuilder 透過 SQLAlchemy 支援重新連接嘗試,如果 LANGFLOW_DATABASE_CONNECTION_RETRY=True,確保故障轉移後復原,並在資料庫重新上線時減少中斷。
雖然 PostgreSQL 處理並發連接良好,您仍然必須監控高負載期間的爭用、死鎖或其他效能降級。
資料庫故障的影響
如果 PostgreSQL 資料庫變得不可用,以下 AgentBuilder 功能將會失敗:
- FLOW擷取:無法從資料庫載入新的或現有FLOW。
- FLOW儲存:無法儲存新FLOW或對現有FLOW的更新。
- 使用者驗證:登入和使用者管理功能失敗。
- 專案集合存取:無法存取或分享社群/自訂專案集合。
- 配置擷取:無法載入應用程式設定。
- 配置更新:無法儲存設定變更。
- 執行日誌存取:無法擷取歷史FLOW執行日誌。
- 日誌寫入:無法記錄新的執行或系統活動日誌。
- 多使用者協作:跨使用者分享FLOW或專案失敗。
- API FLOW載入:載入新FLOW(非快取)的 API 請求失敗。
記憶體中已載入的FLOW可能會繼續使用快取配置運作。 不過,任何需要資料庫存取的操作都會失敗,直到資料庫恢復。 例如,快取FLOW可能會執行,但不會將日誌或訊息歷史記錄到資料庫。
要最小化資料庫故障的可能性和影響,請使用 HA 配置 並定期記錄備份。
例如,您可以使用 pg_dump 建立邏輯備份,或設定具有預寫日誌 (WAL) 的持續封存以進行時間點復原。
定期測試復原程序以確保您的團隊了解如何在災難復原情境中執行它們。
資料庫監控
監控您的 PostgreSQL 資料庫以確保最佳效能和可靠性:
- 使用 pgAdmin、Prometheus 與 PostgreSQL 匯出器或基於雲端的 PostgreSQL 監控等工具。
- 追蹤效能指標,例如 CPU、記憶體和磁碟 I/O 使用率。
- 監控複本健康狀況、可用性、延遲和同步。
例如,使用
pg_stat_activity監控連接計數和爭用。 - 設定高延遲、故障轉移事件或複寫問題的警報和通知。
- 啟用 PostgreSQL 日誌,例如
log_connections和log_statements,以追蹤存取和變更。