中小型运维团队运维自动化平台设计Tyroney

我们今天的话题是中小企业如何实现自动化部署。那么,为什么定位中小企业呢?

因为往往中小企业面临着运维人员有限,成本投入有限,但是版本更新快,而且服务器数量却并不少的情况。

中小企业甚至,基本不会投入运维开发来开发自动化部署平台。那么,我们今天就拿运维工程师都熟悉的Shell进行举例,谈谈如何来进行一个自动化部署的设计。

在开始之前我们需要先统一认识,在IT管理里面有三大核心要素,简称PPT,即:

所以说设计一个自动化部署系统,并不简单是上线几个工具,写几个自动化脚本这么简单。不过本文我们简化流程,主要是聊聊生产环境的自动化部署系统。

同时通过这个“PPT”,我们也认识到了,设计一个流程,除了流程本身要和我们的组织架构、人员和技术挂钩,也需要根据企业的实际情况来做,不能好高骛远,梦想着一上来就设计一个庞大的自动化部署平台。这可能并不符合企业现状,又浪费了资源。

同时还有一点就是流程思路很重要,具体的实现方法很多,看团队的技术水平,可以使用Python、Shell、PHP等来实现。

好的,我们统一了认识,下面来确定下目标。中小企业的部署现状就是更新快,可能经常性的测试不到位(所以,就需要快速回滚)。单业务的集群规模在基本上在100台以内。那么我们的主要目标是:

本文的重点就是流程设计。上面说了,由于篇幅有限我们简化流程。完整的上线流程,可能经历开发环境、测试环境(功能测试、性能测试、预生产测试)、生产环境。

本次我就来谈谈生产环境如何自动化部署(假设现在新的功能已经在开发和测试环境就绪,Git或者svn仓库已经存放了可以上线的代码)。

我相信有读者目前的上线是使用管理工具,批量在所有服务器上执行svnupdate或者gitpull。当然,我还见过每次上线执行rsync进行代码部署的。

我们下面的流程或许会彻底改变你的思路。不要惊讶,原本上面的方法也没有什么错,只要符合企业需求就可以,但是我们可以做的更好。

直接上部署流程图:

流程分析

我想,看到这样的流程可能很多朋友在心中会有一些疑问,我们慢慢来分别阐述下,这样设计的思路、设计原则和目的。

这一步的疑问最少,我们可以通过svn或者git进行获取,也可以指定svn版本号或者git的tag,commitid,或者直接获取最新代码都可以。

注意,你需要在专用的部署服务器进行这样的操作,而不是各个Web服务器。

这个是可选的,如果你是Java,则需要进行编译,比如Ant或Maven就可以方便的帮你完成,Python和PHP则不需要进行编译操作,可以忽略。

prod_web_xxxxx_2015-09-09-10:103.匹配环境配置文件这样,你这个部署系统(脚本)可以支持多个环境。这里有人会问配置文件不应该在代码仓库里面吗?

不是的!至少重要的和差异性的配置文件是需要单独进行管理的,尤其是涉及到支付、验证类的配置。

直接使用tarczf打一个包就可以了。

现在可以将需要部署的代码包COPY到目标服务器,比如你可以使用SCP。同时你可以在打包的时候给这个包生成一个md5文件,scp完毕后可以使用md5sum验证一下包的完整性。

先举一个反例,有些朋友可能这样操作,在部署时,直接部署和重启Web服务,让负载均衡的健康检查工作自动将节点踢出集群?

想这么搞的话的朋友,需要想一想了,这做法也太暴力了。

所以,我们要提前将要部署的后端节点拿出集群,比如Haproxy,你可以通过socat和HaproxyUnixSocket进行通信,实现部署节点的开启和关闭,如下所示:

关闭节点:echo"disableserverwww_example_com/web-node1"|socat/usr/local/haproxy/haproxy.sockstdio启用节点:echo"enableserverwww_example_com/web-node1"|socat/usr/local/haproxy/haproxy.sockstdio7.解压软件包在目标服务器上解压这个软件包,无论你是用管理工具如Saltstack还是SSH都可以轻松搞定。

