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 選擇了S 3 進行外部儲存。所有制品與chef cookbook都從Artifactory拉取並存到s 3 中。
用於部署的流水線
部署流水線需要確保新叢集部署不會影響到現有Artifactory提供正常服務。
1 流量切換到DR區域
2 縮容現有叢集,減少節點數量並釋放license給新的叢集使用,Aritfactory叢集採用多主架構在所容時不會影響剩餘節點的正常工作
3 新部署叢集複用原油的資料庫與s 3 儲存內容做到無痕切換
4 當新叢集完成部署後,業務流量進行回切
5 主叢集完成升級後,DR叢集進行升級
由於Artifactory使用資料同步機制,因此新節點加入叢集的過程對使用者透明。
配置測試流水線
在工作節點上線前需要對其配置進行檢測,Jenkins透過ssh方式驅動新節點進行測試,確保Artifactory,Nginx,Datadog,Splunk這些工作節點執行正常。
確保所有的工作節點 配置檔案的內容、位置、許可權都部署正確,以及所有的網路埠都正常開通。
系列測試流水線
系列測試是確保Artifactory的各個repositories執行正常。透過容器拉取所有種類的repositories中的包進行測試,同時檢測所有virtual repositories,並且需要 測新的系統配置是否會影響製品依賴的解析。
效能測試流水線
確保釋出產品不會存在效能問題。 Capital One 使用Jmeter工具模擬生產級流量並分析, 1 5 分鐘的負載測試作為流水線的一部分,使用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 更好的擴充套件性,整個叢集的擴縮容都可以由流水線完成
*全面的測試流程確保使用者體驗
*自動化回滾策略,加快故障檢測和響應,減少對生產業務影響
更多 精彩內容 請關注公眾號: JFrog 傑蛙 DevOps
更多技術分享 可以關注 2 月 18 日線上課堂:《Artifactory企業版介紹》
報名連結:
課程介紹
在企業數字化轉型的背景下,應用的更新迭代週期正在不斷加速,如何在多語言環境下建設一套高效能,高可用的應用製品管理平臺成為企業在數字化轉型中的一個新課題。
課程收益
本期透過演示事例說明如何透過Artifactory企業版實現製品管理,後設資料管理,製品與依賴安全管理。並且實現Artifactory與Jenkins的整合使用。
本期話題
1 artifactory企業版的特性以及高可用架構
2 如何透過Artifactory實現多語言環境的製品管理
3 透過Artifactory建立企業級制後設資料管理平臺
4 如何實現製品依賴安全管理
課堂活動
本期課堂講師會在結束前進行抽獎活動
第一名:小愛音響
第二名:JFrog 新版 T 恤
第三名:JFrog 新版 T 恤
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2675952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker Swarm + Harbor + Portainer 打造高可用,高伸縮,叢集自動化部署,更新。DockerSwarmAI
- Captial One如何實現Artifactory HA叢集的自動化維護APT
- Kubernetes實戰:高可用叢集的搭建和部署
- [自動化]基於kolla的自動化部署ceph叢集
- 部署Kubernetes v1.22.10高可用叢集
- 在Rainbond上部署高可用Apollo叢集AI
- 基於 Rainbond 部署 DolphinScheduler 高可用叢集AI
- ProxySQL Cluster 高可用叢集環境部署記錄SQL
- 在Rainbond中一鍵部署高可用 EMQX 叢集AIMQ
- Kubernetes — 在 OpenStack 上使用 kubeadm 部署高可用叢集
- PostgreSQL repmgr高可用叢集+keepalived高可用SQL
- 【最佳實踐】高可用mongodb叢集(1分片+3副本):規劃及部署MongoDB
- PostgreSQL-HA 高可用叢集在 Rainbond 上的部署方案SQLAI
- vivo大規模Kubernetes叢集自動化運維實踐運維
- vivo大規模 Kubernetes 叢集自動化運維實踐運維
- Keepalived高可用叢集部署
- Centos7.9 部署mongodb高可用叢集 3節點CentOSMongoDB
- 基於kubeasz部署高可用k8s叢集K8S
- 運維實戰:K8s 上的 Doris 高可用叢集最佳實踐運維K8S
- zookeeper 高可用叢集搭建
- MongoDB高可用叢集搭建MongoDB
- 搭建 Kubernetes 高可用叢集
- Redis叢集與高可用Redis
- PostgreSQL patroni高可用叢集SQL
- 使用 Docker Compose 本地部署基於 Sentinel 的高可用 Redis 叢集DockerRedis
- kubeadm實現k8s高可用叢集環境部署與配置K8S
- 11、redis使用ruby實現叢集高可用Redis
- 手動搭建高可用的 kubernetes 叢集(v1.31)
- Nginx + Keepalived 高可用叢集部署Nginx
- 使用kubeadm部署高可用IPV4/IPV6叢集
- RabbitMQ從零到叢集高可用(.NetCore5.0) -高可用叢集構建落地MQNetCore
- 1.還不會部署高可用的kubernetes叢集?看我手把手教你使用二進位制部署v1.23.6的K8S叢集實踐(上)K8S
- WEB叢集- 高可用服務Web
- 高可用mongodb叢集(分片+副本)MongoDB
- 10、redis哨兵叢集高可用Redis
- mysql高可用叢集之MMMMySql
- Redis快取高可用叢集Redis快取
- Oracle的三種高可用叢集方案Oracle