AIRI云原生架构深度解析:生产环境容器化部署与监控优化实践
AIRI云原生架构深度解析生产环境容器化部署与监控优化实践【免费下载链接】airi Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-samas altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.项目地址: https://gitcode.com/GitHub_Trending/ai/airiAIRI是一个基于大型语言模型的虚拟AI角色项目采用现代化的微服务架构和云原生技术栈支持实时语音聊天、游戏互动和多平台部署。项目采用TypeScript/Vue.js全栈开发通过Docker容器化实现跨平台一致性部署支持Web、桌面端和移动端应用。架构设计采用前后端分离模式后端基于Hono框架提供RESTful API和WebSocket服务前端采用Vue 3组合式API构建响应式界面数据库层使用PostgreSQL持久化存储Redis提供缓存和实时通信支持整体架构具备高可用性和可扩展性。项目架构概述AIRI采用分层微服务架构核心组件包括前端应用层、后端服务层、数据存储层和监控观测层。前端应用分为Web应用(stage-web)、移动应用(stage-pocket)和桌面应用(stage-tamagotchi)共享统一的UI组件库和状态管理。后端服务基于Hono框架构建提供认证授权、计费管理、聊天同步和网关转发功能。数据层采用PostgreSQL作为主数据库Redis处理缓存和实时消息队列。监控体系基于OpenTelemetry标准集成Prometheus、Loki和Tempo实现全链路可观测性。系统采用模块化设计通过pnpm workspace管理多包依赖各功能模块独立开发部署。核心通信协议支持HTTP RESTful API和WebSocket双向通信确保实时交互的低延迟需求。安全层实现OAuth 2.0认证和JWT令牌管理API网关负责请求路由和负载均衡。部署策略选择容器化部署方案AIRI提供完整的Docker容器化部署方案支持单机开发环境和生产集群部署。项目包含两个核心Dockerfile前端Web应用Dockerfile位于apps/stage-web/Dockerfile采用多阶段构建优化镜像大小后端服务Dockerfile位于apps/server/Dockerfile集成完整的运行时依赖。开发环境推荐使用Docker Compose快速启动生产环境建议采用Kubernetes编排管理。Docker Compose配置位于apps/server/docker-compose.yml定义了三层服务架构PostgreSQL数据库服务、Redis缓存服务和AIRI API服务。服务间通过健康检查机制确保依赖顺序启动支持环境变量注入和配置文件挂载。云原生部署架构生产环境部署建议采用Kubernetes集群充分利用其自动扩缩容、服务发现和滚动更新能力。AIRI架构天然适合云原生部署各微服务可独立伸缩前端静态资源可通过CDN加速后端API服务可水平扩展应对高并发请求。数据库层建议使用云托管服务或StatefulSet持久化存储Redis集群提供高可用缓存。监控观测层通过OpenTelemetry Collector统一收集指标、日志和追踪数据对接Prometheus、Loki和Tempo构成完整的可观测性栈。具体实施方案Docker容器化部署流程构建AIRI容器镜像采用多阶段构建策略前端构建阶段使用Node.js环境编译Vue应用生产阶段使用Nginx提供静态文件服务# 克隆项目仓库 git clone https://gitcode.com/GitHub_Trending/ai/airi cd airi # 构建前端Web应用镜像 docker build -t airi-web -f apps/stage-web/Dockerfile . # 构建后端API服务镜像 docker build -t airi-server -f apps/server/Dockerfile .后端服务依赖数据库和缓存推荐使用Docker Compose一键部署完整环境# apps/server/docker-compose.yml 核心配置 services: db: image: ghcr.io/tensorchord/vchord-postgres:pg18-v1.0.0 environment: - POSTGRES_DBpostgres - POSTGRES_USERpostgres - POSTGRES_PASSWORDexample-PAssw0rd-xHjDYR.b7N ports: - 5435:5432 volumes: - ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql - db_data:/var/lib/postgresql redis: image: redis:7-alpine ports: - 6379:6379 volumes: - redis_data:/data api: build: context: ../.. dockerfile: apps/server/Dockerfile command: [pnpm, -F, proj-airi/server, run, server, api] depends_on: db: condition: service_healthy redis: condition: service_healthy ports: - 6112:3000Kubernetes生产部署配置生产环境Kubernetes部署需要配置Deployment、Service和Ingress资源。以下是核心部署配置示例# Deployment配置 - 支持多副本和高可用 apiVersion: apps/v1 kind: Deployment metadata: name: airi-api-deployment spec: replicas: 3 selector: matchLabels: app: airi-api template: metadata: labels: app: airi-api spec: containers: - name: airi-api image: airi-server:latest ports: - containerPort: 3000 env: - name: DATABASE_URL valueFrom: secretKeyRef: name: airi-secrets key: database-url - name: REDIS_URL value: redis://redis-service:6379 resources: requests: memory: 512Mi cpu: 250m limits: memory: 1Gi cpu: 500m livenessProbe: httpGet: path: /livez port: 3000 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: 3000 initialDelaySeconds: 5 periodSeconds: 5前端Web应用部署配置需要配置静态文件服务和CDN集成# 前端静态资源部署 apiVersion: apps/v1 kind: Deployment metadata: name: airi-web-deployment spec: replicas: 2 selector: matchLabels: app: airi-web template: metadata: labels: app: airi-web spec: containers: - name: airi-web image: airi-web:latest ports: - containerPort: 80 resources: requests: memory: 256Mi cpu: 100m limits: memory: 512Mi cpu: 200m网络与服务发现配置服务间通信采用Kubernetes Service实现服务发现配置内部DNS解析# 后端API服务暴露 apiVersion: v1 kind: Service metadata: name: airi-api-service spec: selector: app: airi-api ports: - port: 80 targetPort: 3000 type: ClusterIP # 前端Web服务暴露 apiVersion: v1 kind: Service metadata: name: airi-web-service spec: selector: app: airi-web ports: - port: 80 targetPort: 80 type: ClusterIP # Ingress统一入口 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: airi-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: airi.example.com http: paths: - path: /api pathType: Prefix backend: service: name: airi-api-service port: number: 80 - path: / pathType: Prefix backend: service: name: airi-web-service port: number: 80运维监控方案OpenTelemetry可观测性体系AIRI内置完整的OpenTelemetry监控体系配置位于apps/server/otel/目录。监控栈包含四个核心组件OpenTelemetry Collector统一收集数据Prometheus存储指标Loki聚合日志Tempo处理追踪。# OpenTelemetry Collector配置 (apps/server/otel/collector/otel-collector.yaml) receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: prometheus: endpoint: 0.0.0.0:8889 namespace: airi loki: endpoint: http://loki:3100/loki/api/v1/push tempo: endpoint: tempo:9095 insecure: true service: pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [prometheus] logs: receivers: [otlp] processors: [batch] exporters: [loki] traces: receivers: [otlp] processors: [batch] exporters: [tempo]Prometheus监控配置指标监控采用Prometheus采集应用性能指标配置位于apps/server/otel/prometheus/prometheus.yamlglobal: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: airi-api static_configs: - targets: [airi-api-service:3000] metrics_path: /metrics scrape_interval: 10s - job_name: node-exporter static_configs: - targets: [node-exporter:9100] - job_name: otel-collector static_configs: - targets: [otel-collector:8889]日志聚合与追踪日志管理采用Loki实现集中式日志收集支持标签查询和实时分析。分布式追踪使用Tempo存储请求链路配合Jaeger UI可视化调用关系。Grafana配置仪表板统一展示指标、日志和追踪数据位于apps/server/otel/grafana/目录。健康检查与告警生产环境配置多层健康检查机制包括容器级健康检查、应用级健康端点和业务级健康验证# Kubernetes健康检查配置 livenessProbe: httpGet: path: /livez port: 3000 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /readyz port: 3000 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 1 startupProbe: httpGet: path: /healthz port: 3000 initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 30告警规则配置基于Prometheus Alertmanager监控关键指标包括API响应时间、错误率、数据库连接池状态和Redis内存使用率。建议设置以下告警阈值API P95响应时间 500ms错误率 1%数据库连接数使用率 80%Redis内存使用率 75%性能优化建议资源配额管理根据负载特征配置合理的requests和limits避免资源争用水平自动扩缩配置HPA基于CPU使用率和请求QPS自动调整副本数缓存策略优化Redis配置读写分离热点数据设置适当TTL数据库连接池根据并发连接数优化PostgreSQL连接池配置CDN静态资源前端静态资源通过CDN加速减少服务器负载安全加固措施生产环境部署需实施多层安全防护容器安全使用非root用户运行限制容器权限网络策略配置NetworkPolicy限制Pod间通信密钥管理使用Kubernetes Secret存储敏感信息TLS加密为所有服务启用HTTPS配置证书自动续期访问控制实现基于角色的访问控制(RBAC)通过以上容器化部署方案和监控体系AIRI项目可构建高可用、可观测的生产级AI角色服务平台满足企业级应用的需求。架构设计充分考虑了扩展性、可靠性和可维护性为大规模部署提供坚实基础。【免费下载链接】airi Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-samas altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.项目地址: https://gitcode.com/GitHub_Trending/ai/airi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考