背景

本文为大家介绍Capital One如何利用自动化流水线实现Artifactory HA集群进行自动化运维。Capital One银行是美国最大的数字化银行之一,在Capital One的devops体系中应用了JFrog Artifactory HA集群进行软件制品管理。由于Capital One规模庞大并且为满足业务连续性要求,其部署的Artifactory HA拥有primary和DR(灾备)两套集群的架构。在运维Artifactory HA集群维护中通过建设和运行自动化的流水线,在不影响用户使用和业务连续性的前提下,自动地完成了版本升级、配置更新、功能更新,安全检测等工作,并且在检测到问题时,实现自动化的回滚。

流水线总体介绍:

通过Jenkins与Github集成驱动流水线。每个PULL请求触发一个小规模测试并提供快速反馈。每个Merge会触发研发环境HA集群范围的部署,并进行相关测试。标签(Tag)被用来标记代码更新的验证阶段和对应的环境。

使用Terraform创建基础设施,实现蓝/绿的发布。并通过Chef Cookbook完成整个集群内所有角色服务器配置

流水线构成

静态分析流水线

通过对代码静态分析对代码结构进行快速反馈,确保其符合行业标准。同时使用一系列的Linters进行不同类型的代码分析。

安全扫描流水线

Capital One引入DevSecOps概念,能够在产品上线之前进行安全扫描和漏洞检测。安全检查主要使用了静态安全检测通过代码扫描来完成漏洞发现。除了静态检测还通过对比分析,使用Jfrog Xray对依赖进行安全扫描,提高第三方依赖的安全性,并提供修复建议。

单元测试流水线

单元/集成测试,用于验证代码的更新不会破坏预期的功能。主要应用于用户自定user plugin的测试。流水线通过容器方式拉起Artifactory安装并测试这些custom plugin,确保其正确工作,避免在生产环境中进行测试。

构建阶段流水线

本阶段的所有文件都需要部署在一个高可靠的位置,以便在系统运行时进行自动扩展不需要去依赖其他任何系统包括Artifactory。Capital One选择了S3进行外部存储。所有制品与chef cookbook都从Artifactory拉取并存到s3中。

用于部署的流水线

部署流水线需要确保新集群部署不会影响到现有Artifactory提供正常服务。

1 流量切换到DR区域

2 缩容现有集群,减少节点数量并释放license给新的集群使用,Aritfactory集群采用多主架构在所容时不会影响剩余节点的正常工作

3 新部署集群复用原油的数据库与s3存储内容做到无痕切换

4 当新集群完成部署后,业务流量进行回切

5 主集群完成升级后,DR集群进行升级

由于Artifactory使用数据同步机制,因此新节点加入集群的过程对用户透明。

配置测试流水线

在工作节点上线前需要对其配置进行检测,Jenkins通过ssh方式驱动新节点进行测试,确保Artifactory,Nginx,Datadog,Splunk这些工作节点运行正常。

确保所有的工作节点配置文件的内容、位置、权限都部署正确,以及所有的网络端口都正常开通。

系列测试流水线

系列测试是确保Artifactory的各个repositories运行正常。通过容器拉取所有种类的repositories中的包进行测试,同时检测所有virtual repositories,并且需要测新的系统配置是否会影响制品依赖的解析。

性能测试流水线

确保发布产品不会存在性能问题。Capital One使用Jmeter工具模拟生产级流量并分析,15分钟的负载测试作为流水线的一部分,使用1小时负载测试主线升级以及重大变更场景。

由于Artifactory支持多种类型的包因此在流量模型是一个挑战,Capital One通过分析日志获取常用API,并在流量峰值时期测试API调用速度。

回滚策略流水线

Capital One设计了两个回滚策略:

  1. In-region回滚。当部署后的测试失败时,马上启动自动化回滚,删除新的集群,并恢复旧的集群。
  2. DR容错回滚。当主集群升级成功后,或监测几天用户流量,没有问题的时候再更新容灾集群。如果在这几天中发现问题,就会启动容错回滚:用户流量切换到DR集群,主集群回滚到之前版本,数据库回滚到之前的快照,再通过Artifactory Replication同步数据,最后再把流量切换回回滚后的工作集群。目前

由于数据库的回滚可能会有DataBase schema的变化,Capital One目前在数据库回滚操作上依然使用手动方式完成。

自动化流水线部署带来的收益

Capital One通过自动化流水线部署Artifactory HA为团队带来的收益:

*加快部署进度并且使开发人员能更专注于代码开发本身,不再需要花费时间维护制品管理的工具。

