成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

混沌工程:蘇寧系統(tǒng)穩(wěn)定性之道

原創(chuàng) 精選
系統(tǒng)
混沌工程是在分布式系統(tǒng)上進(jìn)行實(shí)驗(yàn)的學(xué)科, 目的是建立對(duì)系統(tǒng)抵御生產(chǎn)環(huán)境中失控條件的能力以及信心。

【51CTO.com原創(chuàng)稿件】隨著蘇寧多機(jī)房的成功部署,流量分流大大緩解了主機(jī)房的流量壓力。

[[316322]]

圖片來自 Pexels

但是主機(jī)房存在規(guī)劃不合理,硬件設(shè)備老化,基礎(chǔ)設(shè)施不完善等因素,短期內(nèi)還無法徹底的解決,這些”達(dá)摩克利斯之劍“一直懸在蘇寧 IT 人的心頭。

如果主機(jī)房出現(xiàn)宕機(jī),我們能否將流量整體切到備用機(jī)房?能否快速恢復(fù)業(yè)務(wù)?沒人給出肯定的答復(fù),因?yàn)檎l也沒實(shí)踐過。

既然大家都沒有實(shí)踐過,那最好的方式就是在生產(chǎn)上來一次真實(shí)的機(jī)房宕機(jī)。經(jīng)過技術(shù)調(diào)研和評(píng)估,我們選擇了混沌工程,它通過系統(tǒng)性實(shí)驗(yàn)形式,實(shí)現(xiàn)整機(jī)房宕機(jī)演練。

什么是混沌工程

我們先來了解下什么是混沌工程,混沌工程最早是由 Netflix 在《chaos engineering》中提出的,屬于一門新興的技術(shù)學(xué)科。

按照 Netflix 的定義,混沌工程是在分布式系統(tǒng)上進(jìn)行實(shí)驗(yàn)的學(xué)科, 目的是建立對(duì)系統(tǒng)抵御生產(chǎn)環(huán)境中失控條件的能力以及信心。

我們把它與我們熟知的故障注入測試做個(gè)對(duì)比,首先它們有著很多的重疊性,它們都是通過制造某種”故障”,來測試系統(tǒng)的反饋;其次,它們也有著明顯的區(qū)別。

①實(shí)施形式:故障注入測試是屬于測試領(lǐng)域的范疇,主要針對(duì)的是一種場景的一種特定方法。

混沌工程是一門實(shí)驗(yàn)學(xué)科,可以采用多種方式探索復(fù)制系統(tǒng)的不良行為,是一種系統(tǒng)性實(shí)踐。

②實(shí)施方法:故障注入測試,主要還是針對(duì)錯(cuò)誤或者故障,比如接口不通,通訊超時(shí)等破壞性行為。

而對(duì)于資源搶占,流量激增,拜占庭失敗這些嚴(yán)格意義上無法稱之為錯(cuò)誤的不良行為,就無能為力了。混沌工程正是對(duì)這些弱錯(cuò)誤或者影響層面的探索非常感興趣。

③實(shí)施結(jié)果:故障測試可以對(duì)結(jié)果進(jìn)行斷言,給定特定條件,系統(tǒng)將發(fā)出特定輸出。

測試通常是二進(jìn)制態(tài)的,并確定屬性是真還是假,它不會(huì)產(chǎn)生關(guān)于系統(tǒng)的新知識(shí),只是將效價(jià)分配給它的已知屬性。

而混沌工程,對(duì)結(jié)果不可以預(yù)知,通過實(shí)驗(yàn)產(chǎn)生新的知識(shí),混沌工程是一種實(shí)驗(yàn)形式,可以探索關(guān)于系統(tǒng)的新知識(shí)。

這也是混沌工程作為一門實(shí)驗(yàn)學(xué)科的重要使命。簡而言之,混沌工程就一門探索新知識(shí)的實(shí)驗(yàn)學(xué)科。

為什么是混沌工程

整機(jī)房宕機(jī)實(shí)踐活動(dòng)具有以下的特征:

  • 系統(tǒng)性,包括網(wǎng)絡(luò),主機(jī),進(jìn)程等,是涉及基礎(chǔ)設(shè)施和應(yīng)用系統(tǒng)層面綜合性實(shí)驗(yàn)工程。
  • 不可預(yù)知性,其過程中發(fā)現(xiàn)的部分問題是不可預(yù)知的。
  • 有序性,過程一定是有序可控的,是生產(chǎn)演練的基本要求。

