如何通過StackStorm自動支援2萬多台伺服器

2021-09-17 07:33:01 字數 3554 閱讀 6894

網路部署規模不斷增長和變化,為了解決這方面的挑戰,我們的運營團隊使用stackstorm開發了乙個it自動化平台。這是乙個巨大的飛躍,改變了我們部署、變更、修復和停用伺服器的方式,這些伺服器佔到了我們全球網路95%以上的比例。

以下是這個自動化平台給我們帶來的好處:

因為認識到it自動化平台的價值以及這種平台的日益成熟,2023年,我們成立了基礎設施自動化團隊,並開始了crayfish(小龍蝦)專案,認真開發it自動化解決方案——對於我們這樣規模的企業來說,這是一項艱鉅的任務。專案名稱的選擇——我們現在仍在使用——是有意而為之的。一直以來,我們的工具都以魚類和航海為主題,我們之所以選擇crayfish,是因為小龍蝦是濾食性動物,可以保持環境的清潔。

最開始我們也考慮過開發自己的it自動化框架,後來決定使用stackstorm(並通過增強功能來支援我們獨特的需求和規模,讓我們能夠更高效地往前走。

stackstorm是乙個開源的基於事件驅動的平台,支援「基礎設施即**」。它擅長基於事件執行工作流,可以與slack整合,並提供了原生的chatops支援。

我們已經對stackstorm做出了一些配置變更來滿足我們所需的規模。首先,我們需要增加服務例項的數量,並減少資料保留。在專案啟動時,我們的網路有8,000臺伺服器,而現在伺服器數量已經達到20,000臺。可伸縮性的關鍵在於能夠執行任意數量的stackstorm例項,並把它們作為worker執行,而不是讓單個stackstorm例項處理所有的東西。如下圖所示,我們開發的乙個叫作policy engine的東西可以幫我們做到這一點,它會根據我們的業務邏輯將提交的請求**給stackstorm。policy engine還可以將請求放在佇列中,並在安全的情況下自動處理這些請求。這些策略用來監控併發、容量、流量、生產狀態、基礎設施、黑名單和故障率。

it自動化專案的基本方法是捕獲現有流程和工作流,然後將它們轉換為可以在不需要人工干預的情況下實現工作流步驟的**,並將它們儲存在**儲存庫中,然後作為自動化的一部分或通過chatops命令來呼叫它們。

專案開始後,crayfish團隊捕獲了整個組織現有的工作流程和流程。所幸的是,不同部門使用的大多數重要的流程(例如網路運營中心、資料中心運營或sysops)都有詳細的記錄,可以使用python來快速編碼並新增到crayfish中。

例如,如果我們的網路運營中心想要實現乙個重啟工作流,它首先需要根據各種策略驗證在機器上執行工作流是否安全。如果伺服器處於生產環境中,系統將會採取措施來消耗連線並更新狀態。接下來,它將執行實際的重啟動作和必要的步驟來驗證機器是否已經準備好進入生產狀態。

可以肯定的是,我們遇到了很多邊緣案例,其中最具挑戰性的是那些還沒有被記錄到文件中的流程。為了搞定這些邊緣案例,我們需要進行跨職能合作,並與正確的人溝通。自動化的乙個好處是我們可以捕獲到這些知識,確保它們在我們的組織中繼續存在。

在某些情況下,我們甚至與一些了解特定任務或知道如何解決特定問題的工程師和技術人員一起合作,找出更有效處理特定任務的方法。我們發現,在某些情況下,不同團隊成員的知識水平是不一樣的。那時候,我們開始收集每個人的意見,提出乙個每個人都同意的工作流,並將其作為最有效的解決方案。

crayfish已經從多個層面改變了我們的it運營,例如簡化伺服器管理、減少伺服器停機時間以及加快伺服器部署。僅在2023年一年,itops就為我們的全球網路增加了22 tbps的容量。如果沒有crayfish的自動化,就不可能新增數千台伺服器,而且這是在不需要顯著提高員工技術水平的情況下完成的。

目前,crayfish為大約20種不同的伺服器型別提供強大的自動化功能。我們將伺服器型別定義為執行相似服務的一組伺服器。不同的應用程式執行在不同的伺服器型別上,因此每種伺服器型別在生產環境中需要得到不同的支援。今天,crayfish支援大約10種伺服器型別的完整生命週期,並且還可以對大約10種其他伺服器型別做出修復、更改和打補丁。它還為大約40或50多種伺服器型別提供不同程度的支援。由於我們專注於部署使用最廣泛的伺服器型別,因此crayfish可以為約96%伺服器提供支援。

crayfish與其他監控系統相結合可以顯著減少個別伺服器的停機時間和維修時間。我們的系統持續監控網路是否出現了問題或故障,並且可以自動建立故障ticket或直接打補丁。有了自動化系統,我們的員工不需要通過「死盯」的方式來發現網路錯誤——計算機會永不疲倦地進行持續的監控。

我們可以通過這種方式完成的檢查幾乎沒有數量上的限制。我們的度量系統不斷執行硬體檢查,不需要將機器撤出生產環境,而另乙個系統會查詢錯誤,並在發現問題時呼叫crayfish對機器執行檢查。通過這種方法,我們能夠及早地發現硬體故障。

例如,如果有指標顯示硬碟驅動器開始出現故障,自動化系統將啟動crayfish中的工作流,對受影響的計算機進行錯誤驗證,並收集有關故障的詳細資訊,例如硬碟驅動器在哪個插槽**現故障、遮蔽號碼,等等。然後,它會為資料中心運維組建立ticket,運維組會派技術人員前往安裝替換硬體。

根據經驗,任何需要多個部門協作或多個步驟之間需要手動切換的工作流都會帶來嚴重的延遲。有了自動化工作流,完成時間可以是幾分鐘,而不是幾天。這給了每個運維團隊更大的控制權,他們是最了解他們系統和應用程式的人。

我們以前都是向網路運營中心發出命令,然後等待事情發生。如果網路運營中心的技術人員花了10分鐘、20分鐘或30分鐘等待伺服器正常關閉,你必須要去問為什麼。而crayfish可以並行執行多個任務,而且支援橫向擴充套件。因此,如果我們需要處理更多的工作負載,可以新增新節點。如果我們突然發現需要同時處理大量的工作負載,可以跨整個cdn擴充套件多個節點,在處理完成後再縮減節點。

而且,技術人員的工作記憶是有限的,他們在同一時間只能操作幾台機器。只有最出色的多工處理程式才能同時處理五六臺處於不同狀態的機器,而且保證不會丟失跟蹤狀態或出現錯誤。在使用crayfish時,不需要在各種任務之間切換,它們發出命令,然後繼續後續的處理。

crayfish構建在由軟體基礎設施和系統運營團隊開發的智慧型配置系統之上,所以完全支援伺服器生命週期的其他方面,並在很大程度上是自治的,包括作業系統更新、伺服器配置或重新配置、韌體更新和安全補丁。當有新補丁發布時,crayfish會快速進行驗證,以確保補丁可以發布。

因為crayfish與slack進行了整合,所以它也支援一般性的it流程,並在需求發生變化時能夠促進團隊之間的協作。現在,團隊可以將手動流程定義為自動化工作流,而不需要等待某個部門實現變更。然後,他們可以為終端使用者提供按需執行的工作流。現在還可以限制安全執行工作流的策略。在資料中心裡工作的工程師也可以發出命令來修改伺服器的生產狀態。

由於成千上萬的客戶每天通過我們的20,000多台伺服器推送數tb的資料,stackstorm已經成為保持服務健康和安全的重要運維工具。我們現在能夠更快地擴充套件網路來滿足客戶的需求,同時在發生動態變化和意外流量激增的情況下提供更好的效能。這種運營靈活性讓我們成為更可靠的服務提供商,並具備足夠的伸縮性來滿足流**和web應用程式的需求。

雖然其他大多數企業的規模與我們不同,但仍然有很多東西可以進行自動化,包括:

毫無疑問,向it自動化的轉變提供了非常有吸引力的投資回報,但最重要的是要確保你的初衷是正確的。我們可以將自動化視為一種為工程師提供工具的方法,這些工具可以提高他們的工作效率和熟練程度,並使他們能夠專注於做出改進。

如果做得好,向基於工作流的自動化過渡是社交化和編撰部落知識的一種非常好的方式。我們將部落聚集在一起,提出乙個共同的工作流,並讓每個人都能在未來基於共同的基線貢獻自己的知識。

英文原文:

如何通過StackStorm自動支援2萬多台伺服器

網路部署規模不斷增長和變化,為了解決這方面的挑戰,我們的運營團隊使用stackstorm開發了乙個it自動化平台。這是乙個巨大的飛躍,改變了我們部署 變更 修復和停用伺服器的方式,這些伺服器佔到了我們全球網路95 以上的比例。以下是這個自動化平台給我們帶來的好處 因為認識到it自動化平台的價值以及這...

如何通過StackStorm自動支援2萬多台伺服器

網路部署規模不斷增長和變化,為了解決這方面的挑戰,我們的運營團隊使用stackstorm開發了乙個it自動化平台。這是乙個巨大的飛躍,改變了我們部署 變更 修復和停用伺服器的方式,這些伺服器佔到了我們全球網路95 以上的比例。以下是這個自動化平台給我們帶來的好處 因為認識到it自動化平台的價值以及這...

如何通過StackStorm自動支援2萬多台伺服器

網路部署規模不斷增長和變化,為了解決這方面的挑戰,我們的運營團隊使用stackstorm開發了乙個it自動化平台。這是乙個巨大的飛躍,改變了我們部署 變更 修復和停用伺服器的方式,這些伺服器佔到了我們全球網路95 以上的比例。以下是這個自動化平台給我們帶來的好處 因為認識到it自動化平台的價值以及這...