跳转至
首页 解决方案 下载 文档
演示环境

OpsAny SAAS应用架构

OpsAny SaaS应用是基于PaaS平台构建的各个独立的平台,可以使用PaaSAgent进行部署,也可以单独进行部署。

PaaSAgent部署SaaS

SaaS的部署和更新,主要依靠PaaSAgent服务,PaaSAgent顾名思义是PaaS的Agent,是PaaS平台执行SaaS维护的一个Agent,一个PaaS平台可以有测试环境和正式环境的PaaSAgent。

PaaSAgent简介

paasagent目录是PaaS平台中应用引擎(appengine)对应的agent模块源码目录

主要作用是:

  • agent需要部署在应用服务器上
  • 负责接收上层应用引擎(appengine)的请求指令,执行SaaS应用的部署和下架等任务操作(应用运行时环境的构建和进程托管)

技术栈:

  • framework: labstack/echo
  • python run time: virtualenv, uwsgi

依赖说明:

  • paas: 使用内置应用时,从paas服务下载用户上传的saas部署包。
  • appengine: 需要调用appengine的接口, 回写SaaS应用的部署日志。

部署脚本原理

当你执行./saas-base-install.sh install都干了什么?

    1. 创建SaaS需要的MySQL数据库(所以,安装PaaS的时候需要安装MySQL客户端,就是为了执行初始化)
    1. 创建SaaS需要的MongoDB数据库(所以,安装PaaS的时候需要安装MongoDB客户端,也是为了执行初始化)
    1. 导入资源平台(CMDB)的内置模型。(所以,安装完毕之后,打开资源平台-资源模型,有很多内置的数据)
    1. 增加SaaS应用的环境变量到PaaS平台中。(SaaS的数据库等配置是保存在PaaS平台上,安装的时候从PaaS平台获取,然后以环境变量的形式传递给程序)
    1. 执行deploy.py进行SaaS部署。该脚本的本质就是帮你上传和点击部署按钮。

SaaS包部署流程

不管是使用saas-base-install.sh调用deploy.py进行部署还是手工在开发中心-内置应用-进行部署,流程是一致的。 PaaSAgent会为每个SaaS创建Python虚拟环境,并且使用Supervisor+uwsgi启动,通过PaaSAgent的Nginx进行转发。所以PaaSAgent容器重启后,需要使用脚本手工启动所有的SaaS平台。

  1. 点击上传按钮时,上传SaaS包。包会被保存到PaaS容器中的/opt/opsany/paas/paas/media/saas_files/目录下。
  2. 点击部署按钮时,PaaSAgent从paas服务下载该文件,保存到paasagent容器的目录下。 具体paas的地址是在paas_agent_config.yaml中配置的PAAS_SERVER_URL参数获取。
  3. paasagent在目录下创建对应saas的Python虚拟环境。
  4. paasagent解压下载的saas包,并安装pkgs下所有的依赖包。
  5. paasagent为saas创建一个supervisor服务,自动生成supervisor的ini配置文件。
  6. paasagent通过supervisor启动saas服务。
  7. 执行django migration操作。

独立容器部署SaaS(待发布)

独立容器部署SaaS的方式为单个SaaS平台独立启动,监听一个Web端口,然后通过Nginx将请求转发至该端口。

案例:工作台访问

监听端口:7002
请求地址:/o/workbench
请求转发:192.168.56.11:7002

为了方便后期运维进行配置优化和性能调优,在部署时,会将每个SaaS需要挂载的配置放置在"\({INSTALL_PATH}/conf/opsany-saas/\)"目录下。然后挂载到个各个SAAS平台容器中。

[root@opsany-prod ~]# tree /opt/opsany/conf/opsany-saas/workbench/
/opt/opsany/conf/opsany-saas/workbench/
├── workbench-init.py         # 工作台workbench项目配置文件(修改访问域名时使用)
├── workbench-nginx.conf      # 请求转发到uwsgi的Nginx配置文件(通常不修改)
├── workbench-prod.py         # 工作台workbench项目配置文件(修改例如数据库配置时使用)
├── workbench-supervisor.ini。# 工作台workbench服务启动配置文件(通常不修改)
└── workbench-uwsgi.ini       # 工作台workbench的uwsgi配置文件(性能调优时使用)

SaaS端口明细

  • 统一权限rbac:7001
  • 工作台workbench:7002
  • 资源平台cmdb:7003
  • 管控平台control:7004
  • 作业平台job:7005
  • 基础监控monitor:7006
  • 云管平台cmp:7007
  • 堡垒机bastion:7008
  • 应用平台devops:7009
  • 可视化平台dashboard:7010
Document