6g下載網
當前位置: 主頁 > 軟件教程 > 云計算 >

OpenStack云控制器和云管理設計教程

時間: 2016-12-27 17:17 來源: 本站整理

分享到:

今天小編整理一篇OpenStack云控制器和云管理設計教程的文章和大家分享,希望能給大家提供幫助。

OpenStack被設計為可大規模水平擴展,這允許所有服務廣泛分布。然而,為了簡化本指南,我們決定使用云控制器的概念來討論更中心性的服務。云控制器只是一個概念上的簡化。在現實世界中,您為云控制器設計一個架構,實現高可用性,以便任何節點發生故障時,另一個節點可以接管所需的任務。實際上,云控制器任務分布在多個單一節點上。

云控制器為OpenStack部署提供中央管理系統。通常,云控制器管理認證并通過消息隊列向所有系統發送消息。

對于許多部署,云控制器是單個節點。但是,為了具有高可用性,您必須考慮幾個注意事項,我們將在本章中介紹。

云控制器管理云的以下服務:

- 數據庫

跟蹤有關用戶和實例的當前信息,例如,在數據庫中,通常是每個服務管理的一個數據庫實例。

- 消息隊列服務

服務的所有高級消息隊列協議(AMQP)消息根據隊列代理接收和發送

- Conductor服務

數據庫代理請求。

- 身份管理的身份認證和授權

指示哪些用戶可以對某些云資源執行什么操作; 但是,配額管理在服務之間是分散的。

- 鏡像管理服務

存儲和提供包含元數據的圖片,可在云中啟動。

- 調度服務

指示首先使用哪些資源; 例如,基于算法在實例被啟動的地方展開。

- 使用儀表板

提供基于Web的前端,供用戶使用OpenStack云服務。

- API端點

提供每個服務的REST API訪問權限,其中API端點目錄由身份服務管理。

對于我們的示例,云控制器具有表示云的全局狀態的nova- *組件的集合;談判服務如認證;在數據庫中維護關于云的信息;通過隊列與所有計算節點和存儲工作者通信;并提供API訪問。在指定的云控制器上運行的每個服務可以被分解成單獨的節點以用于可擴展性或可用性。

作為另一個示例,您可以使用成對的服務器用于集合云控制器 - 一個活動的,一個備用 - 用于冗余節點,提供給定的一組相關服務,例如:

- 用于API請求的前端Web,用于選擇引導實例的計算節點的調度程序,Identity服務和儀表板

- 數據庫和消息隊列服務器(如MySQL,RabbitMQ)

- 圖像管理的圖像服務

現在你看到了無數的設計來控制你的云,閱讀更多關于進一步的考慮,以幫助您的設計決策。

硬件考慮

云控制器的硬件可以與計算節點相同,但您可能需要根據運行的云的大小和類型進一步指定。還可以使用虛擬機來處理云控制器管理的所有或部分服務,例如消息隊列。 在本指南中,我們假設所有服務都直接在云控制器上運行。下表包括在為云控制器設計調整硬件大小時需要查看的常見注意事項。

OpenStack云控制器和云管理設計教程

服務分離

雖然我們的示例將所有中央服務都包含在一個位置,但是將服務分離到不同的物理服務器上也是一個好主意。 下表是一些服務分離的部署方案及其理由的列表。

OpenStack云控制器和云管理設計教程

總是出現的一個選擇是是否虛擬化。 某些服務(如nova-compute,Swift-proxy和swift-object服務器)不應進行虛擬化。 然而,控制服務器通常可以快速虛擬化 - 性能損失通常可以通過簡單地運行更多的服務來抵消。

數據庫

OpenStack Compute使用SQL數據庫來存儲和檢索狀態信息。 MySQL是OpenStack社區中流行的數據庫選擇。數據庫的丟失導致錯誤。 因此,我們建議您對數據庫進行集群,以使其容錯。 配置和維護數據庫集群在OpenStack外部完成,并由您選擇在云環境中使用的數據庫軟件決定。 MySQL / Galera是基于MySQL數據庫的流行選項。

