Home 技術文章 您能否從伺服器自動化中受益?
Applications

您能否從伺服器自動化中受益?

About The Author

Outline

在過去幾年中,我們的網路支援了成千上萬的直播體育賽事,大量軟體下載,數十億小時的流影片內容,以及數千種Web應用程式的需求,這些應用程式都需要實時響應和全球一致的性能。 為了支援這一巨大增長,自2015年以來,我們的全球網路已增長到250 Tbps以上,需要300個POP上的數千臺新伺服器。

為了應對部署不斷增長和變化的網路占用空間的挑戰,我們的營運團隊使用StackStorm開發了一個IT自動化平臺。 這是一次巨大的飛躍,它改變了我們團隊部署,更改,修復和停用伺服器基礎架構的方式,跨越了全球網路中95%以上的伺服器群。

以下是我們如何構建自動化平臺,使我們能夠:

  • 在三年內,我們的網路中添加了12,000多臺伺服器。
  • 在某些情況下自動生成票據,在其他情況下無需票據即可解決問題。
  • 為我們的團隊提供工具,以便他們能夠實時協作。
  • 減少工程師在執行一系列手動步驟時所花費的時間。

將StackStorm自定義為project crayfish

認識到IT自動化平臺的價值和日益成熟,我們在2015年成立了基礎設施自動化團隊,項目名稱為Crayfish。 我們開始認真地開發IT自動化解決方案,這對於我們這樣規模的組織來說不是一件小事。 我們仍在使用的項目名稱是有意選擇的。 我們的工具早已採用魚和航海主題,但除此之外,我們選擇小龍蝦是因爲它們用作過濾飼料,有助於保持環境清潔。

最初,我們考慮開發自己的IT自動化框架,但早期決定StackStorm以及其他增強功能以支援我們的獨特需求和規模,使我們能夠最有效地向前邁進。 StackStorm是一種開放原始碼事件驅動型平臺,它支援DevOps自動化的”基礎設施即代碼”方法。 它在基於事件執行工作流方面表現出色,與我們在營運團隊中使用的Slack集成,並具有本機ChatOps支援。

對StackStorm進行了一些配置更改,以使其能夠按我們需要的規模執行。 這主要涉及增加正在執行的服務實例的數量和減少數據保留。 當我們開始這個項目時,我們的網路由8,000臺伺服器組成。 現在,我們的伺服器數量已達到20,000臺,而且還在不斷增加。 我們可擴展性的關鍵在於能夠以工作人員身份執行任意數量的StackStorm實例,而不是嘗試讓單個StackStorm實例處理所有事情。 如下圖所示,這是我們開發的策略引擎所實現的,它根據我們的業務邏輯將請求提交給StackStorm。 策略引擎可以選擇性地將請求排隊,並在策略確定請求安全時自動運行這些請求。 這些策略監控併發性,容量,流量,生產狀態,基礎設施,黑名單和故障率。

提交請求通過策略引擎實例路由到任意數量的StackStorm工作人員,從而實現幾乎無限的可擴展性。

編纂部落知識

任何IT自動化項目的基本方法都是捕獲現有流程和工作流,將其轉換為無需手動乾預即可實施工作流步驟的代碼,並將已編碼的工作流存儲在集中存儲庫中,以便根據需要調用這些工作流,可以作為其他自動化的一部分或通過ChatOps命令進行調用。

項目開始實施後,小龍蝦團隊捕獲了整個組織的現有工作流和流程。 幸運的是,不同組(如網絡運營中心(NOC),數據中心運營或SysOps)所使用的大多數最重要的流程都有詳細的文檔記錄,可以使用Python編程語言快速進行編碼並添加到小龍蝦中。

例如,如果我們的NOC要實施重引導工作流,則需要根據各種策略檢查來驗證在計算機上工作是否安全。 例如,如果伺服器在生產中,系統將採取步驟卸除連接並更新狀態。 接下來,它將執行實際的重新引導和必要的步驟,以驗證機器是否已準備好投入生產,然後再將其返回生產。

當然,有大量邊緣機箱。 其中最具挑戰性的是沒有將其歸檔的進程。 這些部落知識案例需要跨職能協作,並與專門知識確保正確處理這些案例的個人交談。 自動化工作的一個好處是我們能夠捕捉到這些知識,從而確保這些知識在我們的組織中持續發展。

在某些情況下,我們甚至能夠通過與多位工程師和技術人員聯繫來確定處理特定任務的更有效方法,這些工程師和技術人員了解特定任務的執行情況或如何解決特定問題。 我們發現在某些情況下,不同團隊成員的知識水平不同。 這時,我們將收集每個人的智能並開發每個人都同意的單一工作流,從而提供最有效的解決方案。

按需部署新伺服器

Crayfish在許多層面上改變了我們的IT營運,例如簡化伺服器管理,減少伺服器停機時間,以及加速伺服器部署。 僅在2018年,ITOps就為我們的全球網路增加了22 Tbps容量。 如果沒有小龍蝦的自動化,就不可能增加數千臺伺服器。 這項工作在沒有顯著增加工作人員的情況下完成。

目前,小龍蝦為大約20種不同的伺服器類型提供了強大的自動化功能。 在我們的組織中,我們將伺服器類型定義為一組執行或多或少相同服務的伺服器。 不同的應用程式在不同的伺服器類型上執行,並且每種伺服器類型在生產中具有不同的支援需求。 目前,Cryfish支援大約10種伺服器類型的整個伺服器生命週期,還可以為大約10種其他伺服器類型執行大多數修復,修訂和修補。 它還為大約40或50個以上提供不同程度的支援。 由於我們專注於部署範圍最廣的伺服器類型,因此Crayfish支援全球約96%的伺服器。

