目录

前言:

Infrastructure与实例云对应关系

Spinnaker的Bake阶段

Spinnaker的金丝雀分析

持续集成全流程设计:

部署策略

云平台差异性

注意事项:

1 伸缩规则的继承

2 线上服务不可中断

3 按量计费

常见问题:

1 实例创建后状态不能up

2 spinnaker对接AWS后无法正常启动

3 spinnaker对接国内云平台


前言:

前面博文介绍过spinnaker的能力和微服务设计,在系统架构中spinnaker到底如何正确打开呢?我打算花两篇来介绍下spinnaker在我们公司是如何使用的,事先说明这并不代表spinnaker只有这一种使用方式,它的pipeline设计真的是太灵活了。

Spinnaker支持多种云平台,我这里需要把实例云和容器云分开,因为这两种设计思想完全不同,本文先分享下实例云如何使用。

Infrastructure与实例云对应关系

Spinnaker中并没有维护强关联关系,而是通过application-stack-detail三段命名的方式来表示它们的关系。也就是说第一段名称相同的资源就属于同一个app,spinnaker对授权的控制是以app为单位的,所以要在使用spinnaker之前请对自己的产品命名做好规划。

Spinnaker中具有相同application-stack-detail的ServerGroup组成一个cluster,cluster代表某一个服务不同的软件版本。

Spinnaker中的ServerGroup对应云平台的自动伸缩组。

Spinnaker中的firewall对应云平台的安全组。

Spinnaker中的LoadBalance对应云平台的LoadBalance。

Spinnaker的Bake阶段

这个阶段刚接触时感觉非常陌生,我先解释下spinnaker的设计原理和baker实现机制。

Spinnaker的发布策略采用Immutable的方式,发布的交付物是镜像而不是软件包,没有软件包的上传、配置、部署、启动这些过程,只有基于镜像启动实例和销毁实例,用过k8s的同学应该不难理解这种发布方式的优势。

我们会预先制作几个公共基础镜像,里面预装了公共系统组件,然后每个业务线在此基础上完成除软件包以外的所有增量部分并制作成业务基础镜像。而spinnaker的baker阶段会利用packer基于业务基础镜像启动一个临时实例,执行预设的脚本(对于我来说就是更新软件包),然后重新导出为一个业务交付镜像。

Spinnaker的金丝雀分析

Spinnaker为我们提供了一套脱离业务适用于所有场景的测试机制:金丝雀分析。

步骤如下:

1 在spinnaker预配一些比对项目:CPU、内存、IO、Http请求、返回状态等,并为每一项分配一个权重,满分为100分。

2 通过deploy环节部署两个cluster,一个为基线集群,该集群镜像来自生产集群;一个为测试集群,该集群镜像就是待发布的镜像。这两个集群size一般都配置为1,LB都配置成线上的LB。

3 prometheus会采集到这两个新集群的各项指标,

4 spinnaker会去prometheus拉取监控数据按照步骤1的预设规则进行比对和打分。

5 环节最后会根据分数决定是直接发布失败、直接发布成功、还是进入人工干预。(我们配置的是75分以上成功,50分以下失败,50-75之间人工干预进行判断)

原理图:

报告图:

持续集成全流程设计:

从研发在git中打tag,到软件版本上线可以完成全自动发布(spinnaker也支持人工审核环节和手动触发方式,根据管理要求酌情添加)

部署策略

Deploy环节是spinnaker最核心的环节,并提供了多种部署策略,我们最常用的有三种:

1 无策略:只是按配置创建一个新伸缩组,并不关心老伸缩组的状态。

2 Highlander:创建一个新伸缩组,然后销毁掉该cluster内的其它伸缩组。

3 Red/Black:创建一个新伸缩组,然后disable该cluster内的其它伸缩组,并不做销毁操作。

3和2区别在于,Red/Black可以在页面发起Rollback操作,因为老伸缩组还在,只是没有接入流量;而Highlander后无法Rollback,因为老伸缩组已经被销毁了。所以Red/Black用于部署生产环境,Highlander用于部署测试环境。

云平台差异性

Spinnaker在pipeline’中定义了多种stage,例如前面提到的bake和deploy就是stage的概念,stage是通过orca将clouddriver中对接云平台的一系列串行操作封装到一个环节内。但是并不是每一个stage都适用于所有云平台。所以在使用时请事先了解下云平台之间的差异性。

例如FindImageByTag,这个stage适用于AWS,但是不适用于Openstack和腾讯云,因为前者云平台镜像可以打tag,但是后者们的镜像不支持tag功能。

注意事项:

1 伸缩规则的继承

自动伸缩组除开最基本的容量、实例类型、镜像、实例tag等配置之外,还会挂载伸缩策略、schedule、告警策略等高级配置,它们在每种云平台上叫法都不一样,但是功能都是一样的。我们在deploy的时候一定要注意把这些高阶配置复制到新的伸缩组中,否则每次软件迭代后这些配置将会丢失。

2 线上服务不可中断

玩具和产品的区别是能否上生产,我们在使用spinnaker的部署策略或者是自己通过自定义pipeline来达到相同效果时,一定要注意先启动创建新伸缩组的实例后才能做LB的流量割接(这个spinnaker的红黑和highlander已经内置了该部分功能,这里强调这一点主要针对新接入的云平台),否则将会造成生产环境短暂的服务无响应。

3 按量计费

