久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

不得不談談農歷新年首次質量大事故:GitLab丟失數(shù)據(jù)

 king9413 2017-02-05


大年初四(一月最后的一天)GitLab.com的一個數(shù)據(jù)庫發(fā)生了災難性的事故,。經過努力,,最終丟失了6個小時(5:20pm UTC 11:25pm UTCJan 31,,2017 )的數(shù)據(jù),。這起事件影響了數(shù)據(jù)庫(包括問題和合并請求),但是沒有影響git代碼庫(代碼庫和維基),。”  所以對用戶來說多少有點安慰,,因為并非所有數(shù)據(jù)全部丟失。所幸GitLab運氣不錯,,損失不是太大,,而且公開事故過程,沒有躲貓貓,,獲得大家的好評,。但問題還是比想象的嚴重,值得分析,。

 

1. 讓我們簡單回顧一下事情的經過

第一次事故

  • 2017/01/31 6pm UTC:發(fā)現(xiàn)黑客不斷往數(shù)據(jù)庫灌數(shù)據(jù)(hammering the database by creating snippets)導致數(shù)據(jù)庫不穩(wěn)定,,Gitlab開始進行troubleshooting,想確定究竟是什么問題,、以及如何處理:

  • 2017/01/31 9pm UTC 問題進一步加重,,導致數(shù)據(jù)無法寫入DB中,引起系統(tǒng)不能正常工作(downtime.


采取的措施:

  • 阻止黑客的IP地址

  • 刪除這個用戶(用同一個賬號從47 000 IP 登錄進來,,著名的DDoS攻擊)和其它制造垃圾數(shù)據(jù)的用戶,。


第二次事故

  • 2017/01/31 10pm UTC 由于寫DB出現(xiàn)一個峰值,導致DB復制嚴重滯后,。(按照PostgreSQL專業(yè)服務公司2ndQuadrantCTO SimonRiggs 觀點,,4GB的同步滯后是正常的,PostgreSQL 9.6的數(shù)據(jù)同步可能存在Bug


采取的措施:

  • 值班的Gitlab員工(YP)調整max_wal_senders to 32 on db1(注:db2.cluster拒絕連接db1,,由于max_wal_senders太低,,max_wal_senders限制復制客戶端的數(shù)目,按照Simon Riggs觀點,,不應該設這么大的值——32,,一般為24即可)然后PostgreSQL,結果由于太多的信號量(semaphores)無法啟動,。

  • max_connections的值從8000調到2000(盡管此前8000用了差不多一年,,按照Simon Riggs觀點,8000的確太高,,調整為2000是合理的),。重新啟動PostgreSQLdb2.cluster仍然拒絕復制,。

  • 更大的災難性事故悄悄來臨,因為這位YP同學一直在troubleshooting到現(xiàn)在(晚上11點),,太累了,,本來他早該下班了,該死的黑客帶來麻煩,!

 

第三次事故

  • 2017/01/3111pm-ish UTC這位YP可能是pg_basebackup拒絕工作,,決定刪除目錄(directory),執(zhí)行操作后幾秒鐘后發(fā)現(xiàn),,刪除對象搞錯了,,本來應該刪除db2.cluster.的目錄,結果刪除了db1.cluster.的目錄.

  • 2017/01/3111:27pm UTC這位YP終止刪除,,但已經太遲了,, 300 GB的數(shù)據(jù)只剩下4.5 GB

 

2. 問題分析

    正如Simon Riggs說,手工刪除數(shù)據(jù)庫目錄是非常危險的,,恢復備份這樣操作也很關鍵,。這樣的事情應該交給工具去做,所以他順便為自己的公司2ndQuadrant做了廣告(repmgr 3.3,,Barman 2.1),。也如左耳朵耗子特別對“人肉運維”吐槽一番“直接到生產線上敲命令是一種非常不好的習慣”,說了一句名言“人管代碼,,代碼管機器,,而不是人管機器”。

    相對“rm -rf”這樣的命令,,工具會好多了,。即使用工具,也不能解決問題,,人在昏頭的時候,,用工具也會干錯事情。所以有人說,,這樣重要的工作,,需要兩個人干,一個人操作,另一個人在旁邊看著,,這樣對企業(yè)會增大成本,,特別是在緊急情況下,不一定能找到人,。在本案中,,這位同學因為troubleshooting沒下班,另外一位值班同學這時是不是該來了,?兩個人一起商量著解決問題會好多了,,災難就可能不出現(xiàn)了。難道YP童鞋一直埋頭干活,,沒有及時和其他人溝通,?

    或者像銀行那樣,遇到高風險的操作,,需要上一層主管授權,。在troubleshooting時,似乎不現(xiàn)實,。重要的操作,,還是可以電話請示一下。即使不請示,,在技術上可以咨詢一下同事,,確認一下問題的癥結所在,是不是會更好些,?而不是自己猜測“可能是pg_basebackup拒絕工作”而盲目操作,。即使單獨行動,碰到這樣關鍵的問題,,這位同學是不是也應該自行檢查一遍再提交,?對于新型公司,估計平時的培訓也不到位,,缺少風險意識,,維護人員的素質有待提高。

    從人,、流程看,,問題是明顯的。但技術問題就更多了,,除了上面說的操作和max_wal_senders設置,、以及max_connections原來的值正如GitlabGoogle DOC描述所碰到的問題,,有9項之多,,加上max_connections的錯誤設置正好十項:

  1. 在默認情況下每24小時做一次LVM快照,。在故障發(fā)生前大約6小時,YP幸好手動運行了一次,。

  2. 常規(guī)備份似乎也是每24小時做一次,,不過YP還未能查清楚它們存儲在何處。而且根據(jù)NJ,,這些備份工作無效,,只生成了幾個字節(jié)大小的文件。

  3. SHpg_dump似乎失效了,,原因是運行的是PostgreSQL 9.2二進制代碼,,而不是9.6二進制代碼。之所以會這樣,,是因為:如果data/PG_VERSION被設成9.6,,omnibus只使用Pg 9.6,但是在工作節(jié)點(workers)上,,該文件根本不存在。因而在默認情況下運行9.2,,悄然失效,。因而沒有SQL轉儲出現(xiàn)。Fog gem可能清除掉了早些時候的備份,。

  4.  NFS服務器啟用了Azure的磁盤快照,,但是DB服務器沒有。

  5.  一旦將數(shù)據(jù)同步到試運行(staging)環(huán)境,,同步過程就消除Web勾子(webhook),。除非我們能從常規(guī)備份中獲取過去24小時的數(shù)據(jù),否則它們將丟失殆盡,。

  6. 復制程序超級不可靠,,容易出錯,依賴手工的,、隨機性的shell腳本,,而且?guī)缀鯖]有說明文檔。

  7. SH后來我們才知道試運行的DB通過gitlab replicator目錄的快照來更新,,刪去復制配置,,重新啟動單獨的PostgreSQL服務器

  8. 我們備份到S3的內容顯然也沒有奏效:存儲桶(bucket)空空如也。

  9. 針對備份失敗,,沒有良好的警告或呈現(xiàn)(alerting/paging)機制,,這在開發(fā)環(huán)境也是如此

