MAAS

MAAS Overview

What is MAAS?

MAAS 全名為 Metal As A Service,它提供一些介面及方式,讓使用者可以用類似管理雲端虛擬機器(VM)的彈性方式,來管理實體的伺服器(bare metal),此外如 KVM 等虛擬機器也能被視為Node被管理。在此平台上,所有的機器都能夠快速的被調配及摧毀,如同Amazon AWS、Google GCE、Microsoft Azure提供的服務一樣。

MAAS 可以視為一個獨立的 PXE 服務,或者與其他技術相結合。尤其是,它與 Juju (the service and model management service)之間的工作相容性特別好。

完美的組合:使用 MAAS 管理機器(machines),並使用 Juju 管理在這些機器上運行的服務(services)。

MAAS 相當於是 Juju 的 backend (resource pool) ,換句話說也就是 Juju 的 “cloud provider"。 因此在 Juju 所做的操作也會衍伸影響到 MAAS 的狀態。例如: Juju 端移除了一台機器, MAAS 端也會有一台機器被釋放回pool。


What MAAS offers?

MAAS 能夠創建一個額外的單一資源池(single resource pool),去管理大量的實體機器。參與的機器都可以被自動配置(Debian preseed)和正常使用。當不再需要這些機器時,他們也會被釋放回池中。MAAS提供了一些必要的功能,包括:

  • web UI
  • API/CLI support
  • HA(high availability)
  • IPv6 support
  • open source IP address management (IPAM)
  • Ubuntu, CentOS, or Windows installation support
  • inventory of components
  • DHCP and DNS for other devices on the network
  • VLAN and fabric support

How MAAS works?

MAAS 管理節點(a pool of nodes)的流程,簡單分為幾個階段狀態:

  1. “Enlisting" state: 註冊新系統
  2. “Commissioning" state: 預備被用來開啟service
  3. “Ready" state: 已經準備完成
  4. “Allocated" state: 配置給user
  5. “Deployed" state: 佈署service
  6. “Releasing" state: 使用完畢後,可以釋放資源回到pool

MAAS 是透過如 IPMICisco UCS 這樣的介面來管理實體機器。

  • IPMI: 智慧平台管理介面(Intelligent Platform Management Interface),能夠橫跨不同的作業系統、韌體和硬體平台,可以智慧型的監視、控制和自動回報大量伺服器的運作狀況,以降低伺服器系統成本。
  • Cisco UCS: Cisco整合運算系統(Cisco Unified Computing System),與IPMI概念十分接近。

Key components and colocation of all services

MAAS 中最重要的兩個組件是 region controller 與 rack controller ,透過這兩個控制器才能完整的控制所有的部屬工作。
若要達成HA的話,在系統架構下,就要同時存在許多的region controller 與 rack controller。此外,DHCP的配置也是使服務能成功運作的關鍵。


文章參考資料

  1. MAAS 官方文件
  2. MAAS 運作流程
  3. wiki – IPMI
OpenStack

OpenStack Overview

What is OpenStack?

OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.


OpenStack core services

  • Keystone → Identity: 身分驗證、Token驗證
  • Nova → Compute: 計算、管理VM
    • Nova-api: 接受與回應user,負責API的呼叫
    • Nova-compute: 一個worker daemon,透過hypervisor的API建立VM,流程如下:
      1. 從Queue接受命令後,啟動KVM,並到DB更新狀態
      2. 與nova-volume及Ceph關係緊密
    • Nova-volume: 管理、增減volume到instance上
      (Cinder is a replacement of nova-volume)
    • Nova-network: 從Queue接收命令後,掌管網路的操作
      (Neutron is a replacement of nova-network)
    • Nova-scheduler: 從Queue接收instance的請求,負責決定要由哪一台host來執行(最佳化)
  • Neutron → Networking: 網路通訊
    • 特色如下:
      1. 可以讓user配置自己的網路
      2. pluggable backend
      3. 負責Layer 1-Layer 3的網路部分
      4. 提供HAProxy達到Load Balance as a Service
    • 組成如下:
      1. Neutron-server: 接受API請求,並路由到指定的plugin
      2. Neutron plugins and agents: 負責實際的網路運作
      3. Queue: 訊息傳遞
  • Glance → Image Service: 管理Image metadata
  • Swift → Object Storage: 儲存物件(ex: virtual disks, images, backup archiving),避免SPOF(Single Point Of Failure),自我修復
  • Cinder → Block Storage: 儲存區塊(ex: volumn, snapshot),但較缺乏scaling的部分
  • Queue → Message: 提供daemon之間的訊息傳遞,優點是可以buffer large workload
  • Database → State: 記錄各種狀態、時間資訊

OpenStack optional services

  • Horizon → Dashboard: 儀表板(Web UI),stateless,init API calls
  • Ceilometer → Telemetry: 收費、benchmark、擴充性、統計
  • Heat → Orchestration: 透過一些模板做查詢等

文章參考資料

  1. OpenStack 官方Overview
  2. aboutyun論壇 – 一分钟快速入门openstack
  3. Mastering Openstack – Omar Khedher (ISBN:978-1-78439-564-3)