好的,这就是我们设计的重点了,我们使用软连接的方式来管理包的更新。比如我们的Web根路径是/var/www/html/webroot,我们把所有的代码都存放在/data目录下,那么webroot实际上是一个软连接,它链接到当前的版本,比如prod_web_xxxxx_2015-09-09-10-10。这样的话,webroot实际是这样

webroot->/data/prod_web_xxxxx_2015-09-09-10-10/我想,很多朋友,看到这里就明白了,这回滚绝对是秒级啊,只需要重新创建一个软连接即可。

同一个集群中,存在不同的配置文件,这很常见,比如我需要在某个节点跑一些定时任务,比如Java可以使用Quartz来实现,只需要一个crontab.xml即可,那么我们就需要把这个差异文件在这个时候scp进去。

如果有的话,当然好了,你调用一个接口就可以进行测试。然后等待测试完毕再继续。如果没有测试团队提供这样的接口,那么curl可以帮你轻松的实现,把重要的接口访问一遍,判断下返回码或者返回内容即可。

好的,这个节点部署完毕了,把他加入集群吧。还记得刚才说的socat吗。

说了这么多,原来只是一个节点啊。那么继续吧,可能这个只是for循环中的一部分哦,是不是想到了shell该怎么写了。

分组部署:

为什么要分组?上面的流程中,你会发现,每次部署都会在重启和自动化测试那里等待好久。

答案就是分组部署,将该业务的服务器进行分组,比如group1、group2、group3:

日志记录:

没有日志记录功能的脚本就是耍流氓!你必须清楚的知道目前脚本在干啥,干到哪里了,如果有报错就可以及时的定位问题。

部署服务器双机:如果这台部署服务器宕机会怎么样?所以这台部署服务器必须是双机的。包括部署脚本应该是使用svn或者git来做版本控制。应该有详细的部署脚本的设计、使用文档。别忘了,文档化建设是流程设计必备的内容之一。

我想经过部署流程,大家很容易就想到了下面的流程,我们主要可以简单的阐述下:

OK,这是一个回滚的流程。如果仅仅这样是远远不够的,别忘了我们的定位是中小企业,往往我见到更多的情况是回滚是遇到了没有测试出来的比较大的bug。

那么我们就需要一个紧急的回滚流程。这种情况下,暴力一点可能是最佳选择了。

好的,我们的流程设计结束了,先在脑子里想明白,然后拿起Shell开始实现吧。会有很多小细节需要注意哦,我相信这难不倒你。

问:有没有完整的自动化部署的流程图可以参考?

还真有,之前画过一个,请大家参考。目前我们IAAS这块主要以OpenStack为主,Mesos+Docker也正在研究中。

问:你们是否考虑使用Jenkins来实现自动化部署呢?

实际上,我们测试环境的自动化部署是使用的Jenkins。开发可以自助进行部署操作,同时也集成了代码审查和代码质量管理的流程。

但是我们生产环境没有使用Jenkins,主要是我们自动化测试还跟不上,往往很多发布需要人肉测试。整个流程无法完美衔接,所以就分开了。所以我们生产部署其实产品发起,测试审核(测试),然后测试人员进行部署上线。

而且生产环境并不是测试人员ssh到服务器执行我们编写的脚本(他们没有权限),我们基于SaltStack开发了Job管理平台,测试人员在Job管理平台上进行部署操作。

问:部署的一致性怎么保证的,比如刚更新的服务器和集群中的其它服务器版本不一致?

首先,日常的变动和更新是不会有这样的问题,如果有大的变动,不推荐在运维部门来实现,更好的实现方法是:比如在SOA的各个服务之间,加入API版本号的实现,实现多个版本并存。

如果你发现有不一致的情况,试试Nginx的ip_hash,或者Haproxy的source的负载均衡算法,让某个用户的请求一直落在某个节点,即实现了会话保持,也解决了你的疑虑。这样做当然也有很多缺点,看你的选择了。