可見環(huán)境配置、備份,、快照等漏洞百出,,最終沒有損失24小時的數(shù)據(jù),,或多或少有運氣的成分,否則更糟糕,。本質上看,,也還是人的問題,說明Gitlab管理層只關注用戶數(shù)增長,、業(yè)務的發(fā)展,,而對系統(tǒng)的容錯性、可用性/可靠性重視明顯不夠,。許多時候,,管理層也是不見棺材不落淚,需要吃一塹長一智,,平時對質量不重視,,出了問題以后才會重視質量。這次出了問題,,倒是好事情,,Gitlab會吸取教訓,對系統(tǒng)的安全,、可靠性會重視起來,,完善系統(tǒng)的架構和復制、備份機制等,。

    當然,,最徹底解決問題是通過技術手段來解決,正如左耳朵耗子一再說的“不得不用更好的技術去設計出一個高可用的系統(tǒng),!別無它法,。” 如多節(jié)點復制的分布式系統(tǒng)、區(qū)塊鏈技術等,。對于Gitlab 這樣的公司,,應該有高端人才加盟幫它構建高可用的系統(tǒng),可以構建良好的發(fā)布,、運維基礎設施,。如果缺乏人才,還是可以通過流程,、管理等解決,。解決一個問題,主要還是從三個方面:

  • -People,,包括團隊成員責任定義,、個人素質;

  • 流程-Process,,操作的規(guī)范性,,合適的復審/評審等機制,;

  • 技術-Technology,包括開發(fā)和運維平臺,、工具等,。

為了方便記憶,三個方面記為PPT,。多從這三個方面找原因,,多問為什么,采用5 Whys 方法,,找出根本原因,,加以解決本問題的深層次原因可能就在思想深處,,管理層缺少“可靠性”的質量意識,,即使是技術方案的改善,也需要人力,、物力的大投入,,需要決心去改變系統(tǒng)的架構,這也需要“質量”去驅動,。


參考文章:


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多