未雨綢繆,迎接運維新時代—— Tech Neo第十六期技術沙龍
原創運維發展歷程與工業革命異曲同工,工業的三次革命分別是機械化、電氣化與信息化,運維則是原始手工、腳本與自動化工具。那么工業4.0悄然來臨的今天,智能化又將會給運維帶來哪些影響?坦白講,AIOps是新概念,目前并沒有準確且廣泛使用的定義,對AIOps的認知也會隨實踐、反思和討論的不斷積累發生演變。但AIOps所指代的整體趨勢是毋庸置疑的,智能化將逐步走進IT行業乃至社會生活的各個方面。
今天, 由51CTO 主辦的第十六期以“Tech Neo”為主題的技術沙龍活動如期舉行,此次沙龍邀請了來自陌陌科技SRE團隊負責人王景學、去哪兒網DevOps工程師葉璐和ThoughtWorks高級咨詢師顧宇。希望講師們這些基于平臺、建站、深度學習等不同方式的自動化運維實踐經驗,多少可以為運維/開發人員帶來一些的新思路。
自動化運維與 DevOps”沙龍現場
陌陌在k8s容器方面的實踐
首位演講的是王景學老師,主要分享陌陌在k8s容器方面的實踐和應用遷移方面的一些經驗。當時陌陌選用k8s進行實踐的主要原因是,應用發布時間過長、緊急擴容吃力,效率低且應用運行環境軟件版本不一致,配置復雜,維護成本比較高,硬件資源利用率不高,總體成本比較高。
k8s方面的設計目標有五點,分別是:提高服務的可用性,可管理性、使用k8s來管理docker集群、開發不需要關心服務器、提高資源隔離性,實現服務混合部署,應用級別基礎資源監控,服務平滑遷移等。針對這些問題和目標,通過自研發布系統,基于docker和k8s的容器管理平臺,便于開發者便捷地部署自己的應用程序。
如下圖,是K8s架構
針對K8s架構,王景學老師還分享了基于location和group標簽的集群調度、基于ovs的網絡節點架構和實現、集群在阿里云擴展和支持,測試環境中有狀態應用的嘗試、容器基礎資源監控方面的指標等,還有在應用遷移過程中,遇到了Swap、cpu軟中斷及資源利用率,應用白名單等問題。
于未來,希望可以實現對應用請求量,線程數,流量等指標的監控。基準值部分,達到單實例可承載請求量,線程數,流量。伸縮方面,做到最小保留實例數,最大擴容實例數,根據監控反饋和基準值計算需要擴容和縮容的實例數, 按照各個集群資源余量按比例伸縮。
去哪兒網基于Kubernetes/Ceph的機器學習云實踐
第二位演講者是有豐富云平臺建設、運維、容器云落地等經驗的葉璐老師,演講的主題是去哪兒網基于Kubernetes/Ceph的機器學習云實踐。
葉璐老師以深度學習的興起為演講開端,這要涉及深度學習的概念、興起的原因、深度學習加速器-GPU等方面的內容。緊接著分享了深度學習在Qunar的應用,像智能客服,拿去花用戶信用評級,酒店推薦等都是經典實踐。
演講最核心的部分是如何應對GPU使用資源的一系列問題,如環境無隔離、采購周期長、 資源利用率低、各種工具的環境部署成本高等。
針對這些問題,去哪網采用的方式是構建GPU云,第一期的目標是GPU資源云化, 持業務線同學快捷定制機器學習應用,秒建秒刪,一鍵釋放GPU資源,建立統GPU 資源申請和管理等入口到Portal,降低業務線同學的接入和學習成本。做到環境隔離同時保證訓練數據在分布式環境下的持久化和可靠性,以及支持Tensorflow全工具鏈。
如下圖,是機器學習應用的一種部署情況
葉璐表示,目前一期已經完成正在公測中,使用前后對比,在環境秒起秒刪、環境隔離給開發同學提供極大的便利。在對接Ceph后,數據的可用性和可靠性大大提升,不用擔心因為更換機器帶來的訓練數據遷移,丟失。
GPU云基礎環境固化,讓開發同學免受環境安裝之苦是第一步。現在Spectrum第二期也在開發中,開發工程師隨時固化到Kubernetes Post-Install,提供了更高的環境定制自由度;同時Tensorflow serving的上線,為機器學習應用真正落地提供了更完整的pipeline,同時還有其他的優化,上下游的數據獲取管道,預處理流程優化,Jupyter插件系統集成。
用基礎設施即代碼自動化架構遷移
最后一位演講人是專注于 DevOps、持續交付,微服務以及全功能產品團隊的設計、實踐、落地以及經驗推廣的顧宇老師。他的演講主題是用基礎設施即代碼自動化架構遷移。
演講由一個真實的架構遷移案例展開,分享了在一個東南亞互聯網企業并購案例中的 DevOps 的實施案例。通過在 AWS上使用 Ansible 和 CloudFormation作為基礎設施即代碼的工具實現產品架構的遷移。
在互聯網企業的并購過程中,不光是組織結構的融合,更是產品架構和產品團隊的融合。然而在不同的企業文化、技術能力甚至是不同的國家法律法規上的融合更多的是看不到的隱形成本。
通過 DevOps 的基礎設施即代碼實踐,把架構以及開發/運維實踐固化為配置和代碼。讓所有的團隊和成員能夠依照同樣的規則進行開發和運維。通過自動化的手段加速團隊和產品和架構的融合過程,提升整個組織的技術水平。
首先,根據康威定理,組織和架構和基礎設施架構要保持一致,就可以根據未來的組織結構設計系統架構,可以減少系統架構演進中的適應性浪費。
其次,把整個架構分層次封裝:基礎設施、應用和數據 三種類型分別進行封裝:
- 基礎設施通過配置管理技術封裝在 Ansible 的 Playbook里,把 Ansible 作為 Cloudformation的引擎。
- 應用通過 Docker 鏡像進行封裝,根據不同的地區在構建過程中進行合并。
- 數據通過自動化的備份腳本和自動化的遷移腳本(Migration Scripts)實時保證可用性。
然后,根據使用場景,設計基礎設施即代碼的架構。能夠自動的把整個架構自動的搭建和還原。根據使用場景設計安全策略,避免人為操作,減少人為故障。
顧宇老師表示,基礎設計即代碼和基礎設施是類和對象的關系。根據不同的場景,可以采用面向對象原則進行邏輯分層。隔離不同場景的關注點。例如:持續交付關注Docker 鏡像的部署和變更,應用維護關注日志的查詢和操作。
最后在該案例中,顧宇老師總結了利用基礎設施即代碼技術的幾個關鍵要點:
- 架構遷移要為組織結構遷移服務
- 把自動化和基礎設施即代碼當做制度使用(康威定理和逆定理)
- 把基礎設施即代碼當做一個產品開發
- 安全的架構和架構的安全
- 基礎設施邏輯分層基礎設施即代碼本質上是一套類庫,從面向對象的原則考慮基礎設施的設計。
- 構建每日可用架構
活動結束時,現場很多開發者還意猶未盡,圍著諸位老師就自動化運維的部署、遷移等方面問題,進行探討交流。
隨智能化在各個應用領域的落地及實踐,IT運維也將迎來一個智能化運維的新時代。讓我們共同見微知著、未雨綢繆,當機器能越來越智能地工作,我們也要變得越來越聰明。
51CTO Tech Neo技術沙龍是51CTO在2016年開始定期組織的IT技術人員線下交流活動,目前僅限北京地區,周期為每月1次,每期關注一個話題,范圍涉及大數據、云計算、機器學習、物聯網等多個技術領域。