日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

OpenPitrix 是一款开源多云应用程序管理系统

發(fā)布時間:2024/2/28 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenPitrix 是一款开源多云应用程序管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

云計算在今天已經(jīng)被絕大多數(shù)的企業(yè)所采用,具知名云服務(wù)廠商?RightScale 最近的調(diào)查顯示,已經(jīng)有越來越多的廠商采用多云管理。客戶有太多的理由來選擇多云管理了,其中最大的原因莫過于采用單一的供應(yīng)商,會導(dǎo)致被鎖定。因此,如何管理多云環(huán)境,并在多云的環(huán)境下進行自動化,正成為眾多企業(yè)的剛需,而在這其中,應(yīng)用程序的管理顯得尤為的重要。進一步講,頗具挑戰(zhàn)的是創(chuàng)建一個一站式的應(yīng)用管理平臺,來管理不同類型的應(yīng)用程序,其中包括傳統(tǒng)的應(yīng)用(或者稱之為單體應(yīng)用,或者傳統(tǒng)的主從、分片、peer-to-peer 架構(gòu)的企業(yè)分布式應(yīng)用)、微服務(wù)應(yīng)用、以及近來發(fā)展迅猛的 Serverless 應(yīng)用等,OpenPitrix 就是為了解決這些問題而生的。用一句話來描述 OpenPitrix:

OpenPitrix 是一款開源項目,用來在多云環(huán)境下打包、部署和管理不同類型的應(yīng)用,包括傳統(tǒng)應(yīng)用、微服務(wù)應(yīng)用以及 Serverless 應(yīng)用等,其中云平臺包括 AWS、Azure、Kubernetes、QingCloud、OpenStack、VMWare 等。

微服務(wù),即眾所周知的微服務(wù)架構(gòu),這是程序設(shè)計的必然趨勢,企業(yè)創(chuàng)建新的應(yīng)用時選擇的主要方式。另外,開源項目 Kubernetes 已經(jīng)成為事實上的編排平臺的領(lǐng)導(dǎo)者,其在自動化部署、擴展性、以及管理容器化的應(yīng)用有著獨特的優(yōu)勢。但是,仍然有大量的傳統(tǒng)遺留應(yīng)用用戶想在毋須改變其架構(gòu)的情況下遷入到云平臺中,而且對很多用戶來講,采用微服務(wù)架構(gòu),或者是 Serverless 架構(gòu)還是比較遙遠的事情,所以,我們需要幫助這些用戶將他們的傳統(tǒng)應(yīng)用遷入到云計算平臺中,這也是 OpenPitrix 很重要的一個功能。

在2017年3月27日,QingCloud 發(fā)布?AppCenter,一款旨在為傳統(tǒng)企業(yè)應(yīng)用開發(fā)商和云用戶之間架設(shè)友好橋梁的平臺,該平臺最大的亮點在于其可以讓開發(fā)者以極低的學(xué)習(xí)成本就可以將傳統(tǒng)的應(yīng)用程序移植到 QingCloud 中運行,并且具有云計算的所有特性,如敏捷性、伸縮性、穩(wěn)定性、監(jiān)控等。通常,一位開發(fā)者只需花上幾個小時就可以理解整個工作流程,然后,再花一到兩周的時間(這具體要取決于應(yīng)用的復(fù)雜性)將應(yīng)用移植到云平臺中。該平臺上線之后一直頗受用戶的青睞和夸贊,但有一些用戶提出更多的需求,希望將之部署到他們內(nèi)部來管理他們的多云環(huán)境。為了滿足用戶的需求,QingCloud 將之擴展,即在多云的環(huán)境下管理多種類型的應(yīng)用程序,并且采用開源的方法來進行項目的良性發(fā)展。

俗語有云:"知易行難",盡管 OpenPitrix 原始團隊在云計算應(yīng)用開發(fā)有著足夠豐富的經(jīng)驗,并成功的開發(fā)出了穩(wěn)定的商業(yè)化產(chǎn)品:AppCenter,要知道,等待在前方的依然有很多困難要克服。OpenPitrix?從一開始就是以開源的方式來進行,并且在2017年的8月份在 GitHub 上創(chuàng)建了組織和項目,一直到2018年2月24日才寫下第一行功能代碼,在此期間,團隊的所有成員都在思考系統(tǒng)的每個關(guān)鍵點,這些討論的細節(jié)均可在 GitHub 上公開訪問。