這些活動(dòng)特征與混沌工程理念高度匹配,這就是我們選擇混沌工程的主要原因,通過設(shè)計(jì)并且進(jìn)行混沌實(shí)驗(yàn),了解到系統(tǒng)脆弱的一面,在還沒出現(xiàn)對(duì)用戶造成傷害之前,我們就能主動(dòng)發(fā)現(xiàn)這些問題。

按照混沌工程的原則,它的實(shí)施是有前提條件的,結(jié)合實(shí)施條件和蘇寧的現(xiàn)狀,我們對(duì)以下試驗(yàn)的條件進(jìn)行評(píng)估:

  • 系統(tǒng)彈性能力是否滿足,健壯性是否達(dá)到要求。
  • 系統(tǒng)的監(jiān)控能力是否滿足,各層級(jí)的監(jiān)控指標(biāo)是否全面覆蓋。
  • 應(yīng)急措施和方案是否滿足,一旦出現(xiàn)不可預(yù)知的場景,能否快速的應(yīng)急和回退。

近些年,蘇寧的線上流量每年成倍數(shù)級(jí)的增長,IT 基礎(chǔ)設(shè)施的不斷完善,在生產(chǎn)實(shí)踐中逐步具備這些能力。拋開蘇寧電商的業(yè)務(wù)特色,這些實(shí)施標(biāo)準(zhǔn)是具有通用性的。

混沌工程的實(shí)施原則

混沌工程并不意味是”混亂”,它的實(shí)施過程涉及到系統(tǒng),設(shè)施,場景,人員等各方面資源,必須是有原則,有序的,才能組織和協(xié)調(diào)各方資源來實(shí)現(xiàn)最終的目的。

它的實(shí)施原則有:

一個(gè)目標(biāo),即實(shí)施整機(jī)房宕機(jī)。混沌工程作為新興領(lǐng)域?qū)W科,包含的場景和內(nèi)容非常豐富,我們需要結(jié)合目標(biāo)進(jìn)行取舍。方案和實(shí)施都必須圍繞目標(biāo),避免過度設(shè)計(jì)。

最小爆炸半徑。生產(chǎn)試驗(yàn)過程中,必不可少的會(huì)對(duì)線上系統(tǒng)造成影響,造成用戶投訴,最小爆炸半徑就是結(jié)合方案和目標(biāo),減少對(duì)用戶的影響。

圖 1:爆炸半徑影響范圍

爆炸半徑越小,越容易得到控制,但是暴露問題會(huì)較少;爆炸半徑越大,影響就越大,暴露的問題會(huì)更多,爆炸半徑的選擇與各階段的目標(biāo)以及實(shí)施能力是相匹配的。

循序漸進(jìn)分解目標(biāo)。圍繞最終目標(biāo),進(jìn)行目標(biāo)分解,由簡入繁,由小到大。

圖 2:實(shí)施目標(biāo)分解

該過程既能積累經(jīng)驗(yàn),又能給予團(tuán)隊(duì)以信心,信心非常重要:

  • 單系統(tǒng)應(yīng)用節(jié)點(diǎn),單個(gè)系統(tǒng)的應(yīng)用層,如 Jboss,Tomcat 節(jié)點(diǎn)故障。
  • 單系統(tǒng)分庫節(jié)點(diǎn),單個(gè)系統(tǒng)的數(shù)據(jù)層分庫,如 Redis,MySQL 的分庫節(jié)點(diǎn)故障。
  • 單個(gè)系統(tǒng)的全庫節(jié)點(diǎn),單個(gè)系統(tǒng)的數(shù)據(jù)層全庫,如 Redis,MySQL 的全庫節(jié)點(diǎn)故障。
  • 組件節(jié)點(diǎn),主要是指 Paas 的能力節(jié)點(diǎn),如網(wǎng)關(guān),消息分發(fā),服務(wù)注冊(cè)等節(jié)點(diǎn)故障。
  • 控制節(jié)點(diǎn),是指集群控制節(jié)點(diǎn),如 etcd,Zookeeper,Sentinel 等故障。
  • 接入/匯聚/核心網(wǎng),是指接入/匯聚/核心網(wǎng)斷網(wǎng)故障。
  • 物理機(jī)/機(jī)柜斷電,是指某臺(tái)物理機(jī)或者某臺(tái)機(jī)柜斷電故障。
  • DCI 網(wǎng)絡(luò),是指 DCI(Data Center Interconnection)網(wǎng)絡(luò)故障。
  • 機(jī)房斷電,是指整個(gè)機(jī)房斷電。