*Capital One更好的扩展性,整个集群的扩缩容都可以由流水线完成

*全面的测试流程确保用户体验

*自动化回滚策略,加快故障检测和响应,减少对生产业务影响

更多技术分享请关注在线课堂

微信搜索公众号:jfrogchina  获得课程通知

CapitalOne - Artifactory高可用集群的自动化部署实践相关推荐

  1. Kubeadm HA 1.9 高可用 集群 本地离线部署

    Kubeadm HA 1.9 高可用 集群 本地离线部署 k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9 ...

  2. k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...

  3. k8s(一)、 1.9.0高可用集群本地离线部署记录

    一.部署说明 1.节点 master1: IP:192.168.0.170/24 hostname:171 master2: IP:192.168.0.171/24 hostname:172 VIP: ...

  4. 通过rancher部署loki-distributed loki日志高可用集群 helm方式部署

    本人最近一直在找loki高可用部署的文档,一直没找到有效的部署文档,后面依照官方文档和自己摸索,部署出了以下一套loki高可用方案. Distributor:Distributor是Loki日志写入的 ...

  5. kubernetes高可用集群web页面部署

    前言: 前面几篇博客演示了k8s的二进制部署,这篇博客做k8s页面部署 搭建部署 1.下载官方文档 2.创建资源(master01) #创建dashboard工作目录 [root@localhost ...

  6. mycat mysql好可用架构_想要学会MyCat高可用集群搭建,但是这些知识点却还玩不明白?...

    一.集群架构 1.MyCat实现读写分离架构 在我前面的文章, 我已经讲解过了通过MyCat来实现MySQL的读写分离, 从而完成MySQL集群的负载均衡 , 如下面的结构图: 但是以上架构存在问题 ...

  7. Kubernetes容器集群 - harbor仓库高可用集群部署说明

    之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...

  8. [K8s 1.9实践]Kubeadm 1.9 HA 高可用 集群 本地离线镜像部署

    Kubeadm HA 1.9 高可用 集群 本地离线部署 k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,易宝支付,北森等等. kubernet ...

  9. 自动化运维之k8s——Helm、普罗米修斯、EFK日志管理、k8s高可用集群(未完待续)

    一.k8s高可用集群(3.12日课) 几种常见的集群结构 1.堆叠的 etcd 拓扑 2. 外部 etcd 拓扑 3.外部 etcd 拓扑(load balancer = lvs + keepaliv ...

最新文章

  1. 从ThinkPHP框架核心讨论C、E、G、L、T、I、N...等函数
  2. 双关节机械臂+机械爪运动控制
  3. 【UAV】高度控制代码分析
  4. boost::mp11::mp_rotate_right相关用法的测试程序
  5. 7-26 Windows消息队列(25 分)
  6. python向上取整_python向上取整-取整,向上
  7. python3.8的用法_Python3.8对可迭代解包的改进及用法详解
  8. Au 音频效果参考:特殊效果
  9. 微型计算机控制技术第二版答案第四章,微型计算机控制技术答案第四章2.pdf
  10. 巨星MTV2002模板使用教程
  11. 常微分方程之Kutta公式、Gill公式、隐式龙格库塔公式、半隐式龙格库塔公式、Milne方法、Hamming方法、不显含一阶导数的二阶微分方程的求解方法、非线性微分方程的差分法
  12. MATLAB串口操作
  13. Socket UDP、TCP 简介
  14. 元宇宙带来的游戏变革会是怎样的?
  15. 设置linux服务器同步时间
  16. 代谢组学结果在线分析:不同组差异代谢物高级韦恩图Venn的绘制——UpSet图
  17. 利用计算机设计轴对称图案,“轴对称图形”信息技术应用设计与分析|轴对称图形有哪些图片...
  18. Win10激活提示“连接到internet激活windows”的最佳解决方法
  19. P1497 木牛流马 题解
  20. 一点一滴分析LinkIt™ Smart 7688 webUI

热门文章

  1. 一拳超人激励我的台词
  2. 生活中无处不在的MPLS虚拟专用网
  3. dji android 开源,转贴大疆无人机官方论坛:无刷云台普及介绍
  4. 三菱PLC FX3U-4DA输出模块的使用方法
  5. 亲情通天下的网络电话 能否真正热起来
  6. 中国风电法兰行业研究与投资前景预测报告(2021版)
  7. 猴子吃桃问题(C++倒推法)
  8. 直播回顾|携手 Opentelemetry 中国社区,走进可观测性
  9. Android Framework 记录
  10. 计算机命令vty是什么意思,VTY 常用命令