以上便是 OpenPitrix 項目的來龍去脈介紹,接下來會解釋一些詳細的功能和設(shè)計細節(jié)。

主要的功能

OpenPitrix 所希望實現(xiàn)的功能包括以下內(nèi)容:

  • 支持多個云平臺,如 AWS、Azure、Kubernetes、QingCloud、OpenStack、VMWare 等等;
  • 云平臺的支持是高度可擴展和插拔的;
  • 支持多種應(yīng)用程序的類型:傳統(tǒng)應(yīng)用、微服務(wù)應(yīng)用、Serverless 應(yīng)用;
  • 應(yīng)用程序的支持也是高度可擴展的,這也就意味著無論將來出現(xiàn)哪種新的應(yīng)用程序類型,OpenPitrix 平臺都可以通過添加相應(yīng)的插件來支持它;
  • 應(yīng)用程序的倉庫是可配置的,這也就意味著由 OpenPitrix 所驅(qū)動的商店,其應(yīng)用均是可以用來交易的;
  • 應(yīng)用程序庫的可見性是可配置的,包括公開、私有或僅讓某特定的一組用戶可訪問,由 OpenPitrix 所驅(qū)動的市場,每個供應(yīng)商都能夠操作屬于她/他自己的應(yīng)用商店。

用戶場景實例

OpenPitrix 典型的用戶場景有:

  • 某企業(yè)是采用了多云的系統(tǒng)(包括混合云),要實現(xiàn)一站式的應(yīng)用管理平臺,從而實現(xiàn)應(yīng)用的部署和管理;
  • 云管平臺(CMP)可以將 OpenPitrix 視為其其中一個組件,以實現(xiàn)在多云環(huán)境下管理應(yīng)用;
  • 可以作為 Kubernetes 的一個應(yīng)用管理系統(tǒng)。OpenPitrix 和 Helm 有著本質(zhì)上的不同,雖然 OpenPitrix 底層用了 Helm 來部署 Kubernetes 應(yīng)用,但 OpenPitrix 著眼于應(yīng)用的全生命周期管理,比如在企業(yè)中,通常會按照應(yīng)用的狀態(tài)來分類,如開發(fā)、測試、預(yù)覽、生產(chǎn)等;甚至有些組織還會按照部門來歸類,而這是 Helm 所沒有的。

架構(gòu)概覽

OpenPitrix 設(shè)計的最根本的思想就是解耦應(yīng)用和應(yīng)用運行時環(huán)境(此處使用運行時環(huán)境代替云平臺,下同),如下圖所示。應(yīng)用程序能夠運行在哪個環(huán)境,除了需要匹配 provider 信息之外,還需要匹配應(yīng)用所在倉庫的選擇器 (selector) 和運行時環(huán)境的標簽 (label),即當某個最終用戶從商店里選擇了某個具體的應(yīng)用,然后嘗試部署它時,系統(tǒng)會自動選擇運行時環(huán)境。如果有多個運行時環(huán)境可以運行此應(yīng)用的話,則系統(tǒng)會彈出相應(yīng)的對話框來讓用戶自行選擇,更多設(shè)計細節(jié)請參考?OpenPitrix 設(shè)計文檔。

應(yīng)用程序倉庫子系統(tǒng)