Spinnaker发布思想是Immutable,所以决定了云平台上的每个实例生命周期都不会太长,在下一次软件版本发布时就被销毁重建了,所以spinnaker只支持按流量计费。如果你认为按流量计费要比包年包月计费贵很多,我只能回答你不一定。你只看到了包年包月的折扣,却没有看到弹性伸缩组对资源的超高利用率,所以关键看你怎么用。而按量计费才是云计算的正确使用方式。

常见问题:

1 实例创建后状态不能up

说明实例伸缩组中的实例已成功创建,但是LB到这些实例的健康检查没通过。一般需要排查检查的端口和地址是否有误,还有安全组是否墙掉了健康检查端口。

2 spinnaker对接AWS后无法正常启动

是个因为国内AWS与国外AWS的差异性引起的,因为spinnaker是google和Netflix的产品,所以直接对接国内的AWS有些水土不服。我已经修复了该部分功能并且上传到spinnaker-cn社区,具体可以参考:https://github.com/spinnaker-cn/clouddriver

3 spinnaker对接国内云平台

Spinnaker-cn中已经对接了腾讯云,并已经在我们公司生产环境使用了。2019年8月份阿里云也会加入进来,预计9月份能上生产,我也会持续更新到https://github.com/spinnaker-cn项目中。

Spinnaker第三节-对接云实例相关推荐

  1. 基于感知能力的点云实例分割

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源:OpenCV中文网 论文标题:Instance-Aware Embedding for Poin ...

  2. java对接云点播上传视频,视频转码,播放视频,删除视频

    java对接云点播上传视频并且自动触发转码任务回调更新成m3u8格式的视频 前端拿到签名上传文件,签名加转码参数会触发转码任务,转码任务完成会回调设置的回调接口 /*** @desc:获取上传签名* ...

  3. NeurIPS | 3D-BoNet:3D 点云实例分割的新框架

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文对牛津大学.DeepMind 等单位合作完成的论文<Le ...

  4. 亚马逊AWS EC2云实例AMI安装LNMP环境(1)——Nginx安装

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  5. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  6. 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元(AI_era)   新智元报道   来源:投稿 编辑:元子 [新智元导读]本文提出了一种基于边界框回归的高效点云实例分割算法,通过最小 ...

  7. 京东云服务器做系统,京东云新一代自研云服务器4月上线,云实例承载能力提升2倍...

    3月3日消息,京东云透露,新一代自研京东云服务器将于2021年4月上线,云实例承载能力将比同价格的标准品提升2倍以上.第二代京东云服务器将同时担负起京东集团内部应用支撑,以及京东云对外服务. 在系统设 ...

  8. 腾讯云数据库-劳动节小试牛刀-TDSQL-MySQL 云实例部署体验

    在国家大力发展信创产业的背景下,国产数据库产品百花齐放.TDSQL也开始蓬勃发展,受到了越来越多人的关注.  最近有参加了TDSQL的训练营活动,趁五一劳动节,来写篇文章 . 云产品在我们的脑海中闪现 ...

  9. Oracle Java Cloud系列(02)——创建Java云的应用服务器实例 及 数据库云实例

    本指南为整个系列的第二篇,介绍如何创建Oracle数据库云服务与Java云服务,文章整体将分为下面三个部分: 第一步:创建服务前准备 - 密钥与云存储容器 第二步:创建数据库云服务 第三步:创建Jav ...

最新文章

  1. mysql释放练级_面试官:谈谈Mysql事务隔离级别?
  2. 电脑计算机d盘有用吗,d盘不见了,教您电脑d盘不见了怎么解决
  3. 解决UBUNTU FLASH下显示中文为口的办法
  4. python中碰撞的代码_Python…Tkinter碰撞
  5. 深度学习神经网络的预测间隔
  6. xshell左侧导航栏_Axure教程:(初级)导航中的页面切换
  7. Atitit 写的计算机技术类的书 与it类紧密的学科 atiitt it学科体系化 体系树与知识点概念大总结 v3 t88.xlsx 门类 学科一级分类 专业、二级学科分类 课程 书籍 工学
  8. 解决VS2019配置QT6.1.1出现大量错误信息
  9. AlphaGo Zero:从头开始学习
  10. 阿里云体验有礼:使用RDS和ECS搭建个人博客
  11. IoT产品安全基线(一)硬件安全
  12. 采购证书有了解过吗?
  13. 如何将html转换成url,HTML之Data URL(转)
  14. Wattagio for Mac(电池管理)
  15. 前端VUE图片预加载
  16. SecureCRT显示乱码的解决办法(centos)
  17. 【信息检索导论】第六章 词项权重及向量空间模型
  18. ios友盟错误_iOS之DYSM分析友盟错误信息
  19. 医学分子生物学试题答案
  20. 动态功能连接组:最新技术和前景

热门文章

  1. 以未来式计算机为题目的作文,以器为题的作文800字
  2. 记录一次300G,10E条数据的数据库迁移工作
  3. SpringBoot--多线程处理
  4. html中怎样设置缩进,html如何设置首行缩进
  5. 测试总监: 你这么坚决离职,下家找好了吗?
  6. docker02:run流程和docker原理
  7. 【转】【互联网颠覆传统行业的巿场如何才能做好?】互联网执行力的生动实践:一款软硬结合产品“迭代”诞生的创业者手记...
  8. 互联网企业需要怎样的公有云
  9. 用alert、confirm、prompt与if语句的配合使用来完成一个简单的问答效果
  10. 游侠客php,少年游侠客