減少運維工作量,如何透過 ROS 輕鬆實現資源編排新方式
在日常工作中,我們一定遇到過需要快速構建系統的工作情形:
- 作為資源管理人員,需要接收一定數量以及配置的資源申請,這些申請要求網路、儲存裝置按需到位;
- 作為開發人員,需要將一套開發環境,複製一份測試環境以及線上環境;
- 架構師規劃一套系統,需要在雲上進行搭建。
這些場景都展現著我們日常所遇的各種困難:
- 對各類雲端資源需要進行廣泛支援與管理:這其中需要包括常用基礎IaaS 資源及 PaaS 服務,比如主機、路由器、負載均衡器等計算網路資源以及各種資料庫、快取、大資料、儲存服務;
- 資源編排使用難度大:技術棧複雜而難用,實現複雜拓撲關係需要系統化知識與豐富經驗;
- 大量機械重複的手動配置操作:不僅是各資源及其拓撲關係按配置進行手工部署,各資源間的拓撲關係更是令人頭疼;
- 學習成本高:過往的資源管理依賴於透過命令列呼叫API 的方式,提升了操作難度和學習成本。
由此可見,自動化運維成了運維人員的業務剛需,各大雲廠商也相繼推出各自的資源編排服務(Resource Orchestration,以下簡稱 ROS)。ROS 的理念是“基礎設施即程式碼”,一方面是用程式碼思維的版本管理來記錄基礎設施變化,另一方面透過程式碼實現自動化運維,簡化編寫程式碼複雜度,使用者透過使用 Json / Yaml 格式模版描述多個雲端計算資源(如 ECS、RDS、SLB)的配置、依賴關係等,並自動完成所有云資源在多個不同地域以及多個賬戶中的部署和配置,就像樂高積木一般,運維人員輕鬆完成搭建。
經過多次調研後,我們發現針對於雲伺服器最多的場景是基於雲伺服器“此刻的狀態”再建立 1-N 臺雲伺服器,新建立的雲伺服器系統盤和資料盤都是“此刻的狀態”。我們以一個網站服務為例,一般運維工程師會在系統盤或資料盤中安裝一些應用,如:Tomcat、Jenkins、MySql、網站自身的資料/檔案等等。如果需要再建立一臺雲伺服器與目前已有云伺服器的系統或資料狀態保持一致,可以將系統盤做成自定義映象,資料盤做成快照,然後再新購買雲伺服器時映象選擇該自定義映象,資料盤的快照選擇該快照,安全組的規則配置與原雲伺服器一致的規則,就可以建立一臺基於原雲伺服器“此刻狀態”的新雲伺服器。
如果只需建立這一臺雲伺服器且不需要記錄歷史狀態,上述方法是比較合適的。
但實際情況遠遠比這複雜得多,比如可能會頻繁建立/釋放雲伺服器;或者生成映象的操作人員與購買雲伺服器的人員不是同一個人,一但購買選項沒有選正確,新購的這臺雲伺服器就不能投入業務中,按量計費的需要再釋放,包年包月的需要等到到期釋放或者做資料遷移,勢必帶來成本損失;想記錄或跟蹤雲伺服器的歷史演變,如安全組配置變化、基礎映象等資訊,也需要單獨記錄。
面對上述問題,運維人員使用 ROS 的模板作為交付物,將資源固定引數在模板資源中定義,將可變引數在模板引數中定義,方便執行時輸入實際引數。這樣在頻繁建立雲伺服器時,只需要輸入可變引數中的內容即可,如映象 ID、快照 ID,或者克隆原雲伺服器,或者沒有可變引數,將所有定義都在資源中描述,根據實際業務要求進行模板編寫。模板也可以存放在 Github 中,可以像管理程式碼一樣跟蹤模板歷史,也可以基於模板之上建立適合於企業內部的運維工具,實現自動化運維, 以“基礎設施即程式碼”的理念代替“重複勞動”。
我們可以看到 ROS 的強大特性:
- 可讀、易編寫的文字檔案:運維人員可以直接編輯 JSON 格式文字,或使用 ROS 控制檯提供的視覺化編輯器編輯模板。透過 SVN、Git 等版本控制工具控制模板版本,以達到控制基礎設施版本目的。也可透過 API、SDK 等方式將 ROS 的編排能力與自己的應用進行整合,實現基礎設施即程式碼(Infrastructure as Code);
- 標準化的資源和應用交付方式:獨立軟體供應商(ISV)可以透過 ROS 模板交付包含雲資源和應用的整體系統和解決方案。ISV 可以透過這種交付方式,整合阿里雲的資源和 ISV 的軟體系統,實現統一交付;
- 透過資源棧(Stack)統一管理一組雲資源(一個資源棧即為一組阿里雲資源):對於雲資源建立、刪除、克隆等操作,以資源棧為單位來完成。在 DevOps 實踐中,可以使用 ROS 克隆開發環境、測試環境和線上環境,實現應用的整體遷移、擴容。
在瞭解 ROS 的強大後,我們就在日常使用過程中會建立各種數量的 ROS 模板。這也就造成了我們在日常的運維管理中,需要更便捷的工具對模板進行管理。為了更好的管理本地與雲端的 ROS 模版,我們上線了 Alibaba Cloud Toolkit - Alibaba ROS Templates,透過一個資源配置檔案(.ros.config.yml),協助使用者對模板檔案進行管理操作。
說明:.ros.config.yml 檔案是 Alibaba ROS Templates 工具用於管理模板的原始檔。
第一步:在 IntelliJ IDEA 中開啟您的工程。
第二步:建立模板,有以下兩種建立方式:
- 在 IntelliJ IDEA 中右鍵單擊您的工程名稱,選擇 New > AlibabaCloud ROS YAML Template 或選擇 New > AlibabaCloud ROS JSON Template。
注意:使用這種方式建立的模板不會被 Alibaba ROS Templates 工具管理。如需使用模板工具管理,則需要在 .ros.config.yml 檔案中增加模板路徑,並將模板移動至 JSON 和 YAML 資料夾下。
- 開啟 IntelliJ IDEA 右邊框 Alibaba ROS Templates 工具,單擊 Create,輸入模板的名稱,選擇模板的型別,建立本地模板。
第三步:在 Resources 引數中輸入資源型別。
- AlibabaCloud ROS YAML Template 示例
- AlibabaCloud ROS JSON Template 示例
第四步:說明 Ctrl+ 滑鼠左鍵可實現引數位置與引數之間的跳轉, 使用 Ctrl+ 滑鼠懸浮可實現引數的懸浮資訊。模板管理功能操作說明如下表所示:
右鍵單擊本地模板,可根據需求進行操作:
功能操作說明如下:
- Upload:上傳模板
- Rename:重新命名模板名稱
- Delete:刪除本地模板
右鍵單擊遠端模板,可根據需求進行操作:
功能操作說明如下:
- Download:下載模板
- Properties:檢視模板屬性資訊
- Delete:刪除遠端模板
說明雙擊遠端模板,預設會開啟一個臨時檔案,右鍵選單選擇 Alibaba Cloud ROS > Update Template,顯示對比遠端模板修改情況,可更新遠端模板。
資源棧管理
Alibaba Cloud Toolkit - Alibaba Cloud ROS (Alibaba Cloud View)是一個用於管理阿里雲資源編排產品(ROS)資源棧的工具,能幫助您便捷地管理遠端資源棧。
- 在 IntelliJ IDEA 中開啟您的工程;
- 在 IntelliJ IDEA 視窗中選擇 Alibaba Cloud View > Alibaba Cloud ROS,可根據您的需求進行相關操作。
資源棧管理功能操作說明如下表所示:
- Resources:顯示該資源棧內的所有資源資訊
- Parameters:顯示該資源棧的引數資訊
關於 Cloud Toolkit
作為集開發、測試、診斷、部署為一體的免費本地多 IDE 外掛,Cloud Toolkit 幫助開發者真正實現任意伺服器或 ECS、EDAS、Kubernetes、SAE、函式計算等一鍵式研發部署,支援 Java 規約、高效執行終端命令和 SQL 等常見工具,研發速度提升 8 倍以上,大幅降低研發成本。
產品完全免費並覆蓋 IntelliJ IDEA、Eclipse、Pycharm、Maven、VS Code 等不同 IDE 環境。持續更新+社群支援,確保開發者放心使用,真正做到研發團隊降本提效。
對應下載傳送門
- IntelliJ 、PyCharm、PhpStorm: https://developer.aliyun.com/article/687264
- Eclipse: https://developer.aliyun.com/article/673562
- Visual Studio Code :
附產品使用文件: https://help.aliyun.com/document_detail/29968.html
首屆雲原生微服務大會
首屆雲原生微服務大會 PC 端地址: https://developer.aliyun.com/topic/microservices2020#/
“ 阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69953029/viewspace-2712300/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 透過運維編排實現自動化智慧運維與故障自愈運維
- 如何透過 Rancher 輕鬆實現多雲部署
- 資源編排支援雲助手,增強例項運維能力運維
- 透過列舉來減少if..else
- 資料中心運維:減少折騰就是降低故障運維
- hadoop透過CombineFileInputFormat實現小檔案合併減少map的個數HadoopORM
- 透過視覺化運維配置,實現故障秒級自愈視覺化運維
- 深信服桌面雲aDesk如何實現輕鬆運維?這篇技術解析告訴你答案運維
- 如何透過輕易雲實現旺店通與金蝶雲資料整合
- 如何透過PMP認證?5個準備步驟讓你輕鬆透過考試!
- 透過自動化運維實現無人值守的故障自愈運維
- 視覺化編排的資料整合和分發開源框架Nifi輕鬆入門-上視覺化框架Nifi
- 輕鬆編排工作流,淺談DolphinScheduler如何使用Python呼叫API介面?PythonAPI
- 運維工作新時代:自主編碼實現運維自動化的轉型之旅運維
- 輕鬆編輯影像資訊
- 新媒體運營是什麼??新媒體運營透過哪些方式進行?
- 是否只有實現了容器化、自動編排等等才算是實現了運維自動化?運維
- 如何透過“就像XX”啟發創新思維? - mathiasverraes
- Java 8 中的方法引用,輕鬆減少程式碼量,提升可讀性!Java
- 企業如何透過智慧產品實現人力資源數字化轉型
- SpringBoot實戰:輕鬆實現介面資料脫敏Spring Boot
- 輕鬆實現報表整合
- Java 14的資料記錄將如何改變編碼方式:減少或消除對Lombok依賴 - oracleJavaLombokOracle
- 什麼是容器編排,Kubernetes如何實現
- Nginx透過https方式反向代理的簡單實現NginxHTTP
- MFA並非100%有效 網路犯罪分子可透過這幾種方式輕鬆破壞
- 拯救運維人!智慧運維如何實現1+1>2運維
- Oracle 19C OGG基礎運維-07減少複製表Oracle運維
- 減少70%工作量 阿里開發商品智慧釋出系統加速推進數字新基建阿里
- 使用資源編排實現混合雲容災,保障業務可用性
- 輕鬆實現 Web 效能優化Web優化
- 輕鬆實現在家高效辦公
- Rust能實現碳減排嗎? - theregisterRust
- 封裝一個阻塞佇列,輕鬆實現排隊執行任務功能!封裝佇列
- 輕鬆便捷,檔案分享新選擇,易易二維碼
- 透過API介面實現資料探勘?API
- 如何透過代理IP實現Facebook群控?
- 如何減少攻擊面