如上面架構(gòu)概覽圖所示,倉庫子系統(tǒng)分為三大組件:倉庫管理 (Repo Manager)、倉庫索引 (Repo Indexer)、倉庫存儲 (App Repo);其中倉庫管理包括倉庫服務(wù) (Repo Service) 和其后端的數(shù)據(jù)庫 (Repo DB),架構(gòu)圖如下所示。用戶創(chuàng)建應(yīng)用倉庫時需配置的信息如:URL、憑證、是否可見等,通常是系統(tǒng)管理人員或開發(fā)者為平臺創(chuàng)建倉庫。倉庫索引的守護進程會周期性地掃描新增的倉庫、現(xiàn)有倉庫的任何更新,并將信息更新到應(yīng)用管理服務(wù)的數(shù)據(jù)庫中。我們可以看出,倉庫的存儲是獨立于特定的 OpenPitrix 平臺的,所以,倉庫存儲的應(yīng)用可以共享給任何基于 OpenPitrix 的應(yīng)用管理平臺使用。更多設(shè)計詳情請參考?OpenPitrix 倉庫子系統(tǒng)設(shè)計。

由倉庫組織的應(yīng)用,都可以作為獨立資產(chǎn)由基于 OpenPitrix 的商店來售賣。

如何將傳統(tǒng)的應(yīng)用遷移到多云的環(huán)境

首先要申明的是,OpenPitrix 不會特別地去區(qū)分多云和混合云之間的差別,在本文中,在沒有特別提示的情況下,多云意味著多個云環(huán)境,無論它們是公共云還是私有云,還是來自相同或不同的供應(yīng)商。

規(guī)范

很顯然,我們將大量借助 QingCloud AppCenter 的經(jīng)驗來實現(xiàn)在多云環(huán)境下“云化”傳統(tǒng)應(yīng)用,這其中包括規(guī)范在內(nèi)。為了簡單起見,我們在這里展示了一個不完整的 ZooKeeper 云化規(guī)范版本,如下所示,完整版本請參考?AppCeneter 示例,該規(guī)范很容易理解,文件?cluster.json.tmpl定義了 ZooKeeper 集群信息,如名稱、描述、多少節(jié)點(每個節(jié)點的 CPU、內(nèi)存、存儲、鏡像、生命周期等),雙花括號中的變量來自最終用戶從 UI 輸入的信息,這些變量是由文件config.json定義的。ZooKeeper 應(yīng)用開發(fā)者將這兩個文件打包上傳到 OpenPitrix 平臺,最終用戶在部署應(yīng)用的時候輸入必要的信息、點擊部署按鈕即可。這個應(yīng)用程序包(還包含語言文件)如同鏡像是虛擬機的模板一樣,它是一個應(yīng)用程序的模板,只是它相比鏡像更為的復(fù)雜罷了,因為它可能包括多個鏡像,而且要定義應(yīng)用程序集群的整個生命周期,還有,它還要支持自定義的監(jiān)控、健康監(jiān)測等等更多的功能。正如我們所看到的,開發(fā)者將傳統(tǒng)應(yīng)用移植到云平臺中除了幾個說明文件毋須任何的編碼。

cluster.json.tmpl for ZooKeeper

config.json for ZooKeeper

架構(gòu)

整個系統(tǒng)中最具挑戰(zhàn)性的工作就是如何將上述的一套標準的傳統(tǒng)應(yīng)用軟件包無需任何修改就能部署到多個云平臺中,因為傳統(tǒng)的應(yīng)用均是基于虛擬機而非容器的。OpenPitrix 設(shè)計團隊經(jīng)過了激烈的討論,最后總結(jié)出如下幾個原則:

  • OpenPitrix 自身是可以部署到任何地方的。因此,該平臺必須支持最終用戶同時將應(yīng)用程序部署到公共云和私有云中,這意味著 OpenPitrix 從架構(gòu)必須支持能夠通過公共互聯(lián)網(wǎng)部署應(yīng)用程序;
  • 針對每個 IaaS 平臺供應(yīng)商的架構(gòu)是一致的;
  • 最終用戶部署應(yīng)用程序毋須任何麻煩的配置,這意味著對于最終用戶而言,一切都是透明的,例如元數(shù)據(jù)服務(wù)的初始化。