使用小龍蝦使得CDN的整體性能及其應對意外事件的能力得到了提昇。 我們的網路配備齊全,可以支援來自大型體育賽事流和軟體下載高峰期的大量,不斷增長的流量,例如,通過保持更多伺服器的生產執行,減少在高峰期從生產中移除伺服器的中斷。

我們的規模決定了小龍蝦從性能角度而言至關重要的原因。 如果您的公司只有一個數據中心,您可以安排停機時間並隨時滿足該數據中心的需求。 但是,當您幾乎在每個時區討論數據中心時(如下麵的網路圖所示),您必須面對不同的配置文件,使用情況和使用時間。 將所有這些因素逐案考慮在內可能非常復雜,但小龍蝦很容易處理。

有了小龍蝦,我們仍然可以將配置或升級等任務安排為自動執行,但是系統足夠智能,可以滿足本地需求。 比如說拉脫維亞的一次新聞事件,當我們想要重新配置拉脫維亞的所有伺服器時,影片流出現了巨大的高峰。 由於小龍蝦和我們的指標收集系統之間的集成,系統會看到流量增加,重新配置將停止。 如果需要,它甚至可以將更多伺服器投入生產。

在基礎架構故障變成服務中斷之前就將其捕獲

Cryfish和其他監控系統顯著減少了單個伺服器的停機時間和維修時間。 我們的系統會持續監控網路的問題或故障,並可自動創建問題單或直接應用修復。 使用自動化系統,員工不需要“眼睛盯著玻璃”來發現網路錯誤—計算機永遠不會感到厭煩或疲勞,並持續進行監控。

這種方式可以完成的檢查數量幾乎沒有限制。 我們的度量系統會持續執行硬體檢查,不需要將機器停止生產,而另一個系統會尋找錯誤值,並在發現問題時呼叫Cryfish檢查機器。 通過這種方法,我們可以很早地發現硬體故障。

例如,如果指標顯示硬碟開始發生故障,自動化系統將啟動Cryfish中的工作流程,驗證受影響計算機上的錯誤並收集有關故障的詳細資訊,如哪個插槽中發生故障的硬碟,屏蔽編號等。 然後,它會為數據中心營運組創建一個特製的票證,並派遣技術人員安裝更換件。

過去,任何需要多個部門協調或交接步驟的手動工作流都會導致過程中出現嚴重延遲。 使用自動化工作流,完成時間可以是幾分鐘,而不是花在票證隊列中等待彈出請求的天數。 這將更多的控制權交給了最了解其系統和應用程式的各個營運團隊。

為工程師提供提高工作效率的工具

我們以前的NOC工作方法涉及發布命令並等待事情發生。 如果NOC技術人員花費10,20或30分鐘等待伺服器正常關閉,您必須問原因。 這是否善用時間? 小龍蝦可以同時執行許多,許多執行。 如前所述,小龍蝦的設計是水平縮放的。 因此,如果我們需要更多的工作,我們可以添加一個新節點。 如果我們突然發現自己必須一次完成大量工作,我們可以在整個CDN中向上擴展幾個節點,然後再向下擴展。

此外,技術人員對於一次可處理多少臺機器的記憶體也只有這麼多。 只有最出色的多任務處理者才能在不同狀態下處理5到6臺以上的機器,而不會丟失跟蹤記錄或出錯。 但有了小龍蝦,就不需要在各種任務之間跳轉,他們可以發出命令並繼續。

在軟體基礎架構和系統營運團隊開發的現有智能配置系統基礎上構建,伺服器生命週期的其他方面在Cryfish中得到完全支援,並且在很大程度上自主進行,包括操作系統更新,伺服器配置或重新配置固件更新以及安全補丁。 發布新修補程序時,小龍蝦會加快驗證測試速度,以確保修補程序可以發布。

由於小龍蝦與Slack集成在一起,因此它支援正常的IT流程,並在需求和要求發生變化時促進協作工作。 現在,團隊可以將其手動流程定義為自動化工作流,而無需等待單個部門實施變更。 然後,他們可以將工作流提供給最終用戶,以便按需執行。 也可以實施限制工作流安全執行時間的策略。 這還允許站在數據中心伺服器前面的工程師發出命令以更改他們要處理的伺服器的生產狀態。

最後的想法

由於成千上萬的客戶每天通過由20,000多臺伺服器組成的全球網路推送TB數據,我們實施StackStorm已成為保持我們服務健康和安全的重要操作工具。 它使我們能夠更快地擴展網絡以滿足客戶需求,同時在動態變化和意外流量激增的情況下提供更好的性能。 這種營運敏捷性使我們成為更可靠的服務提供商,可以進行擴展以滿足流媒體和Web應用程式的需求。

儘管大多數組織的營運規模與我們的營運規模不同,但仍有幾個營運平臺風險使自動化具有吸引力,其中包括它能夠:

  • 讓開發人員專注於產生更高回報的工作
  • 標準化例行任務和普通任務。
  • 改善部門間的協作。
  • 減少伺服器停機時間。
  • 通過實施固件更新和安全補丁來提高安全性。

毫無疑問,遷移到IT自動化可帶來非常吸引人的投資回報,但確保您的遷移是出於正確的原因而進行的,這一點非常重要。 一個好的方法是將自動化視為一種向工程師提供工具的方法,這些工具將使他們更高效,更熟練,並使他們能夠專注於改進。

過渡到基於工作流程的自動化是社交和編纂部落知識的絕佳方式。 我們將部落聚集在一起,制定一個共同的工作流程,讓每個人都能將未來獲得的知識貢獻到單一的底線,而不是每個人都有自己的方法。