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. 学习window系统下的注册表

    一直不明白注册表是一个什么鬼,查了资料后大概明白了注册表到底有什么用,其实简单来说注册表就是一个存放系统.硬件.应用配置信息的数据ku.##### 一.注册表的来历在最早的视窗操作系统win3.x中, ...

  2. java_JDBC(2)

    1.Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement. 2.PreparedStatemen ...

  3. UI进阶 即时通讯之XMPP好友列表、添加好友、获取会话内容、简单聊天

    这篇博客的代码是直接在上篇博客的基础上增加的,先给出部分代码,最后会给出能实现简单功能的完整代码. UI进阶 即时通讯之XMPP登录.注册 1.好友列表 初始化好友花名册 #pragma mark - ...

  4. nodejs笔记2 --关于nodejs最新启动方式

    1,运行应用以前是node app.js或者 supervisor app.js 2, 现在的应用方式是npm start或者supervisor bin/www

  5. 使用批处理根据项目工程文件生成Nuget包并发布(支持.NET Core)

    最近在使用之前自己编写的批处理给.NET Core项目打包时出问题了,发现之前的脚本根本不适用了,折腾了半天,总算解决了.因此在这里分享下经验,并且奉上整理好的脚本. Nuget包这里就不多介绍了,需 ...

  6. JUnit与JMock学习

    JUnit与JMock学习 测试驱动编程和持续集成部署应该说是现在软件开发者的必备武器,不过跟其他很多好东西一样,在我们公司的推广总要慢上一拍,毕竟老板看的是你能够把功能实现好让客户满意,所以能不折腾 ...

  7. spring+struts2+ibatis 框架整合以及解析

    一. spring+struts2+ibatis 框架 搭建教程 参考:http://biancheng.dnbcw.net/linux/394565.html 二.分层 1.dao: 数据访问层(增 ...

  8. kbhit()的三个测试

    #include <stdio.h> #include<conio.h> #include<stdlib.h> int main() { ; system(&quo ...

  9. BZOJ 1096: [ZJOI2007]仓库建设(动态规划+斜率优化)

    第一次写斜率优化,发现其实也没啥难的,没打过就随便找了一份代码借(chao)鉴(xi)下,不要介意= = 题解实在是懒得写了,贴代码吧= = CODE: #include<cstdio># ...

  10. java学习笔记——IO部分(遍历文件夹)

    用File类写的一个简单的工具,遍历文件夹,获取该文件夹下的所以文件(含子目录下的文件)和文件大小: /** * 列出指定目录下(包含其子目录)的所有文件 * @author syskey * */ ...