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性能监视器中获取。

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.基于此项目版本创建自动部署(点击后如下图)

按环境部署,选择某个环境,将会基于选择的环境下所有服务器进行部署。

按自选部署,选择某个环境,将会显示其下所有服务器,允许自由选择部署某些服务器。

点击部署后跳转到“部署机器人”

【G】开源的分布式部署解决方案文档 - 使用手册的更多相关文章

  1. 【G】开源的分布式部署解决方案文档 - 手动安装

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 序言 因各种原因,决定先写使用文档.也证明下项目没有太监.至于安装过程复杂,是因为还没有做一键安装,这个现阶段确实没精力. 项目进度 (点击图片 ...

  2. 【G】开源的分布式部署解决方案文档 - Web Deploy

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 微软官方部署方式 右键项目->发布 这个大家应该再熟悉不过,在部署前有个预览界面可以看本次更新到底更新哪些文件. 既然它可以预览部署结果, ...

  3. 【G】开源的分布式部署解决方案文档 - 部署Console & 控制负载均衡 & 跳转持续集成控制台

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 设置项目部署流程 项目类型:选择Console,这个跟功能无关,只是做项目分类,后面会有后续功能 宿主:选择Console 部署方式:选择原始, ...

  4. 【G】开源的分布式部署解决方案(一) - 开篇

    做这个开源项目的意义是什么?(口水自问自答,不喜可略过) 从功能上来说,请参考 预告篇,因自知当时预告片没有任何含金量,所以并没有主动推送到首页,而是私下的给一些人发的. 从个人角度上来说,我希望.n ...

  5. 【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析

    G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 [G]开源的分布式 ...

  6. 【G】开源的分布式部署解决方案 - 预告篇

    为什么想到要做分布式部署解决方案? 当项目越做越大以后,你会发现部署变成一件极其头疼的事情.当然头疼的绝不仅仅在部署一个环节,比如新服务器环境搭建当中就许多坑要踩.各种重复性的工作,包括但不仅限于增加 ...

  7. 【G】开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的

    分析目前项目结构 眼前出现这么一坨坨的文件夹,相信很多人已经看不下去了.是的,首先就是要把它给做掉. 按照这个项目文件夹的命名意图,大概可以划分如下: 1.Business:业务代码 2.Data:数 ...

  8. Rhel6-hadoop分布式部署配置文档

    理论基础: Hadoop 分布式文件系统架构 HDFS 负责大数据存储 MapReduce 负责大数据计算 namenode  master守护进程 datanode  slaves上负责存储的进程 ...

  9. _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0

    笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

随机推荐

  1. Program terminated with signal SIGKILL,Killed

    车载后视镜机器,Liinux + qtUI形式,前后双路,前一天晚上开机用gdb run DvrUI,第二天早上回来一看,机器绿屏卡死了,录像预览停止刷新了,sd录像也停止了.点击无任何反应. 看gd ...

  2. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  3. 《微信小程序七日谈》- 第七天:不要捡了芝麻丢了西瓜

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩: 第五 ...

  4. sql增删查改

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  5. spring事件驱动模型--观察者模式在spring中的应用

    spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用,关于观察者模式在之前的博文中总结过,http://www.cnblogs.com/fingerboy/p/5468994. ...

  6. redis-如何在工程中使用redis

    这里,我们介绍下如何使用redis作为缓存服务器使用在我们的工程中. 使用思路 对于java中的使用redis提供了一个jedis的jar包.我们在安装好我们的redis服务器以后,只需要通过redi ...

  7. Jenkins的插件

    Jenkins不仅自己为大家提供了很多功能,而且还支持插件.用户可以根据自己的需要安装插件,或者是自己开发插件. 这里说一下Jenkins的插件的安装方法: 首先,打开Jenkins首页,选择Jenk ...

  8. PLSQL触发器

    触发器权限 数据库创建用户时想要在本用户下使用触发器,需要给用户触发器的权限 使用DBA用户执行  GRANT CREATE TRIGGER TO user_name; 如果想在当前用户下创建其他用户 ...

  9. matlab 利用while循环计算平均值和方差(第二版)

    第一版中因为公式中含有:分母项:n(n-1),而程序并没有对输入数进行判定,如果仅仅输入一个或者一个都不输入,将会出现除0的情况 基于此,进行第二版改进. 代码: % 脚本文件:states.m % ...

  10. BZOJ 3479: [Usaco2014 Mar]Watering the Fields(最小生成树)

    这个= =最近刷的都是水题啊QAQ 排除掉不可能的边然后就最小生成树就行了= = CODE: #include<cstdio>#include<iostream>#includ ...