TeGo-AI 企业级高可用部署文档
部署概述
本文档针对企业级高可用场景,提供基于 8 台服务器的 TeGo-AI 平台部署方案。该架构实现全链路冗余设计,支持大规模并发访问,具备自动故障转移和完善的容灾备份能力,适用于全公司级核心业务场景。
环境准备
硬件配置要求
服务器名称 | 系统 | 核心 | 内存 | 存储 | 部署服务详情 |
---|---|---|---|---|---|
infra-primary | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | 数据库集群主节点(postgres-master)、缓存主节点(redis-master)、认证主服务(openldap-master) |
infra-standby | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | 数据库集群备节点(postgres-standby)、缓存从节点(redis-slave)、认证备服务(openldap-slave)、数据同步服务(data-sync) |
ai-service1 | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | AI 服务主节点(embedding - Ollama 主实例) |
ai-service2 | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | AI 服务备节点(embedding - Ollama 备实例) |
biz-node1 | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | 业务服务全集(tego-os, tego-os-server, tego-llm, tego-mcp, tego-proxy, tego-engine-main×2, tego-engine-worker×2) |
biz-node2 | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | 业务服务全集(同上) |
biz-node3 | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | 业务服务全集(同上) |
monitor-node | Ubuntu 22.04 LTS | 16核 | 32GB | 500G SSD | 监控告警服务(Prometheus, Grafana, Alertmanager) |
软件环境要求
- 基础系统:Ubuntu 22.04 LTS,Linux Kernel 5.4+(最小化安装,无图形界面)
- 容器服务:Docker Engine 24.0.9+,Docker Compose 2.20+
- 基础工具:OpenSSH 8.0+、Git 2.30+、curl 7.68+、wget 1.21+
- 时间同步:chrony 3.5+(确保所有节点时间偏差 ≤ 1 秒)
- 数据存储:PostgreSQL 13.x+(含 pgvector 0.4.0+)、Redis 6.2+(含 RedisJSON 2.0+)
- 身份认证:OpenLDAP 2.4.57+
网络配置要求
- 内网连通性:所有服务器内网互通,ping 测试无丢包,延迟 < 1ms
- IP 规划:分配固定内网 IP(如 192.168.1.10-192.168.1.17),并标注服务器角色
- 防火墙配置:配置 UFW 或 iptables,仅开放必需端口
端口配置规划
端口类型 | 端口号 | 用途 | 关联服务 | 访问限制 |
---|---|---|---|---|
外部访问 | 26000 | 前端 Web 界面 | tego-os | 允许用户客户端访问(企业内网/指定 IP) |
外部访问 | 27000 | MCP服务接口 | tego-mcp | 允许用户客户端/集成系统访问 |
外部访问 | 30000 | 工作流负载均衡 | tego-proxy | 仅允许外部负载均衡器访问 |
外部访问 | 31000 | LLM网关服务 | tego-llm | 允许用户客户端/集成系统访问 |
内部通信 | 22 | 主从文件同步 | SSH | 仅允许授权节点访问 |
内部通信 | 5432 | 数据库服务 | PostgreSQL | 仅允许业务节点(biz-node1/2/3)访问 |
内部通信 | 6379 | 缓存/消息队列 | Redis | 仅允许业务节点访问 |
内部通信 | 389 | 身份认证服务 | OpenLDAP | 仅允许业务节点访问 |
内部通信 | 11434 | AI嵌入服务 | Embedding | 仅允许业务节点访问 |
监控端口 | 9090 | 性能监控 | Prometheus | 仅允许监控节点/运维IP访问 |
管理端口 | 5678 | 工作流管理界面 | tego-engine-main | 仅允许运维IP访问 |
详细部署步骤
通用环境初始化(所有节点执行)
- 依赖包安装
apt update && apt install -y bzip2 gzip rsync coreutils iptables chrony openssh-server git curl wget
- 时间同步配置
systemctl enable --now chronyd
# 验证时间同步状态
timedatectl
# 确保输出中System clock synchronized: yes及NTP service: active
- Docker安装
# 下载离线Docker安装包
wget https://zhama-public.oss-cn-heyuan.aliyuncs.com/base/offline-docker-24.0.9.tar.gz
# 解压并安装
tar xf offline-docker-24.0.9.tar.gz
cd offline-docker-24.0.9
bash install.sh
# 验证安装
docker --version # 需输出Docker version 24.0.9+
- 创建部署目录
mkdir -p /opt/tego/{infrastructure,business,monitor}
chmod -R 755 /opt/tego
基础设施层部署
1. infra-primary节点部署
步骤1:准备配置文件
在infra-primary主机上解压部署包并执行 setup.sh 脚本生成配置文件:
# 下载并解压部署包
wget https://zhama-public.oss-cn-heyuan.aliyuncs.com/tego-deploy-v1.6.0.tar
tar xvf tego-deploy-v1.6.0.tar
cd product
# 生成配置文件(使用企业级8节点部署参数)
./setup.sh -i <基础设施主节点内网IP> -b1 <业务节点1外网IP> -b2 <业务节点2外网IP> -b3 <业务节点3外网IP> -ai1 <AI服务1内网IP> -ai2 <AI服务2内网IP> -bk <基础设施备节点内网IP> -m <监控节点内网IP>
# 示例:
./setup.sh -i 192.168.1.10 -b1 47.120.69.7 -b2 47.113.226.243 -b3 47.114.227.244 -ai1 192.168.1.12 -ai2 192.168.1.13 -bk 192.168.1.11 -m 192.168.1.14
步骤2:配置核心服务密码
进入基础设施配置目录,编辑环境变量设置服务密码:
cd infrastructure/master
vim .env
设置核心服务密码(替换为实际密码):
POSTGRES_PASSWORD=your_password
REDIS_PASSWORD=your_redis_password
LDAP_ADMIN_PASSWORD=your_ldap_password
LDAP_ORGANISATION=Your Organization
LDAP_DOMAIN=your.domain.com
**步骤3:启动主基础设施服务**
启动主基础设施服务(PostgreSQL主库、Redis主库、OpenLDAP主库):
```bash
docker compose -f docker-compose-primary.yml up -d
执行主库初始化脚本(配置PostgreSQL主从复制,需传入备节点内网IP):
# 语法:bash master-init.sh <PostgreSQL复制密码> <备节点内网IP>
bash master-init.sh your_replication_password 192.168.1.11
重启基础服务,确保初始化生效:
docker compose down && docker compose up -d
cd ../.. # 返回product根目录
#### 2. infra-standby节点部署
**步骤1:准备配置文件**
在infra-standby主机上解压部署包并执行 setup.sh 脚本生成配置文件:
```bash
# 下载并解压部署包
wget https://zhama-public.oss-cn-heyuan.aliyuncs.com/tego-deploy-v1.6.0.tar
tar xvf tego-deploy-v1.6.0.tar
cd product
# 生成配置文件(使用与主节点相同的IP参数)
./setup.sh -i <基础设施主节点内网IP> -b1 <业务节点1外网IP> -b2 <业务节点2外网IP> -b3 <业务节点3外网IP> -ai1 <AI服务1内网IP> -ai2 <AI服务2内网IP> -bk <基础设施备节点内网IP> -m <监控节点内网IP>
# 示例(使用与主节点相同的配置):
./setup.sh -i 192.168.1.10 -b1 47.120.69.7 -b2 47.113.226.243 -b3 47.114.227.244 -ai1 192.168.1.12 -ai2 192.168.1.13 -bk 192.168.1.11 -m 192.168.1.14
注意:infra-standby节点的配置参数应与infra-primary节点保持一致
步骤2:配置Master-Slave SSH免密登录
生成SSH密钥(一路回车,无需设置密码):
ssh-keygen -t rsa -C "sync@tego.com"
查看公钥内容并复制:
cat ~/.ssh/id_rsa.pub
登录 infra-primary
节点,将infra-standby的公钥添加到授权列表:
# 在infra-primary节点执行
vim ~/.ssh/authorized_keys # 粘贴infra-standby的公钥内容后保存
步骤3:启动从基础设施服务
启动从基础设施服务(PostgreSQL从库、Redis从库、OpenLDAP从库、data-sync同步服务):
docker compose -f docker-compose-standby.yml up -d
配置数据库主从复制:
docker exec postgres-standby pg_ctl stop -D /var/lib/postgresql/data
rm -rf /var/lib/postgresql/data/*
scp -r infra-primary:/var/lib/postgresql/data/backup/* /var/lib/postgresql/data/
# 配置recovery.conf文件
echo "standby_mode = 'on'" > /var/lib/postgresql/data/recovery.conf
echo "primary_conninfo = 'host=infra-primary port=5432 user=replication password=your_replication_password'" >> /var/lib/postgresql/data/recovery.conf
echo "trigger_file = '/tmp/postgresql.trigger'" >> /var/lib/postgresql/data/recovery.conf
docker restart postgres-standby
cd ../.. # 返回product根目录
3. ai-service1(AI主节点)部署
cd /opt/tego/infrastructure/llm
# 下载AI服务配置
git clone <AI服务配置仓库地址> .
# 配置环境变量
cp .env.example .env
vim .env
# 配置模型路径、资源限制等参数
# 启动主AI服务
docker compose -f docker-compose-primary.yml up -d
# 验证服务
docker logs embedding-primary
# 确保输出中包含"Service started successfully"
4. ai-service2(AI备节点)部署
cd /opt/tego/infrastructure/llm
# 同步主AI节点配置
scp -r ai-service1:/opt/tego/infrastructure/llm/* .
# 修改环境变量(备节点配置)
vim .env
# 启动备AI服务
docker compose -f docker-compose-standby.yml up -d
# 验证服务
docker logs embedding-standby
业务服务层部署(biz-node1/2/3执行相同操作)
步骤1:准备配置文件
在业务节点主机上解压部署包并执行 setup.sh 脚本生成配置文件:
# 下载并解压部署包
wget https://zhama-public.oss-cn-heyuan.aliyuncs.com/tego-deploy-v1.6.0.tar
tar xvf tego-deploy-v1.6.0.tar
cd product
# 生成配置文件(使用与基础设施节点相同的IP参数)
./setup.sh -i <基础设施主节点内网IP> -b1 <业务节点1外网IP> -b2 <业务节点2外网IP> -b3 <业务节点3外网IP> -ai1 <AI服务1内网IP> -ai2 <AI服务2内网IP> -bk <基础设施备节点内网IP> -m <监控节点内网IP>
# 示例(使用与基础设施节点相同的配置):
./setup.sh -i 192.168.1.10 -b1 47.120.69.7 -b2 47.113.226.243 -b3 47.114.227.244 -ai1 192.168.1.12 -ai2 192.168.1.13 -bk 192.168.1.11 -m 192.168.1.14
步骤2:配置业务服务连接参数
进入业务服务目录,编辑环境变量配置:
cd host1 # 或 host2, host3
vim .env
配置基础设施连接信息(替换为实际值):
# 基础设施连接配置(指向infra-primary)
POSTGRES_HOST=192.168.1.10
POSTGRES_PORT=5432
POSTGRES_PASSWORD=your_password
REDIS_HOST=192.168.1.10
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
# 业务服务配置
TEGO_JWT_SECRET=your_jwt_secret
DATABASE_URL=postgresql://zhama:your_password@192.168.1.10:5432/zhama
SQL_DSN=host=192.168.1.10 port=5432 user=zhama password=your_password dbname=tego-llm sslmode=disable
# AI服务配置
USE_LOCAL_MODEL=false
MODEL_NAME=qwen3-embedding-4b
EMBEDDING_URL=http://192.168.1.12:11434/v1,http://192.168.1.13:11434/v1
步骤3:启动业务服务
启动业务服务集群(包含前端、后端、AI网关等核心服务):
docker compose up -d
cd .. # 返回product根目录
验证业务节点状态
- 查看容器运行状态(需全部显示
Up
):
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
- 查看业务服务日志(无报错即正常):
docker compose -f host1/docker-compose.yml logs
监控节点部署(monitor-node)
cd /opt/tego/monitor
# 下载监控配置
git clone <监控服务配置仓库地址> .
# 配置环境变量
cp .env.example .env
vim .env
# 配置需要监控的节点和服务地址
# 启动监控服务
docker compose up -d
# 配置Grafana仪表盘
docker exec grafana grafana-cli dashboard import <dashboard-id>
外部负载均衡器配置
以HAProxy为例:
# 安装HAProxy
apt install -y haproxy
# 配置负载均衡
vim /etc/haproxy/haproxy.cfg
# 添加以下配置片段
frontend tego-front
bind *:80
mode http
default_backend tego-back
backend tego-back
mode http
balance roundrobin
server biz1 biz-node1:26000 check
server biz2 biz-node2:26000 check
server biz3 biz-node3:26000 check
# 重启HAProxy
systemctl restart haproxy
部署验证
基础设施验证
- 数据库主从验证
# 在主库创建测试数据
docker exec -it postgres-master psql -U postgres -c "CREATE TABLE test_replication (id int); INSERT INTO test_replication VALUES (1);"
# 在从库验证数据同步
docker exec -it postgres-standby psql -U postgres -c "SELECT * FROM test_replication;"
# 应返回新增的记录
- Redis验证
docker exec -it redis-master redis-cli -a your_redis_password
127.0.0.1:6379> set test_key "hello"
OK
127.0.0.1:6379> get test_key
"hello"
- AI服务验证
curl -X POST http://ai-service1:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"input": "test embedding"}'
# 应返回向量数据
业务服务验证
前端服务访问
通过浏览器访问http://<负载均衡器IP>:26000
,应能正常加载登录页面API服务验证
curl http://biz-node1:29000/api/health
# 应返回{"status": "healthy"}
- 工作流服务验证
curl http://biz-node1:30000/health
# 应返回健康状态信息
监控服务验证
通过浏览器访问http://monitor-node:3000
(Grafana默认端口),登录后查看各服务监控指标是否正常
部署后配置
- HTTPS配置:为外部访问端口配置SSL证书,启用HTTPS
- 备份策略:配置定时备份脚本,定期备份数据库和关键配置
- 日志管理:配置日志轮转,避免磁盘空间耗尽
- 安全加固:更新系统补丁,配置最小权限原则的用户和防火墙规则
扩展与维护
- 水平扩展:新增业务节点(biz-node4等),在负载均衡器中添加节点信息
- 性能优化:根据监控数据调整服务资源分配,优化数据库索引等
- 故障转移:当主节点故障时,手动或自动切换到备节点,参考对应服务的故障转移文档
注意事项
- 所有节点的环境变量需保持一致,特别是密钥和密码信息
- 定期检查数据同步状态,确保主从数据一致性
- 部署过程中若出现服务启动失败,查看容器日志定位问题:
docker logs <容器名>
- 生产环境建议关闭服务器的Swap分区,避免影响性能