Home 技術文章 您可以從伺服器自動化中受益嗎?
Applications

您可以從伺服器自動化中受益嗎?

About The Author

Outline

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

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

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

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

將StackStorm自定義爲項目小龍蝦

認識到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種不同的伺服器類型提供了強大的自動化功能。 在我們的組織中,我們將伺服器類型定義爲一組執行或多或少相同服務的伺服器。 不同的應用程式在不同的伺服器類型上執行,並且每種伺服器類型在生產中都有不同的支援需求。 如今,小龍蝦支援大約10種伺服器類型的完整伺服器生命週期,還可以對大約10種其他伺服器類型執行大多數修復,修訂和修補。 它還提供了不同程度的支援,大約40或50多個。 由於我們專注於部署最廣泛的伺服器類型,因此小龍蝦支援全球約96%的伺服器。

使用小龍蝦使CDN的性能及其應對意外事件的能力總體上有所提高。 我們的網路設備齊全,能夠支援來自主要體育賽事流和高峯軟體下載的大量不斷增長的流量,例如,通過保持更多伺服器投入生產,減少在高峯流量時將伺服器從生產中移除的中斷。

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

使用小龍蝦,我們仍然可以安排任務(如配置或升級)自動發生,但系統足夠智能,可以滿足本地需求。 假設拉脫維亞的一個新聞事件在我們想要重新配置拉脫維亞的所有伺服器時,影片流就大幅飆升。 由於小龍蝦和我們的指標收集系統的集成,系統將看到流量增加,重新配置將停止。 如果需要,它甚至可以將更多的伺服器投入生產。

在基礎架構故障成爲服務中斷之前捕獲這些故障

小龍蝦和其他監控系統顯著減少了單個伺服器的停機時間和維修時間。 我們的系統會持續監控網路是否存在問題或故障,並可自動創建票證或直接應用修復。 使用自動化系統,員工無需“目光注視”即可發現網路錯誤—計算機從不感到厭煩或疲勞,並持續監控。

以這種方式進行的檢查數量幾乎沒有限制。 我們的度量系統會持續執行硬體檢查,不需要將機器停用,而另一個系統會尋找不良值,並在發現問題時調用小龍蝦檢查機器。 通過這種方法,我們可以很早發現硬體故障。

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

過去,任何需要多個部門協調或移交步驟的手動工作流程都會導致一路上出現嚴重的延遲。 使用自動化工作流程,完成時間可以是分鐘,而不是在TT隊列中等待請求彈出的天數。 這使各個營運團隊能夠更好地掌控自己的系統和應用程式。

爲工程師提供可提高工作效率的工具

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

此外,技術人員在任何時候都只能在多少臺機器上工作時擁有如此多的記憶體。 只有最出色的多任務處理程序才能處理不同狀態下的五臺或六臺以上的機器,而不會丟失跟蹤或出錯。 但使用小龍蝦,無需在各種任務之間跳轉,他們可以發出命令並繼續操作。

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

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

最後的想法

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

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

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

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

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

Tags

Just For You