【G】开源的分布式部署解决方案文档 - 使用手册
G.系列导航
已知问题
导航没有联动
因为权限只是做了基础的登录校验,考虑到后面导航要跟权限关联,所以暂时是写死的。
只有部分界面使用了Vue.js
因为刚开始没有太多js操作,想着用Razor更顺手更快,到后面做部署界面对前端操作较多,不只是各网页元素的信息同步还涉及到一些公用前端功能点抽取就选择了Vue.JS。
左边导航的Search无效
也是希望与权限关联上,支持搜索各个级别的页面,快速定位,暂时未实现。
设置部署流程的勾无效
目前不管是否勾选,会根据实际参数值是否设置而决定是否启用该流程。如设置了负载均衡,则无论是否勾选“安全部署预处理”都会控制负载均衡。
下拉框数据没有实时查询
目前下拉框的数据都在当前界面加载时只加载一次,除个别界面的下拉框显示是通过联动触发的以外。
一个服务器部署多个项目需要冗余服务器配置(已解决)
目前因为服务器与项目是一对一的关系,已经规划一对多的关系,相信用不了多久就会支持。
数据逻辑关系
使用方法
设置部署项目阶段,按照左侧导航从上到下设置即可。如已设置过可跳过该步骤。
用户管理
注册
目前没有做注册界面,需要在数据库里手动添加,密码是MD5(MD5(password))
修改密码
部署设置
持续集成
核心功能,目前G的部署文件包获取、转发、下载等唯一途径。想想没有部署文件包,那部署的意义何在?
持续集成类型:架构支持插件形式的扩展,但目前只支持了Jenkins(后面例子也以Jenkins为基础)
Json配置:这里偷懒,为了给将来扩展其他持续集成更灵活,所以用了Json。
{
"Url": "http://jenkins.g.com:10010",
"JobName": "Test",
"ArtifactPath": "$deploy",
"AccountNumber": "jenkins.g.com",
"Token": "8640177a00acae9145dc4dc38a7d9de7",
}
Url:Jenkins的根目录
JobName:Jenkins的Job Name,这里要提一下,一个Job生成多个项目包的时候只需要配置一个Jenkins即可。Artifact Name在项目管理界面设置。一方面减少多次配置持续集成参数,另外支持了同一个Jenkisn Job不同项目可以共享生成的文件包。
ArtifactPath:通过Jenins生成的话,每个Job会有一个生成目录。
AccountNumber:Jenkins登录账号
Token:Jenkins API的Token
PS:如对Jenkins不熟悉的可以自行研究下Jenkins或等后续文章对Jenkins的一些简单应用,以配合G进行使用。
Windows性能监视器
搭配负载均衡使用时,可先降权,然后检测关键指标,如正在执行的请求数,等待该数值降到阈值以下再进行部署。为了减少某些业务场景不允许被中断却因部署而强行中断,如下单。
类别名称、计数器名称、实例名称均从Windows性能监视器中获取。
计算机名称:暂时全部留空即可,目前留空会自动替换IP去当前部署的服务器检查Windows性能监视器中的指标。
阈值:小于阈值表示可以正常部署,那如果有长连接永远断不开怎么办?嗯,在项目界面有个最长等待时间作为双保险。
项目组
提供一个虚拟的项目分组,暂时并没有实质的功能。目的是为了把几个项目按照一定的逻辑捆绑在同一个虚拟分组内,做一个业务分层。
设置也只需要一个分组即可。
项目
项目基础属性
项目组:用于指定归属于哪个虚拟项目分组
项目类型:目前只支持Web的部署,后续会支持Windows Service,Winform/Console等。
宿主:目前只支持IIS,后续会支持自宿主。
宿主属性:目前只支持IIS,所以目前只需填写 应用程序池名称
绝对路径:指网站的根目录的上一级目录,这里有一个约定,IIS站点的根目录名称需要与Jenkins的Artifact Name(部署文件包名)相同
例如你的网站都放在 c:\ProjectInstance ,而你目前有个网站叫 G,部署在 c:\ProjectInstance\G ,那么此处填写的是 c:\ProjectInstance,而Jenkins生成的Artifact Name也必须是 G.zip
部署异常处理参数
自动重试部署次数:部署过程中可能会遇到一些预计中的错误导致的部署异常,如触发缓存Url的时候超时,但实际再尝试一下即可。当你也有类似业务的时候,即可设置此参数为你想要容错的次数。
部署异常阈值:如果你有10台做了负载的服务器时,预计挂2台服务器可以接受,那这里可以设置3,当有第三台服务器出现异常时才会停止后续的部署。
部署流程
(点击图片看大图)
持续集成:选择上面已经设置好的持续集成
持续集成包名:从指定的持续集成配置中找到你需要部署的zip包。格式为 xxx.zip,生成的包也必须是zip,因为目前只支持自动解压zip且是必须的。
负载均衡:架构上也支持负载均衡的插件扩展,目前只支持阿里云,当然如果你是单机、或不需要关心负载均衡在部署过程中的作用也可以不设置。
负载均衡值:如负载均衡选择的是阿里云时,此处需要设置 阿里云负载均衡的实例ID
Windows性能监视器:正式部署前的安全检查
最大等待时间:当选择了Windows性能监视器时,如果性能监视器始终无法降到阈值以下,也提供了一种保险机制可在等待超过时间后强制部署。
触发缓存Url:部署完成后如果有缓存预热界面,在此处设置即可。目前只支持Http Get请求。
环境标签
虚拟环境分组,推荐使用如 开发、测试、仿真、生产 等。
环境
同一个项目配置可以应用于不同环境,允许项目部署的时候选择部署环境且支持一次部署多个环境公用。
环境虽然也是一个虚拟分组,但却与服务器有强关系,用于分隔服务器边界。结合项目中指定的项目来划分项目的环境边界。
环境标签:选择所属的虚拟环境分组
项目:选择关联的项目,创建多个环境指定到一个项目,则意味着这些环境的部署将使用同一个部署文件包。
服务器
服务器标识:如果使用阿里云服务器,且要搭配负载均衡使用,此处填写 ECS实例ID。否则暂时可随意填写,本字段目前主要用于负载均衡控制
部署环境:指定当前服务器所属的部署环境,隐含项目关系
部署
部署管理
选择项目可进入部署管理的项目界面
部署管理-项目
点击创建部署任务,可以创建一个部署版本
创建部署任务
版本号:首次创建默认为 1.0.0.0,每次默认按.拆分把最后一位+1,也可自己指定
复制版本:在特殊业务情况下,一个Jenkins Job可能生成多个 Artifact,即一次编译多个项目的包,此功能允许多个项目使用同一个Jenkins Job Build下的包(如果你的编译很耗时,且有多层项目依赖,此功能在特殊业务场景下将省去你不少时间)。
部署环境:不选择即只编译不部署,选择部署环境后会自动跳转到部署机器人界面并完成自动部署。
部署机器人
1.正在构建
左下角控制台内包含了构建状态和后续操作的功能按钮。当前展示为Jenkins Job Building状态。
2.构建完成
3.开始部署
点击上图所示的开始部署按钮,将会进入自动部署界面。其中控制台会提供一个概览,如服务器部署数量进度,以及当前服务器进度。右边展示为服务器明细,会同步状态。
4.部署成功
5.部署异常
当部署出现异常时,当前服务器背景变为红色,且多一个 小昆虫 的图标,点击可以显示异常信息。
修复后可在左下角控制台内点击重试部署。
基于已有部署任务的部署
1.切换到部署任务管理界面
2.查看版本描述
3.查看构建状态
4.基于此项目版本创建自动部署(点击后如下图)
按环境部署,选择某个环境,将会基于选择的环境下所有服务器进行部署。
按自选部署,选择某个环境,将会显示其下所有服务器,允许自由选择部署某些服务器。
点击部署后跳转到“部署机器人”
自动签名