減少運維工作量,如何透過 ROS 輕鬆實現資源編排新方式

阿里巴巴雲原生發表於2020-08-17

頭圖.png

在日常工作中,我們一定遇到過需要快速構建系統的工作情形:

  • 作為資源管理人員,需要接收一定數量以及配置的資源申請,這些申請要求網路、儲存裝置按需到位;
  • 作為開發人員,需要將一套開發環境,複製一份測試環境以及線上環境;
  • 架構師規劃一套系統,需要在雲上進行搭建。

這些場景都展現著我們日常所遇的各種困難:

  • 對各類雲端資源需要進行廣泛支援與管理:這其中需要包括常用基礎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 示例

1.gif

  • AlibabaCloud ROS JSON Template 示例

2.gif

第四步:說明 Ctrl+ 滑鼠左鍵可實現引數位置與引數之間的跳轉, 使用 Ctrl+ 滑鼠懸浮可實現引數的懸浮資訊。模板管理功能操作說明如下表所示:

表1.jpg

右鍵單擊本地模板,可根據需求進行操作:

3.png

功能操作說明如下:

  • Upload:上傳模板
  • Rename:重新命名模板名稱
  • Delete:刪除本地模板

右鍵單擊遠端模板,可根據需求進行操作:

4.png

功能操作說明如下:

  • 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,可根據您的需求進行相關操作。

5.png

資源棧管理功能操作說明如下表所示:

表2.jpg

  • Resources:顯示該資源棧內的所有資源資訊
  • Parameters:顯示該資源棧的引數資訊

關於 Cloud Toolkit

作為集開發、測試、診斷、部署為一體的免費本地多 IDE 外掛,Cloud Toolkit 幫助開發者真正實現任意伺服器或 ECS、EDAS、Kubernetes、SAE、函式計算等一鍵式研發部署,支援 Java 規約、高效執行終端命令和 SQL 等常見工具,研發速度提升 8 倍以上,大幅降低研發成本。

產品完全免費並覆蓋 IntelliJ IDEA、Eclipse、Pycharm、Maven、VS Code 等不同 IDE 環境。持續更新+社群支援,確保開發者放心使用,真正做到研發團隊降本提效。

對應下載傳送門

附產品使用文件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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章