經(jīng)過反復(fù)的討論后,我們提出了以下解決方案。首先解釋一下架構(gòu)中出現(xiàn)的一些術(shù)語。

  • Drone:該組件由 agent 和?confd?所構(gòu)成,Confd 是自動配置 app 實例的守護進程,agent 負責(zé)和 Frontgate 的通信,例如來自最終用戶發(fā)來的指令。agent 也會負責(zé)根據(jù)應(yīng)用的狀態(tài)啟動和停止 confd。Drone 是預(yù)先安裝到應(yīng)用程序所在的每一個鏡像中。
  • Frontgate:該組件包含 proxy 和 etcd,Etcd 是后端的存儲,存儲集群的信息包括集群名稱、描述、多少節(jié)點、由最終用戶發(fā)來的指令等。Proxy 連接 Pilot 和 Drone 的 agent,因為虛擬機是運行在 VPC 中,Pilot 無法和 Drone 直接進行通信,所以需要在它們二者之間設(shè)置一個 proxy。在有應(yīng)用運行的 VPC 中會存在一個 Frontgate,這個 VPC 內(nèi)的所有應(yīng)用集群共享這個 Frontgate,這個 Frontgate 是當最終用戶第一次部署應(yīng)用程序時,系統(tǒng)自動創(chuàng)建的,且 Frontgate 對最終用戶不可見。
  • Pilot:接受來自集群服務(wù)的指令和信息的組件,如創(chuàng)建集群等,并可以傳遞指令給 Frontgate,它還接收來自 Frontgate 上傳上來的信息。

