运维编排场景系列----基于镜像的日常发布
运维编排(OOS) 简介
什么是OOS
Operation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更详细的介绍请查阅 运维编排服务。
场景介绍
我们在使用ECS的时候要时长的面临更新软件的问题,如运行的后端服务版本更新,安全打补丁等情况。我们可以使用ECS镜像来维护需要更新的程序版本,更新好镜像后对需要发布的机器更换下系统盘重新启动就能完成对单台机器的程序更新。对于在线上运行的机器我们需要分批的去更换系统盘。
总结下来,我们需要做的操作如下:
- 更新镜像 启动一台新的机器或者在一台上执行命令后打成一个镜像
- 用新镜像分批更新系统盘
对于以上操作我们一步一步的操作实在是太繁琐了,这种发布流程是对运维人员的考验,一个不留神可能就出错了,那么我们有没有自动化方案呢?有!使用运维编排
解决方案
机器分组
首先建议对机器进行分组,可以给机器打上相应tag,比如我们可以给我们的ecs按环境来分组env:test和env:product 这样比较方便管理,批量执行时候只需要选好相应的标签即可。
打镜像
然后我们需要解决更新镜像的问题,有了ECS云助手我们有了到机器上执行命令的通道,而OOS可以编排云产品的API,我们可以将一系列命令编排起来执行。更新镜像的话我们可以帮可以按原有镜像启动一台ECS,在ECS上执行命令,执行成功后关闭当前实例并给当前实例打镜像生成镜像然后,然后再释放临时实例。如下图所示
以上步骤可以用OOS模板一步搞定,请到OOS控制台执行更新镜像
并填写相应的参数
执行后,需要运行一段时间,我们可以看到运行的步骤和运行结果
最后生成了一个新的镜像ID。
批量更新系统盘
这个步骤就相当于对每台机器执行,停止机器,等机器变成Stopped,更换系统盘,把机器启动,等机器到Running,循环直到所有机器操作完毕,这个过程如果对于机器少还可以手动完成,机器多的话手动操作那一定疯了。
通过OOS也可以比较简单的解决这个问题,到OOS控制台搜索系统盘,找到批量更换系统盘模板
创建执行,选择实例,这里可以手动选择实例也可以按tag来,我之前已经给机器打好了标签env:test这里就用tag来操作,批次控制支持并发执行和分批执行,这两个的区别是并发执行永远保持n个允许中的,而分批执行是执行完第一批再执行第二批,我这里就选并发执行,每次1台。
点击执行,我们可以看到已经在运行中了,并且符合预期的在一台一台的执行
等待操作成功,整个分批更换系统盘的操作就完成了。最后看控制台结果符合预期。
总结
我们通过以上步骤实现了一套ECS基于镜像的发布流程。如果我使用了负载均衡 ECS挂载到了SLB上,希望在替换系统盘前先从SLB移除下来 更换好再挂载上去实现无缝升级能做到吗? 这两个步骤有办法合并成一个模板吗? 有办法在提交代码后自动触发整个过程吗?
答案当然是肯定的,CI以后调用OOS aliyuncli或者sdk做集成触发模板就可以了,对于全自动整个过程,可以自定义模板来做,我们也整打算把这个功能变成一个公共模板来使用。我们帮助一个客户实现了整个流程大大的提升了客户的运维效率,带来自动化的同时为客户也提供了白屏化的操作工具。将整个发布过程变得顺畅透明安全。
系列文章
主题文章
最佳实践
玩转运维编排服务的权限:Assume Role+Pass Role
阿里云运维编排新功能:一键批量克隆ECS
批量在多台ECS内执行命令
场景系列
运维编排场景系列----更新ECS镜像
运维编排场景系列----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
运维编排场景系列----每日统计多Region实例的运行状态
运维编排场景系列----如何使用jq
运维编排场景系列----分批到机器上运行命令
运维编排场景系列----更新镜像后自动更新伸缩配置镜像
运维编排场景系列----向Linux实例上传文件
运维编排场景系列----运行远端shell脚本
运维编排场景系列----在ECS实例上运行Ansible-playbook
运维编排场景系列----下载JVM堆栈到OSS
运维编排系列场景----将实例的固定公网IP转换为其它新EIP
运维编排场景系列----自动定时升级临时带宽
运维编排场景系列----批量更新云助手客户端
运维编排系列场景----批量释放实例
运维编排场景系列----ECS实例系统快照下载到本地
运维编排场景系列----批量更换系统盘
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
存储容量单位产品(公测)发布
产品介绍: 存储容量单位(Storage Capacity Unit,简称SCU)是一种预付费的存储售卖形态。您购买存储容量单位后,可以抵扣同一地域下按量付费云盘的计费账单,适用于多种云盘类型。相比于随包年包月ECS实例购买云盘的模式,存储容量单位SCU与按量付费云盘的组合使用,兼具性价比与资源使用的灵活性。适用客户: 相比于随包年包月ECS实例购买的包年包月云盘或者直接购买的按量付费云盘,存储容量单位SCU兼具了性价比与资源灵活性,适用于需要更灵活的云盘创建方式但又希望降低存储成本的场景。典型的应用场景如下所示:1)不同运行环境如开发环境、测试环境和生产环境之间需要频繁联动和调整,例如DevOps、微服务、CI/CD场景。2)已规划季度或者财年的费用预算,需要集中采购或者提前预支的场景。发布功能: 存储容量单位具备以下功能:1)
- 下一篇
定制你私有的前端部署到ECS服务器(Github CI/CD)
近来手痒,又陷入了自我捣腾的无限循环。 其实事情是这样的,最近阿里云搞活动(嗯,友情打广告),229买了个3年版低配服务器;前端时间写用React + Github Graphql API自定义你的博客, 见识了Github Action的强大,所以就尝试打造自己的前端构建部署工作流程;也许你看到过很多大厂的前端自动构建部署,但鲜有尝试,今天就可以自己动手啦,撸起来吧。 从workflow看流程 Github Action workflow大概长这样: name: Deploy static source to my server on: push: branches: -master jobs: build: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v1 - name: build run: npm install && npm run pub - name: deploy uses: closertb/deploy-static-action@master with:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19