消息隊列

大多數OpenStack服務使用消息隊列相互通信。例如,Compute通過消息隊列與塊存儲服務和網絡服務進行通信。此外,您可以選擇啟用任何服務的通知。 RabbitMQ,Qpid和Zeromq都是消息隊列服務的流行選擇。一般來說,如果消息隊列失敗或變得不可訪問,集群會停止并停止在只讀狀態,信息會停留在發送最后一條消息的點。因此,我們建議您對消息隊列進行集群。請注意,集群消息隊列可能是許多OpenStack部署的一個痛點。盡管RabbitMQ具有本機集群支持,但是在大規模運行它時出現了一些問題。當其他排隊解決方案可用時,如Zeromq和Qpid,Zeromq不提供狀態隊列。 Qpid是Red Hat及其衍生產品的首選消息系統。 Qpid沒有本機集群功能,需要一個補充服務,如Pacemaker或Corsync。對于消息隊列,您需要確定您感到舒適的數據丟失級別,以及是否使用OpenStack項目在發生故障時重試多個MQ主機的能力,例如使用Compute的能力這樣做。

Conductor服務

在先前版本的OpenStack中,所有nova-compute服務都需要直接訪問托管在云控制器上的數據庫。這是有問題的兩個原因:安全性和性能。關于安全性,如果計算節點被攻破,攻擊者固有地訪問數據庫。關于性能,對數據庫的nova-compute調用是單線程和阻塞。這會創建性能瓶頸,因為數據庫請求是順序執行的,而不是并行執行的。指揮服務通過充當nova-compute服務的代理來解決這兩個問題。現在,不是nova-compute直接訪問數據庫,而是與nova-conductor服務聯系,nova-conductor代表nova-compute訪問數據庫。由于nova-compute不再直接訪問數據庫,因此安全問題已解決。另外,nova-conductor是非阻塞服務,因此來自所有計算節點的請求被并行地實現。

注意:如果您在云環境中使用nova網絡和多主機網絡,nova-compute仍然需要直接訪問數據庫。

nova-conductor服務是水平可擴展的。 為了使nova-conductor具有高可用性和容錯能力,只需在同一服務器或多個服務器上啟動更多的nova-conductor進程實例。

應用程序接口(API)

所有公共訪問(無論是直接的,通過命令行客戶端還是通過基于Web的儀表板)都使用API??服務。在http://developer.openstack.org/找到API參考。您必須選擇是要支持Amazon EC2兼容性API還是僅支持OpenStack API。在運行兩個API時可能會遇到的一個問題是在引用圖像和實例時遇到不一致的體驗。例如,EC2 API是指使用包含十六進制的ID的實例,而OpenStack API使用名稱和數字。類似地,EC2 API傾向于依靠DNS別名來聯系虛擬機,而OpenStack通常列出IP地址。如果OpenStack沒有以正確的方式設置,則很容易出現用戶由于只有不正確的DNS別名而無法聯系他們的實例的情況。盡管如此,EC2兼容性可以幫助用戶遷移到您的云。與數據庫和消息隊列一樣,擁有多個API服務器是一件好事。傳統的HTTP負載均衡技術可用于實現高可用性nova-api服務。

擴展

API規范定義了OpenStack API的核心操作,功能和介質類型。 客戶端可以始終依賴于此核心API的可用性,并且實施者總是需要對其進行全面支持。 要求嚴格遵守核心API允許客戶端在與同一API的多個實現進行交互時依賴于最低級別的功能。 OpenStack Compute API是可擴展的。 擴展向API添加了超出核心中定義的能力。 新功能,MIME類型,操作,狀態,標題,參數和資源的引入都可以通過對核心API的擴展來實現。 這允許在API中引入新特性,而不需要版本更改,并允許引入供應商特定的利基功能。

調度