將以上各目標(biāo)組合,形成以下階段性目標(biāo):

  • 單系統(tǒng)故障,是指某個(gè)應(yīng)用系統(tǒng)故障,是單系統(tǒng)應(yīng)用和全局故障的組合。
  • 全鏈路故障,是所有系統(tǒng)故障組合。
  • 機(jī)房內(nèi)基礎(chǔ)設(shè)施故障,是接入/匯聚/核心網(wǎng)絡(luò)以及設(shè)備斷電故障組合。
  • 整機(jī)房基礎(chǔ)設(shè)施故障,是指 DCI 故障以及機(jī)房斷電組合。
  • 整機(jī)房故障,是指所有故障的整合。

通過各個(gè)階段故障的組合,最終達(dá)到整機(jī)房的目的。

混沌工程平臺(tái)實(shí)現(xiàn)

“工欲善其事,必先利其器”, 結(jié)合我們的目標(biāo)和實(shí)施原則,研發(fā)一套混沌工程平臺(tái)。

Netflix 在《chaos engineering》中提出可以進(jìn)行以下的試驗(yàn)輸入:

  • 模擬整個(gè) IDC 宕掉
  • 選擇一部分網(wǎng)絡(luò)連接注入特定時(shí)間的延遲
  • 隨機(jī)讓一些函數(shù)拋出異常
  • 強(qiáng)制 NTP 時(shí)間不同步
  • 生成 IO 錯(cuò)誤
  • 榨干 CPU

對(duì)于系統(tǒng)級(jí)別的故障注入,初期并不是直接 Kill 應(yīng)用進(jìn)程,而是通過屏蔽虛機(jī)源目通訊端口,中斷 TCP 連接,這樣既能達(dá)到造成系統(tǒng)不可能的目的,又能最大程度確保系統(tǒng)快速恢復(fù)。

對(duì)于斷電,目前還是靠人工操作。當(dāng)前階段混沌工程僅涉及全鏈路級(jí)別故障。

功能架構(gòu)

圖 3:平臺(tái)功能架構(gòu)

混沌系統(tǒng)的功能架構(gòu)分三層,自下而上包括:

  • 能力層,提供各種故障注入指令庫,包括網(wǎng)絡(luò),存儲(chǔ),虛機(jī),應(yīng)用等。
  • 功能層,主要是平臺(tái)的各種功能,其中最主要是指令管理,以及任務(wù)管理。指令管理是維護(hù)相關(guān)指令信息和腳本。任務(wù)管理是維護(hù)相關(guān)的任務(wù)信息,包括單系統(tǒng)以及全鏈路,任務(wù)是各動(dòng)作的有序集合。
  • 編排層,主要針對(duì)系統(tǒng)運(yùn)維人員,通過一系列的配置,編排動(dòng)作,單系統(tǒng)任務(wù),全鏈路任務(wù),指定執(zhí)行的依賴關(guān)系和順序,使整個(gè)執(zhí)行過程有序可控。

故障注入流程

圖 4:故障注入流程

故障注入流程如下:

  • 任務(wù)編排,混沌工程平臺(tái)編排注入指令任務(wù),并從平臺(tái)數(shù)據(jù)系統(tǒng)獲取目標(biāo)虛機(jī)數(shù)據(jù)。
  • 下發(fā)故障注入指令,啟動(dòng)故障注入任務(wù)后,下發(fā)相關(guān)指令到目標(biāo)虛機(jī)。混沌平臺(tái)需要和各網(wǎng)絡(luò)區(qū)打通。
  • 具有以下特點(diǎn):安全管控,對(duì)身份和指令進(jìn)行驗(yàn)證,確保任務(wù)執(zhí)行安全;分布式部署,承擔(dān)并發(fā)壓力,整機(jī)房系統(tǒng)所涉及到的虛機(jī)數(shù)有 10萬+ 臺(tái),需要并發(fā)執(zhí)行,以減少故障注入時(shí)間,降低業(yè)務(wù)影響。
  • 故障注入執(zhí)行,每臺(tái)虛機(jī)上部署 Agent,收到指令后負(fù)責(zé)具體的注入操作。
  • 告警檢測,虛機(jī)注入故障后,監(jiān)控系統(tǒng)會(huì)探測到告警信息。
  • 流量切換,根據(jù)告警機(jī)器,告警類型,告警級(jí)別觸發(fā)流量的切換,當(dāng)前階段是否需要進(jìn)行流量切換,還需要人工決策。

