Nova 計畫說明文件(still working)

  來自於NASA Ames Research Laboratory 的原始計畫
Nova 是一個IaaS系統主要的雲端運算結構控制器,個人與組織可透過Nova運用與管理私有雲端系統。
Nova 的設計核心如下:
  元件基礎架構       : 快速的增加新的行為模式與功能
  高可用性             : 高度擴展性,強大的工作量
  容錯能力             : 個別獨立的程序用以避免錯誤的連鎖反應
  可還原性             : 錯誤需要能輕易的被診斷,除錯與更正
  開源基礎             : Be a reference implementation for a community-driven api
  API 相容性          : Nova 致力於提供與熱門系統的API相容性,如Amazon EC2

該文件透過  Sphinx toolkit 撰寫,存留於原始樹,相關Nova額外的草案與計畫文件都可以在 OpenStack wiki 被找到與使用 。 管理人員請參照  docs.openstack.org.
各種參予社群開發的管道請查閱 Getting Involved

關鍵概念:
      Cloud Computing 101
      Service Architecture
      Running Nova

開發文件:
      Nova Quickstart
      Developer Guide
      Getting Involved

優秀文件檔案:
      quickstart.rst, line 21 P1 (this is one example of how to use priority syntax) * Document the assumptions about pluggable interfaces (sqlite3 instead of
      service.architecture.rst, line 77 P2: image store description
      runnova/network.vlan.rst, line 179need specific Nova configuration added
      runnova/network.vlan.rst, line 41Describe how a public IP address could be associated with a project (a VLAN)
      runnova/network.flat.rst, line 60add flat network mode configuration examples
      runnova/managingsecurity.rst, line 21This doc is vague and just high-level right now. Describe architecture that enables security.
      runnova/managing.images.rst, line 21Put info on managing images here!
      devref/volume.rst, line 21rework after iSCSI merge (see ‘Old Docs’) (todd or vish)
    document hardware specific commands (maybe in admin guide?) (todd)
    document a map between flags and managers/backends (todd)
      devref/fakes.rst, line 21document general info about fakes

指數與表單:
      Index
      Module Index
      Search Page


========================================================

Cloud Computing 101
         原來的名詞Cloud來自於各種提供運算能力的服務,在被整合後,成為一種雲狀的結構圖。更像是我們每天使用的電力。整合後的各項運算資源具有可被使用與分享或說分配的條件,即為一種雲端運算的模型。藉由網路來傳輸,伺服器負責儲存、應用、提供服務來達成完整的工作。

     Why Cloud?
         如同人類據說只使用了10%的腦能力一樣,許多在資料中心的電腦並未充分運用其運算的能力與網路頻寬。如果今天人類需要一次大量運算能力的電腦,未來卻不需要如此龐大的計算能力,此時購買設備將不符合需求。這時雲端運算服務便發揮作用,它提供根據需求而靈活的提供或是結束這些資源的使用,更好的是只需一些人力操作甚至全自動化。

雲的屬性:
根據需求的自動式服務 – 使用者無需耗費許多心思管理伺服器與網路
網路存取能力 – 任何運算能力都可透過網路來運用,並且在標準機制下使用各種裝置來完成
資源池雲中的資源根據需求分配給消費者
彈性基於需求迅速提供運算資源
計數服務就像各種付費的方式,資源使用依照合理的條件計費。如計時,計量,儲存使用率等等

雲端服務類型:
Cloud computing offers different service models depending on the capabilities a consumer may require. The US-based National Institute of Standards and Technology offers definitions for cloud computing and the service models that are emerging.
SaaS - Software as a Service
Provides the consumer the ability to use the software in a cloud environment, such as web-based email for example.
PaaS - Platform as a Service
Provides the consumer the ability to deploy applications through a programming language or tools supported by the cloud platform provider. An example of platform as a service is an Eclipse/Java programming platform provided with no downloads required.
IaaS - Infrastructure as a Service
Provides infrastructure such as computer instances, network connections, and storage so that people can run any software or operating system.

雲端的部屬類型:
When you hear terms such as public cloud or private cloud, these refer to the deployment model for the cloud. A private cloud operates for a single organization, but can be managed on-premise or off-premise. A public cloud has an infrastructure that is available to the general public or a large industry group and is likely owned by a cloud services company.
The NIST also defines community cloud as shared by several organizations supporting a specific community with shared concerns.
A hybrid cloud can be a deployment model, as a composition of both public and private clouds, or a hybrid model for cloud computing may involve both virtual and physical servers.

透過雲端架構的工作:
What have people done with cloud computing? Cloud computing can help with large-scale computing needs or can lead consolidation efforts by virtualizing servers to make more use of existing hardware (and possibly release old hardware from service.) People also use cloud computing for collaboration because of the high availability through networked computers. Productivity suites for word processing, number crunching, and email communications, and more are also available through cloud computing. Cloud computing also avails additional storage to the cloud user, avoiding the need for additional hard drives on your desktop and enabling access to large data storage capacity online in the cloud.

========================================================
Nova 概念與介紹
Nova 也被稱為 OpenStack Compute , 是一套用原控制基礎架構Iaas 的雲端運算平台軟體。類似Amazon EC2 Rackspace Cloud Servers. Nova 本身不包含虛擬化軟體,相反的他定義了一個驅動既有底層虛擬化作業系統的機制,並且將功能擴展為透過web API來進行操作。
此頁並不打算說明雲端運算、Iaas、虛擬化或是其他相關的技術,反而著眼於描述Nova如何實現這些概念。
在此概述一些使用者與管理者在安裝OpenStack需要了解的一些概念。個別段落的連結在adminguide/index 裡面有更詳盡的資訊。

概念: 使用者(Users)與項目(Projects)
       ●        Project 限制印象檔的存取
       ●        個別使用者存取與權限
       ●        個別使用者的金鑰(keypair)
       ●        個別Project 配額
概念: 虛擬化
       ●        KVM
       ●        UML
       ●        XEN
       ●        HyperV
       ●        qemu

概念:  Instances
       ●        instance 是一台在雲端內的虛擬機器

概念 Instance Type
       ●        instance type 描述了一個虛擬機器的cpu/mem/storage 能力值,一般人會說size(vcpu,Ram 數量).

概念: 系統架構(System Architecture)
        Nova 由7個主要元件組成,Cloud Controller 是整個架構的抽象代表,與所有元件都有互動。API service 的工作就像Cloud Controller 的前端web service一樣。Compute Controller 則是提供運算伺服器的資源。Object Store 則提供儲存的服務。Auth Manager 提供認證與授權的服務,Volume Controller 則提供快速與永久的block級存儲給運算伺服器。
        Network Controller 提供虛擬網路使Compute servers 能跟彼此互動亦能通到外部網路。Scheduler 則是選擇最適合的 Compute Controller 來啟動虛擬機器。
        Nova 建立在一個無分享訊息(Shared-nothing)基礎的架構上,所有主要元件包含Compute Controller , Volume Controller, Network Controller, 與 Object Store 可在多重主機上運作。 Cloud Controller 透過Http 與 Object Store 溝通,但是透過AMQP與Scheduler , Network Controller , Volume Controller 溝通,NOVA使用非同步呼叫以避免在等待回應時造成阻塞,當收到一個回應時一個call-back 才會被觸發。
        為了達成無共享財產在多份相同的組件之間,Nova保留所有雲端系統的狀態在分散式的數據儲存。透過atomic transaction的要求,系統狀態的更新被寫入這個數據儲存點。請求將系統數據狀態讀出來。在有限的情況下,讀取的結果短時間會被暫存在控制器內。(例如目前系統使用者列表)

概念: 儲存
     Volumes
        一個Volume 可以被拆卸的block儲存裝置,可以想像成一個USB隨身碟。一個volume一次只能被一個instance 所使用,模式跟SAN並不同。如果想將同一個Volume提供給多個instances使用,有一個方法是將Volume掛載後,再以NFS或是SAMBA的方式分享。


     Local Storage
        啟動的instance只要比m1.tiny還大,都會掛載一個本機磁碟,目前都是第二個磁區。

概念: Quota
Nova  支援個別project的資源分配,目前有instance 數量,cores總數量,Volumes 的數量,總儲存容量還有浮動IP數量。

概念: RBAC(roles based access control)
Nova API指令有身份層級存取控制能力,一個使用者可以有多重的層級(role或譯角色),層及定義了一個使用者可以使用哪些api_commands
有一個重點需要了解,一個用戶當前對於某個特定project的實際權限是,該使用者的user-specific project-specific 的交叉比對(INTERSECTION)
      例如一個使用者有使用api command  管理網路的身分,但需要project也有開放管理網路權限的條件才有用.

概念: API
  l   EC2
  l   OpenStack/Rackspace

概念: Networking
Nova Fixed IPs Floating IPs的概念。 Fixed IP 存在instance裡整個生命週期,直到明確的被關閉。 Floating ips 則是 ip可以被動態裝載到一個instance內。這個IP 可以隨時被卸載並掛載到另一個instances上。

以下是多種實現fixed ips 的模式:
         Flat Mode
最簡單的網路模式,每個 instance pool接收一個fixed ip使用。所有instances橋接到同一個橋接介面預設br100. 橋接需要手動設置。 網路設定在instance被啟動之前會被注入。目前只對linux 相似的作業系統有用,因為注入的目標檔案是/etc/network/interfaces

         FlatDHCP Mode
flat mode相近,所有instances掛載同一個橋接介面,這個模式中,nova會進行多一點的設定。嘗試橋接(bridge)到一個乙太網路裝置(eth0預設) ,透過dnsmasq 做為dhcp服務,監聽這個橋接介面,instances 藉由dhcpcover收到fixed IPs.

         VLAN DHCP Mode
這是預設的網路模式也支援最多的功能。在多機安裝的佈署中,須要有一個switch 支援 host-managed vlan tagging, 交換機本身需具備解析訊框的能力。此模式中,Nova會建立一個VlanBridge給個別project. Project 收到的private ips 只能在vlan內部存取。為了讓用戶能存取他們project中的instances , 一個特別的 vpn instance (code named cloudpipe) 需要被建立。Nova生成一組認證書跟金鑰讓使用者能進入vpn並自動啟動vpn. 更多關於cloudpipe 請點連結http://nova.openstack.org/devref/cloudpipe.html#cloudpipe

下面的圖示說明了當溝通發生時vlanpublic internet 的關係


概念: Binaries
Nova 實現在數個相近的binary之上。這些binary 可以跑在相同或是許多機器上,個別binary 細節在http://nova.openstack.org/runnova/binaries.html#binaries developer guide

概念: nova-manage
      nova-manage 指令提供管理者基本管理能力,如建立使用者、vpn管理等等
查閱nova.manage 細節請看 Administration Guide

概念: Plugins
  • Managers/Drivers: utils.import_object from string flag
  • virt/connections: conditional loading from string flag
  • db: LazyPluggable via string flag
  • auth_manager: utils.import_class based on string flag
  • Volumes: moving to pluggable driver instead of manager
  • Network: pluggable managers
  • Compute: same driver used, but pluggable at connection
概念: IPC/RPC
Nova 藉由RabbitMQ 做為AMQP傳遞標準來進行不同服務的溝通,訊息列表服務使用在本機與遠端通訊,因Nova的這種設計,所以不需要所有服務都存在於同一個實體機器上。RabbitMQ特別穩定,提供了Nova所需的效率與可靠度。更多關於Rabbit請至http://www.rabbitmq.com/

概念: Fakes
l auth
l ldap

概念: Scheduler
l simple
l random

概念: Security Group
        用以限制instance 與外界存取的策略,例如ssh 需要被使用,則security group便需要加入 TCP/22 的通行條件,一般可設為0.0.0.0/0 代表任何網路的使用者皆可進入。

概念: Certificate Autohrity
      Nova有一個小型的簽證管理功能,這個簽證用在project vpns bundle image解碼。

概念: Images
 l launching
l bundling

=========================
Service Architecture
Nova 雲架構由一下主要元件組成:
  • API Server
  • Message Queue
  • Compute Worker
  • Network Controller
  • Volume Worker
  • Scheduler
  • Image Store

API Server
API server 是雲層骨架的心臟.這個API server 用以執行與控制虛擬化程序、儲存與網路編程,讓使用者操作定義的雲端運算。
API節點使用基本的HTTP服務藉由各種 API介面來處理認證、授權跟基本命令控制功能,API介面符合Amazon RackSpace 與任何相似的模型。這讓 API 能與各種已經存在的雲端供應商進行互動。如此廣泛的相容性避免單一供應商的壟斷行為。
訊息佇列Message Queue
訊息佇列擔任各節點間訊息的管理人,compute node/Volume/Networking controller/API endpoint/Scheduler 還有相關的元件,由多個API節點,以HTTP請求與雲端控制器溝通。
典型的訊息傳遞事件當API server 從使用者收到一個要求開始,API認證使用者確定使用者有發出此命令的權限。進行關聯性請求的可用性評估,如果要求可用,則轉遞到相關worker的佇列引擎。 Workers根據自己的角色或是他們的主機類型去聽取佇列的請求。當工作產生,worker接收任務並且開始執行任務。完成後,派送回應至佇列給API server 並傳遞給發出要求的使用者。資料庫在必要過程中會被查詢/增加/刪減。

Compute Worker
Compute workers 管理運算主機上的instances, 透過API命令傳遞給compute worker的有:
  • Run instances 啟動instance
  • Terminate instances 關機instance
  • Reboot instances 重新啟動 instance
  • Attach volumes 掛載Volume
  • Detach volumes 卸載 Volume
  • Get console output 取得控制台輸出(console output)的結果
Network Controller
Network Controller 管理主機上的網路資源,API server 透過訊息佇列傳遞給Newtworker 要運作的命令,指定的動作包括:
  • Allocate Fixed IP Addresses 分配固定IP
  • Configuring VLANs for projects 設定Project虛擬區網(Virtual Local Area Network
  • Configuring networks for compute nodes 設定運算節點的網路
Volume Workers
  • Create Volumes 創建Volume
  • Delete Volumes 刪除Volume
  • Establish Compute volumes 建立電腦的Volume
Volume可以輕易轉換到不同instance , 但是一次只能掛載到單一個instance


=============================
Running NOVA 啟動 NOVA


這段導引簡單描述執行與管理Nova , 關於更多管理文件請參閱 docs.openstack.org

啟動雲端
最快的建立一個測試用雲端的方式是透過Nova Quickstart . 依靠一個腳本 nova.sh 在單一機器上運作。
Nova雲端架構透過一系列在各服務機器上的常駐程序來互相溝通。Nova Quickstart 程序啟動為使用者啟動這些常駐程序的簡單版本,當你熟悉Nova的用法後,可以閱讀Service Architecture and Nova Daemons. 來了解更多關於Nova的常駐程序。

dministration Utilities 管理工具
有兩個主要的管理工具
Nova-manage 命令只提供給有管理權限的使用者。而euca2ools則可以讓所有使用者執行


使用者與資源管理
Nova-manage 與 euca2ools指令使用基本的介面使用廣泛的管理功能。這一段,你可以閱讀更多關於完整特定管理的工作

本段落關於背後的核心物件請參照 Object Model

部署

從兩個節點開始多點架構,一個cloud controller 跟一個compute node. Cloud controller 包含所有nova-services外加一個nova資料庫,compute node 安裝所有nova-service 但參照cloud controller 的資料庫。
確定nova.conf 有指定相對應的資料庫位址。如果有效能問題在資料庫的 I/O 但是因為訊息佇列正在備份,你可以增加額外的訊息服務(rabbitmq), 多節點部署請參照Installing and Configuring OpenStack Compute.
 Networking
 Advanced Topics

















Comments

Popular posts from this blog