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

背景

本文为大家介绍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设计了两个回滚策略:
1In-region回滚。当部署后的测试失败时,马上启动自动化回滚,删除新的集群,并恢复旧的集群。
2DR容错回滚。当主集群升级成功后,或监测几天用户流量,没有问题的时候再更新容灾集群。如果在这几天中发现问题,就会启动容错回滚:用户流量切换到DR集群,主集群回滚到之前版本,数据库回滚到之前的快照,再通过Artifactory Replication同步数据,最后再把流量切换回回滚后的工作集群。目前
由于数据库的回滚可能会有DataBase schema的变化,Capital One目前在数据库回滚操作上依然使用手动方式完成。

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

Capital One通过自动化流水线部署Artifactory HA为团队带来的收益:
加快部署进度并且使开发人员能更专注于代码开发本身,不再需要花费时间维护制品管理的工具。
Capital One更好的扩展性,整个集群的扩缩容都可以由流水线完成
全面的测试流程确保用户体验
自动化回滚策略,加快故障检测和响应,减少对生产业务影响

更多?精彩内容?请微信搜索公众号:jfrogchina
??更多技术分享?可以关注?2?月?18?日在线课堂:《Artifactory企业版介绍》
报名链接:https://www.bagevent.com/event/6365977
?
课程介绍
在企业数字化转型的背景下,应用的更新迭代周期正在不断加速,如何在多语言环境下建设一套高性能,高可用的应用制品管理平台成为企业在数字化转型中的一个新课题。
?
课程收益
本期通过演示事例说明如何通过Artifactory企业版实现制品管理,元数据管理,制品与依赖安全管理。并且实现Artifactory与Jenkins的集成使用。
?
本期话题
1 artifactory企业版的特性以及高可用架构
2 如何通过Artifactory实现多语言环境的制品管理
3 通过Artifactory建立企业级制元数据管理平台
4 如何实现制品依赖安全管理
?
课堂活动
本期课堂讲师会在结束前进行抽奖活动
第一名:小爱音响
第二名:JFrog?新版?T?恤
第三名:JFrog?新版?T?恤

原文地址:https://blog.51cto.com/jfrogchina/2472047

时间: 2024-11-05 22:37:39

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

高可用集群的基本部署

高可用集群的部署 实验环境的准备: 准备三台rhel6.5的虚拟机三台,真机作测试,做好解析. 解析 [[email protected] ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 172

Hadoop2.6(NN/RM)高可用集群安装与部署

Hadoop2对HDFS的改进很大,支持HDFS(NameNode) 和ResourceManager高可用性,避免集群中单点故障造成整个集群不可用.那么,从本文开始将部署一套高可用Hadoop集群及家族中相关开源系统,具体根据下面规划来,本文只部署高可用Hadoop集群,后续很快更新其他软件部署. 一.部署前准备 1. 节点分配 HostName IP Hadoop HBase Zookeeper Hive HMaster0 192.168.18.215 NameNode HMaster /

MySQL分片高可用集群之Cobar部署使用

Cobar是taobao公司用java开发的分布式MySQL中间件,可以支持数据的分片,且接口与mysql相同,因此可以无缝切换.并且不仅支持Mysql,而且还支持MariaDB哦,对版本的要求也很低,只要5.1以上就可以了.如果公司有较多的java项目,推荐使用.我们就来试试Cobar的集群搭建吧. 第一步:下载Cobar 现在可以从两个官方地址下载,一个是github上:https://github.com/alibaba/cobar  可以下载源码,也可以直接下载编译好的包https://

玩转MHA高可用集群

MHA高可用集群 =============================================================================== 概述:  本章将主要介绍MySQL中MHA高可用集群的相关内容,如下: MHA的功能介绍: MHA的集群架构,工作原理: CentOS 7上MHA实战配置部署及故障转移测试: =========================================================================

Puppet自动化高可用集群部署

前言:随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster响应很慢,压力大,解析缓慢,有什么优化的方案吗?可以使用Puppetmaster配置多端口,结合Nginx web代理,这样puppetmaster承受能力至少可以提升10倍以上. 一.安装配置mongrel服务: 要使用puppet多端口配置,需要指定mongrel类型,默认没有安装,需要安装.在Puppetmaster服务器端执行如下命令(前提是已经安装了对应版本的

Linux HA Cluster高可用集群之HeartBeat2

一.阐述Linux HA Cluster的使用背景: 1.1 高可用集群定义: 高可用集群全称:High Availability Cluster,简单的说,集群就是一组高可扩展.高可用性.高性价比的计算机.它们作为一个整体向用户提供一组网络资源.其中单个的计算机系统就是一个集群的节点.高可用集群软件的主要作用就是实现故障检查和业务切换的自动化,以提供不中断的服务. 1.2 集群系统的主要优点: (1)高可扩展性:  (2)高可用性HA:集群中的一个节点失效,它的任务可传递给其他节点.可以有效防

corosync+pacemaker高可用集群

简介 高可用集群,是指以减少服务中断(如因服务器宕机等引起的服务中断)时间为目的的服务器集群技术.简单的说,集群就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点. 高可用集群的出现是为了减少由计算机硬件和软件易错性所带来的损失.它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度.如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责.因此,对于用户而言,集群永远不会停机.高可用集群软件的主要作用就

HA cluster高可用集群原理

高可用集群,英文原文为High Availability Cluster,简称HA Cluster,高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失.如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责.因此,对于用户而言,集群永远不会停机.高可用集群软件的主要作用就是实现故障检查和业务切换的自动化. 只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份.当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的

高可用集群技术之corosync案例应用及pcs使用详解(二)

案例概述: 案例(一):使用ansible全自动化配置corosync集群环境 在生产环境中,经常遇到需要配置集群环境或相同配置的服务器,如果手工一台一台的去调试,这样会增加我们再运维过程中的工作量及错误的发生,我们应怎样去优化及减少错误的发生?下面我们通过一个案例实现自动化部署corosync环境: 准备工作: (1)将已经配置好的corosync配置文件做好模板存放 # mkdir -pv ansible/corosync/{conf,packages} # cp -p /etc/coros