故障恢復(fù)流程

故障注入后,需要進(jìn)行恢復(fù)操作,其流程與注入類似。即下發(fā)恢復(fù)指令到 Agent,清除之前的故障指令。需要注意的是, Agent 的通訊端口作為白名單處理,否則注入后會(huì)導(dǎo)致混沌工程系統(tǒng)集群無法連接到虛機(jī)。

自愈功能

故障注入后,為防止某種原因?qū)е戮W(wǎng)絡(luò)不通,恢復(fù)指令無法下達(dá)到虛機(jī),導(dǎo)致業(yè)務(wù)無法恢復(fù),所以需要有自愈功能,在一段時(shí)間(自定義)沒有收到新的指令,那么 Agent 將自動(dòng)執(zhí)行其對(duì)應(yīng)的恢復(fù)指令。

總結(jié)

混沌工程平臺(tái)上線以來,模擬各類異常場景,進(jìn)行生產(chǎn)上各層次的流量切換演練,發(fā)現(xiàn)了多個(gè)關(guān)鍵性問題,為最終的整機(jī)房宕機(jī)演練成功以及機(jī)房穩(wěn)定性夯實(shí)了基礎(chǔ)。

混沌工程作為一門領(lǐng)域?qū)W科,包含的內(nèi)容非常豐富。由于項(xiàng)目的緊迫性以及資源的限制,蘇寧的混沌工程現(xiàn)階段還是圍繞整機(jī)房宕機(jī)演練這個(gè)目標(biāo)而開展的。

在此基礎(chǔ)上,后續(xù)我們將逐步拓展,包括故障注入的場景覆蓋,自動(dòng)化運(yùn)行,流量切換和應(yīng)急聯(lián)動(dòng)等,整體提升蘇寧云的災(zāi)備能力。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2022-05-05 11:04:35

技術(shù)高可用系統(tǒng)

2022-09-15 08:33:27

安全生產(chǎn)系統(tǒng)Review

2023-04-26 18:36:13

2011-12-21 09:46:46

程序員

2020-07-13 08:10:13

軟件設(shè)計(jì)系統(tǒng)

2022-05-05 19:20:24

數(shù)據(jù)系統(tǒng)穩(wěn)定性峰會(huì)數(shù)據(jù)系統(tǒng)

2025-02-06 11:44:56

2018-09-20 16:39:58

阿里云專有云

2023-06-30 08:43:36

2010-02-09 09:34:00

Windows 7補(bǔ)丁系統(tǒng)穩(wěn)定

2016-12-21 09:33:40

2020-07-28 08:07:14

ElasticSear

2011-08-01 11:03:15

2009-07-27 10:08:14

2011-06-16 14:17:27

2010-01-28 10:56:41

微軟Windows7系統(tǒng)補(bǔ)丁

2010-02-04 13:57:38

Linux系統(tǒng)

2010-04-27 15:53:07

2022-05-09 09:00:43

軟件項(xiàng)目軟件系統(tǒng)軟件尅發(fā)

2011-07-28 16:06:13

MongoDBAutoShardinReplication
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲色在线视频 | 亚洲不卡在线观看 | 综合网视频 | 久久久久久久久久久久91 | 99精品国产一区二区青青牛奶 | 91精品国产欧美一区二区 | 亚洲狠狠爱| 国产精品中文在线 | 夜夜精品视频 | 91精品国产综合久久久久久丝袜 | 国产精品无码久久久久 | 久久精品视频网站 | 午夜精品一区二区三区免费视频 | 国产精品一区在线播放 | 中文一区二区 | 日韩影院在线 | 亚洲一区网站 | 亚洲国产精品网站 | 欧美成人专区 | www.av在线 | 欧美高清免费 | 91在线网| 成人免费福利 | 欧美日韩大片 | 亚洲欧美日韩成人在线 | 免费成人高清 | 久久综合九九 | 亚洲精品日日夜夜 | 欧美电影网 | 天堂在线一区 | 午夜av一区二区 | 成人av在线播放 | 国精产品一品二品国精在线观看 | 欧美日韩亚洲国产综合 | 久久久xx| 99久久免费精品国产免费高清 | 久久免费视频网 | 久久久久久国产精品 | 91精品国产综合久久久亚洲 | 欧美高清视频一区 | 天天操夜夜操免费视频 |