问:我们是否可以将线上部署修改为本文设计的流程?

欢迎使用,而且我们后期还会提供Shell脚本模板。

这个流程的设计背景是一个电商的架构,物理机+虚拟机,供300多台的规模,使用了SOA。

THE END
1.2024做企业网站公司top5:引领视觉设计潮流的五大网站设计团队在数字化浪潮的推动下,企业网站已成为品牌形象的重要窗口。而那些能将创意与技术完美结合的网站设计团队,无疑是推动这一潮流的中坚力量。今天,就让我们一同揭开2024年企业网站设计领域的神秘面纱,探索那些引领视觉设计潮流的五大网站设计团队。1.上海互橙 位于创意之都的上海互橙,以“让设计呼吸”为理念,将艺术与https://baijiahao.baidu.com/s?id=1817488725568646337&wfr=spider&for=pc
2.程序员工具网站推荐ping.pe服务于广大站长,设计团队为各类项目提供持续的创意、设计与后期支持。执行团队保证设计方向;项目经理提供流程与进度控制;设计团队配置以视觉设计师、交互设计师、动态设计师以及设计执行团队等保证创意设计整合与输出。运营团队还提供网络营销解决方案,SEO团队为企业布局电子商务平台,同时提供售后客服。https://blog.csdn.net/nilhave/article/details/91349360
3.网站建设公司哪家强?网站设计理念解析品牌形象在数字化浪潮的推动下,网站已成为企业品牌形象的重要展示窗口。那么,在众多网站建设公司中,究竟哪五家脱颖而出,成为行业佼佼者呢?本文将为你揭晓答案,并解析这些公司的网站设计理念。 一、网站建设公司盘点 互橙文化 互橙文化以出色的创意设计和服务著称,他们将用户体验放在首位,致力于打造富有创意和个性化的网站。 https://www.163.com/dy/article/JJKF9IO10556ABQ1.html
4.电商运营方案(通用17篇)九、平台运营团队职员主要包括 运营总监:负责平台整体运营,团队管理,把控项目的方向和进程等。 活动策划媒介:平台推广活动的营销策划,宣传渠道管理; 美工:平台的页面设计与页面的人性化互动沟通; 后台程序:实现后台的功能程序开发; 网站推广:通过互联网和传统媒体或其他方式推广网站; https://www.ruiwen.com/yunyingfangan/6202039.html
5.2023美团平台设计团队SHOWREEL美团平台设计团队美团平台设计团队 机构 北京/设计爱好者/311天前/36210浏览 版权 可能感兴趣的人 下次默认收起 宅系生物 创作37粉丝11229 躺倒鸭 合肥| 设计爱好者 创作52粉丝3166 movava 呼和浩特 | 设计爱好者 创作8粉丝5033 gnyefo 创作11粉丝2922 风中凌乱的小笼包 https://m.zcool.com.cn/work/ZNjc3MTgwODg=.html
6.设计协作平台腾讯云开发者社区是一种基于云计算技术的在线协作工具,旨在帮助设计团队或个人进行设计项目的协作和管理。它提供了一系列功能和工具,使设计师能够在一个统一的平台上进行设计、交流和协作。 设计协作平台的主要分类包括以下几种https://cloud.tencent.com/developer/information/%E8%AE%BE%E8%AE%A1%E5%8D%8F%E4%BD%9C%E5%B9%B3%E5%8F%B0-album
7.光伏电站三维数字化设计与性能仿真平台白建波团队并与华为公司建立了实证性的合作关系,共同研发我国光伏屋顶数字化与设计仿真平台。 4736 次浏览 分享到 团队详情 团队简介 白建波,博士,教授,博导,2019年度获得中国电力科学技术进步二等奖,2020年度江苏省科学技术进步三等奖,2016年度入选江苏省六大人才高峰。团队目前拥有骨干成员4人,其中博导1人,教授2人、副教授https://jlzx.jspc.org.cn/abutment/expertteamdetail?id=96989
8.抖音团队需要哪些人?抖音团队组建方案抖音运营自媒体抖音短视频(原创短视频分享平台) v31.7.0 安卓手机版 类型:影音播放 大小:267MB 语言:简体中文 时间:2024-10-11 查看详情 抖音团队需要哪些人? 一、主播及经纪人团队 主播: 主播是一场直播出镜最多的人,也是最熟悉产品的讲解和直播间氛围的人。负责直播前熟悉流程和产品,直播时讲解产品。 https://www.jb51.net/zimeiti/832371.html
9.高效的在线团队协作设计平台,值得入手Pixso是一款高效的在线设计平台,他支持了在线网页版直接开始设计,无论何时何地,打开软件官网https://pixso.design/就可以开始设计了,非常的方便。而且,Pixso还专门针对团队协作功能进行了升级,支持项目经理建立、管理自己的团队,根据不同的需求为团队中的成员设置权限。编辑页内置了上千种图标的资源库,可以更轻松的完成https://www.jianshu.com/p/b56d9af0635c
10.创可贴在线设计平台,轻松制作海报/封面图/ppt/电商设计,可分享协作批量设计 批量替换模板中的内容,快速生成海量设计图 用批量设计提升效率 只需三步实现批量设计!第一步,标识替换内容;第二步,上传替换内容,第三步,批量生成。适用于电商设计、员工工牌、多门店促销海报等 批量设计 专为团队合作打造 设计分享 | 沟通批注 | 共同编辑 https://www.chuangkit.com/lpad/cktlp.html
11.蓝湖官网,蓝狐lanhu,高效的产品设计协作平台别摸鱼导航蓝湖(Lanhu)是一款专业的设计协作与交付平台,旨在提高设计团队的工作效率和协作效果。作为设计师和团队之间的桥梁,蓝湖提供了全面的工具和功能,帮助用户管理设计项目、收集反馈、生成规范文档并进行版本控制。高效的产品设计协作平台,无缝衔接产品、设计、研发流程,降低沟通成本,缩短开发周期,提高工作效率! https://biemoyu.com/sites/lanhu.html?menu-id=230
12.京东零售设计服务平台京东零售设计服务平台JDR DESIGN - 隶属于京东零售集团,专注于无界零售下完美购物体验的设计探索与尝试,商业价值与用户体验的平衡。致力于为企业、商家、开发者、设计师及零售行业提供高质量设计解决方案。https://jdrd.jd.com/
13.Pixso产品设计一体化协作平台,集成原型设计白板企业服务在产品设计领域,从产品规划到落地的整合过程,中间大的环节包含需求规划、原型设计、交互设计、界面设计、产品研发、走查、管理等,过程中需要使用多款不同的软件,软件间的文件传递造成了大量的损耗,也增加了团队协作的复杂度。 近日,产品设计一体化协作平台Pixso,相继发布了Pixso白板和Pixso原型,搭配Pixso强大的UI设计能https://tech.china.com/article/20230113/012023_1212437.html
14.ifanr访谈:eicodesign设计团队——谈谈Weico和魅族,谈谈设计和张伟:eico design 目前分为 4 个项目团队以及 1 个动态设计团队,每个项目团队由多名交互设计师,视觉设计师以及一名创意总监组成,而动态设计团队则是平台级的设计团队,支持服务于每个项目的需求,由动态设计总监负责整体调配。 ifanr:在设计领域,只有 6 岁的 eico 显得很年轻,名字也显得很活泼。能说说名字的来历和趣https://www.ifanr.com/26671
15.辨电驱动技术—现代电力传动系统工程设计团队谈EGMP纯电平台关于现代E-GMP平台电驱系统,公众号已进行了多期介绍,有兴趣的可以进行往期查阅。 本期,我们通过现代电力传动系统工程设计团队在公开的访谈内容,从另外一个角度试图来了解E-GMP背后的设计动因。 电机 1.媒体:安装在E-GMP中的PE系统的创新功能之一是电机,逆变器和EV变速器集成在一个单元中。这些部件的集成有哪些优https://www.yoojia.com/ask/17-11804802397124003720.html