持续化部署教程(一) 知识体系与实现目标

1.开篇明意

1.1 整体结构图

首先,这张图不是我的原创,而是其他老师教程中归纳和总结的,流程和结构非常清晰,所以我本着“拿来主义”的精神,就直接引用了,为这位无名英雄点个赞吧。
在这里插入图片描述

1.2 结构介绍

从图中不难看出,整个持续化部署分为四个阶段,开发者提交代码到Git,Jenkins代码打包,生成docker镜像,根据宿主机的不同启动docker容器。

  1. 开发者提交代码到Git
    这里没有什么可讲的,程序员提交个代码,这再普通不过的事情了,如果这个还不会,就可以去墙角画圈圈了。
    知识点
    图例说采用的是Git,其实用SVN也能同样实现,并没有什么实质性区别。
  2. Jenkins代码打包
    Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台,也是可持续化部署的核心,我们会在后续章节中对Jenkins的功能进行讲解。(我居然在美剧《硅谷》中见到了Jenkins的界面,这个应该算是个彩蛋了。)
    知识点
    真实应用中,Jenkins需要在调用Maven进行打包,区分应用场景,根据场景不同分配不同的配置文件。
  3. 生成docker镜像
    我们可以将Jenkins打包好的war包、jar包,通过dockerfile生成docker镜像,并推送到仓库中,为发布应用做准备。
    知识点
    docker的官方仓库是在国外的,所以我们在后续章节会给大家介绍如何搭建私库。
  4. 根据环境启动docker容器
    这一步骤,是结合了Jenkins的流水线发布和docker容器技术,根据应用环境拉取镜像,生成容器,启动应用。
    知识点
    shell脚本会给我们很大的帮助。

2.为什么要做持续化部署(讲个故事)

讲一个我自己团队的故事,2016-2018年,我和团队的精力一直放在公司核心系统的搭建上,试图将公司所有的公有服务抽离成各个分布式服务,避免重复开发造成的资源浪费,降低运维复杂程度。2年下来,前前后后归纳了十几个中心,为了项目强壮和稳定,我又做了Nginx负载,将十几个服务分成两套机组,希望通过这样的部署结构能够保证项目的稳定,而发布模式还是传统的tomcat+war包。

2.1 我们遇到的问题

  1. 发布项目是种修行
    随着业务系统的不断融合和需求扩展,核心系统需要支撑的功能也在不断增加,每天都有新业务上线,发布项目就成了一种折磨。先进行测试环境验证,测试环境验证无误后发布到正式环境。
    每次发布都需要经历编译、打包、上传服务器的过程,十几个服务*2套机组,A机组下线B机组单向负载->部署A机组->A机组上线->B机组下线A机组单向负载->部署B机组->B机组上线->恢复双机组负载,整个过程没有2-3个小时是无法完成的,还无法保证升级过程中是否存在脚本执行、配置文件覆盖等难免发生的错误。
    在这里插入图片描述
  2. 测试效果不一致
    测试机组和生产机组的系统环境,代码版本都可能存在差异,造成的结果就是很多时候测试环境没问题,发布到生产环境就一堆问题,每次事故总结会,测试、开发都一脸委屈。

2.2 解决方案

  1. Jenkins的作用
    Jenkins的出现无疑是解决整个问题的核心,只需点击项目发布,从打包、上传项目、部署项目,1分钟内就可以实现一个服务的发布,整个机组全部升级完成不超过10分钟,整个发布过程给人带来极大的舒适感,也避免人工发布时的各种失误。
  2. 相同的环境
    将项目发布到docker容器中,容器本身具备完整的应用环境,使得测试环境与生产环境完全一致,避免了因为环境因素造成的测试偏差。
  3. 快速扩容
    基于Jenkins和docker的红利,我们将以前部署一套项目按天为单位缩短为现在按分钟为单位。以今天为例,我为核心系统采用持续化部署横向扩展了一套机组,总共花费了不到2个小时,如果采用云主机的镜像功能,时间还会更短。

3.结语

这套博客会持续更新,主要分享如果进行持续化部署的搭建过程,在时间和水平都有限的情况下,只能将当前掌握的知识分享给大家,作为一种记录和内部分享教程,如果能给您带来帮助,那就是我最大的幸福,如果您发现其中有某些错误,也请您不吝赐教,在留言区给我留言。我们一直在采坑的路上,我们一直如此心知肚明,最后,祝大家学习愉快。
后记
现在的这套博客是在2019年版本上进行的第二次修正(最近一段时间章节上会稍微乱一点),本来想再重新写一个栏目,考虑主体内容基本相同,没必要滥竽充数,也会给大家造成阅读上的困惑,所以就在已经发布的博客上进行修正。使用docker的一年多来,发生了很多事情,遇到了很多问题,也解决了很多问题,我会在稍后的博客中对章节进行增减,务求从实战出发,从零基础起步,让大家都能按照教程逐步实现整个搭建过程(2020-03-26记)。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值