毫無疑問,工作流程很復(fù)雜。我們以部署一個應(yīng)用程序為例來進行簡要的說明,一般步驟如下:

  • 最終用戶發(fā)送請求到 API 網(wǎng)關(guān),API 網(wǎng)關(guān)會將之轉(zhuǎn)發(fā)給相應(yīng)的服務(wù),如集群服務(wù);
  • 集群服務(wù)收到請求之后,將之放到 job 隊列,job 控制器收到后將其分解成 task,然后放到 task 隊列;
  • Task 控制器將 Task 從隊列中提出,然后去調(diào)用特定的云平臺 API,創(chuàng)建集群資源如主機;
  • 集群服務(wù)同樣會給 Pilot 發(fā)送集群的元數(shù)據(jù);
  • Pilot 轉(zhuǎn)發(fā)信息給 Frontgate 的 proxy,然后 proxy 會將信息注冊到后端的 Etcd;
  • 應(yīng)用程序鏡像內(nèi)部的 Drone 的 Confd 會監(jiān)測 etcd 的更新,然后自動更新應(yīng)用配置;
  • 最后,Drone 中的 agent 為用戶啟動應(yīng)用。
  • 整個流程,如下圖所示:

    應(yīng)用程序鏡像

    正如上面所闡述的,傳統(tǒng)應(yīng)用通常是部署到虛擬機中的,而微服務(wù)應(yīng)用往往是進行容器化的。如果我們使用虛擬機來支持傳統(tǒng)應(yīng)用部署到多云環(huán)境中的話,會遇到非常大的挑戰(zhàn)。這意味著應(yīng)用的開發(fā)者或供應(yīng)商在每一個環(huán)境中都需要上傳或創(chuàng)建鏡像,而這在現(xiàn)實中往往很難行得通,尤其是公有云供應(yīng)商提供很多的 region 和 zone。鑒于此種情況,我們選擇了在虛擬機中運行容器的方式來解決此問題,可以建立集中的容器鏡像倉庫,需要運行時直接拉到云平臺中的虛擬機中即可。此種方式也有弊端,那就是在網(wǎng)絡(luò)不好的地方,拉容器鏡像就是一個大的問題,如果下載容器鏡像的時間過長,對于用戶的體驗和耐心都是極大的挑戰(zhàn)。要解決此問題,在每個云環(huán)境部署緩存或 mirror 是非常好的選擇。第二個問題是開發(fā)人員需要知道 Docker,這似乎不是一個大問題,因為在我看來,掌握 Docker 是當今開發(fā)人員的基本技能。

    但是,我們依然需要支持直接在 VM 中安裝應(yīng)用程序軟件,并將 VM 分發(fā)到每個云環(huán)境中,原因如下。

    • 有一些應(yīng)用需要定制化 Linux 內(nèi)核;
    • 開發(fā)者沒有掌握 Docker 技術(shù),或者說因為額外的學(xué)習(xí)或開發(fā)成本,開發(fā)者并不愿意用 Docker 的方式將傳統(tǒng)應(yīng)用移植到云環(huán)境中;
    • 最終用戶沒有意愿去創(chuàng)建一個諸如 Kubernetes 這樣的容器編排集群去部署一個傳統(tǒng)應(yīng)用,或者是用戶沒有 Kubernetes 環(huán)境。

    在第一個版本中,會在虛擬機中使用 Docker 的方式來解決應(yīng)用程序鏡像的分發(fā)問題,在下個版本中,將支持直接在 VM 中安裝應(yīng)用程序軟件。

    如何支持多種類型的應(yīng)用

    正如我們開始所說的,OpenPitrix 是支持多種類型的應(yīng)用程序。當一個用戶開始部署一個應(yīng)用的時候,系統(tǒng)會自動識別應(yīng)用類型并選擇相應(yīng)的插件去創(chuàng)建應(yīng)用集群。我們用 provider interface 和 provider plugin 來支持不同類型應(yīng)用以及將來可能出現(xiàn)的未知應(yīng)用類型。系統(tǒng)目前有兩大類應(yīng)用類型:基于虛機的和基于容器的,前者是支持傳統(tǒng)應(yīng)用上云,這個我們已經(jīng)在上一章節(jié)解釋過了,現(xiàn)在我們解釋一下 OpenPitrix 如何支持日益流行的基于互聯(lián)網(wǎng)規(guī)模的應(yīng)用程序:微服務(wù)和 Serverless。對于 OpenPitrix 的第一個版本,沒有打算支持 Serverless,我們認為 Serverless 應(yīng)用還沒有標準,而且也沒有看清楚誰將贏得最后的勝利。市場上沒有與其他主要供應(yīng)商兼容的產(chǎn)品或服務(wù)。那么這樣的局面就是家家都是標準的制定者,所以,OpenPitrix 團隊決定第一個版本暫時先不支持將 Serverless 應(yīng)用部署到多云環(huán)境, 并持續(xù)關(guān)注 Serverless 最新標準的進展。

    另外,在容器的編排方面,開源項目 Kubernetes 已經(jīng)贏得了勝利,因此,OpenPitrix 會支持 Kubernetes。Helm?是一個非常不錯的 Kubernetes 包管理器,在第一版 OpenPitrix 中,我們使用 Helm 作為 Kubernetes 應(yīng)用程序的部署工具,在下一版或許會直接采用 Kubernetes 的應(yīng)用編排格式。

    如下圖所示,我們將 Helm 的客戶端打包到 OpenPitrix 中,另外 Helm 的服務(wù)端組件 Tiller 也會作為 OpenPitrix 的組件,這樣作為 OpenPitrix 的最終用戶,根本就不需要學(xué)習(xí)任何關(guān)于 Helm 的內(nèi)容,就可以將應(yīng)用部署到 Kubernetes 中,然而,在撰寫本文時,Helm 服務(wù)對于 Kubernetes 多集群的管理還尚待改善,詳情見 issues?1586和1918,因此,在問題解決之前,我們會要求用戶將 Tiller 安裝到每個 Kubernetes 集群中。當最終用戶配置 Kubernetes 集群時,系統(tǒng)將自動配置并測試 OpenPitrix 和 Kubernetes 集群之間的連通性。然后,用戶就可以將 Kubernetes 應(yīng)用程序部署到任意集群中了。

    總結(jié)

    我們規(guī)劃未來的 OpenPitrix 會增加更多的功能,例如:

    • 針對開發(fā)者的工作臺,可以讓開發(fā)者在此以極簡的方式開發(fā)應(yīng)用;
    • 開發(fā)者可以查看使用其應(yīng)用程序的所有狀態(tài)包括統(tǒng)計信息;
    • 計量計費功能
    • 各種報表功能
    • ......

    OpenPitrix 將會逐步發(fā)展為多云環(huán)境下應(yīng)用程序管理系統(tǒng)的全方位的解決方案。

    超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生

    總結(jié)

    以上是生活随笔為你收集整理的OpenPitrix 是一款开源多云应用程序管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。