Singularity:基於Mesos的服務部署和做業調度平臺

Singularity是一個在雲基礎設施中部署和運行服務和計劃做業的平臺,同時也是HubSpot PaaS的核心組件。它可以高效地管理底層進程的生命週期,並有效地利用集羣資源。它能夠做爲持續部署基礎設施的基本組成部分,並且是微服務部署的理想選擇。它不只可以管理數以百計的服務器上運行着的數以千計的進程,並且還提供了以下開箱即用的特性:git

  • 豐富的REST API,既有用於部署的,也有用於獲取活動部署和歷史部署信息的;github

  • Web應用客戶端(Singularity UI)使用上述API向用戶提供全部可得到信息的友好視圖;apache

  • 部署失敗時自動回滾;服務器

  • 服務自己或者服務器故障時自動實現服務的故障轉移;app

  • 自動暫停反覆失敗的服務;負載均衡

  • 進程和服務端點級別的健康檢查;框架

  • 多實例服務的負載均衡;ide

  • 日誌循環和歸檔;微服務

  • 針對每一個服務實例的資源限制和資源隔離,並能殺死超過限制的實例;測試

  • 「機架(Rack)」/可用區域識別。

Apache Mesos的術語中,使用Mesos API在集羣中調度任務的Mesos應用程序稱爲框架。Singularity就是一個Apache Mesos框架,它做爲一個任務調度器運行在Mesos集羣之上,以下圖所示:

從中能夠看出,Singularity在一個框架中融合了長期運行任務的調度功能和批處理做業的調度功能,能夠支持開發人員須要天天部署的許多常見進程類型,包括:

  • Web服務:長期運行的進程;

  • 工做進程:長期運行的進程,相似Web服務,但不暴露API,好比Queue Consumer就是一種常見的工做進程類型;

  • 計劃做業:週期性運行的任務;

  • 按需執行的進程:須要手動執行的進程。

Mesos 框架有兩個主要組件:調度器組件和執行器組件,前者註冊到Mesos主進程用於分配資源,後者由Mesos從屬進程在集羣從節點上啓動並運行框架任務。 Mesos主進程決定爲每一個框架分配多少資源,框架調度器選取提供的部分資源用於運行所需的任務。Mesos從屬進程並不直接運行任務,而是委派給合適的 執行器來運行。Singularity實現了這兩個基本的框架組件,而且還提供了日誌查看器、S3上傳器、執行器清理、OOM進程清除、 Singularity UI、Singularity Java Client等組件。

此外,藉助請求對象和部署對象,Singularity在Mesos任務之上提供了一個面向部署的層。其中,請求對象定義一個可部署項,而部署對象定義一個可部署項的執行參數。要想了解全部Singularity端點及相應請求和響應對象的完整描述,請查看Singularity API參考

最後,對Singularity感興趣的讀者能夠查看針對測試開發的本地安裝文檔以及Singularity部署示例,以瞭解更多的細節。還有一點不得不提一下,就是Singularity的路線上圖上有支持Docker容器部署一項。

相關文章
相關標籤/搜索