調度服務負責確定應當創建虛擬機或塊存儲卷的計算或存儲節點。 調度服務從消息隊列接收這些資源的創建請求,然后開始確定資源應該駐留的適當節點的過程。 該過程通過對可用的節點集合應用一系列用戶可配置的過濾器來完成。目前有兩個調度器:虛擬機的nova-scheduler和塊存儲卷的cinder-scheduler。 兩個調度程序都能夠水平擴展,因此為了實現高可用性,或者對于非常大或高調度頻率的安裝,您應該考慮運行每個調度程序的多個實例。 調度器都偵聽共享消息隊列,因此不需要特殊的負載均衡。

鏡像

OpenStack Image服務由兩部分組成:glance-api和glance-registry。 前者負責圖像的交付; 計算節點使用它從后端下載圖像。 后者維護與虛擬機映像相關聯的元數據信息,并且需要數據庫。 glance-api部分是允許選擇后端的抽象層。 目前,它支持: OpenStack對象存儲允許將圖像存儲為對象。文件系統使用任何傳統的文件系統將圖像存儲為文件。 S3 允許您從Amazon S3抓取圖像。 HTTP 允許您從Web服務器獲取圖像。 您無法使用此模式寫入圖像。如果您有OpenStack對象存儲服務,我們建議將其用作可擴展的地方來存儲圖像。 您還可以使用具有足夠性能的文件系統或Amazon S3,除非您不需要通過OpenStack上傳新映像的能力。

儀表板

OpenStack儀表板(地平線)為各種OpenStack組件提供基于Web的用戶界面。 儀表板包括用于管理其虛擬基礎架構的最終用戶區域和用于云運營商作為整體管理OpenStack環境的管理區域。儀表板實現為通常在Apache httpd中運行的Python Web應用程序。 因此,您可以將其視為與任何其他Web應用程序相同,只要它可以通過網絡訪問API服務器(包括其管理端點)。

認證和授權

支持OpenStack認證和授權的概念來自于很好理解和廣泛使用的類似性質的系統。用戶具有可用于驗證的憑據,他們可以是一個或多個組(稱為項目或租戶,可互換)的成員。例如,云管理員可能能夠列出云中的所有實例,而用戶只能看到他當前組中的那些實例。資源配額(如可用的核心數量,磁盤空間等)與項目相關聯。 OpenStack Identity提供認證決策和用戶屬性信息,然后由其他OpenStack服務使用來執行授權。策略在policy.json文件中設置。有關如何配置這些的信息,請參閱管理項目和用戶 OpenStack Identity支持用于身份驗證決策和身份存儲的不同插件。這些插件的示例包括:內存中鍵值存儲(簡化的內部存儲結構) SQL數據庫(如MySQL或PostgreSQL) Memcached(分布式內存對象緩存系統) LDAP(如OpenLDAP或Microsoft的Active Directory)許多部署使用SQL數據庫;然而,對于需要集成的現有身份驗證基礎架構的人來說,LDAP也是一個受歡迎的選擇。

網絡注意事項

因為云控制器處理這么多不同的服務,它必須能夠處理擊中它的流量。 例如,如果您選擇在云控制器上托管OpenStack Image服務,則云控制器應能夠支持以可接受的速度傳輸映像。作為另一個示例,如果選擇使用單主機網絡,其中云控制器是所有實例的網絡網關,則云控制器必須支持在云和公共Internet之間傳輸的總流量。我們建議您使用快速NIC,例如10 GB。 您也可以選擇使用兩個10 GB NIC并將其綁定在一起。 雖然您可能無法獲得完全綁定的20 GB速度,但不同的傳輸流使用不同的NIC。 例如,如果云控制器傳輸兩個圖像,每個圖像使用不同的NIC,并獲得完整的10 GB帶寬。

OpenStack云控制器和云管理設計教程的文章和大家分享結束,感謝閱讀!

(責任編輯:大衛)

分享到:

------分隔線----------------------------
? 35选7福利彩票