OpenStack之Fuel架構及其工作原理


 

一、Fuel架構

Fuel是一個開源的OpenStack部署和管理的工具,它允許用戶通過Web UI進行OpenStack的部署和管理,並可以通過插件來擴展。

Fuel的目標:加快和簡化不同配置的OpenStack環境的部署、測試和維護。

Fuel面向普通用戶提供了多種不同需求的簡化的OpenStack部署方式,主要特性有:

自動發現硬件環境;

UI界面配置;

    多OpenStack集群管理;

    可選是否做HA;

    部署前的配置及網絡檢查;

    部署后的OpenStack環境測試;

    UI界面實時查看日志;

    支持CentOS和Ubuntu,通過擴展也可支持其他版本。

 

 Fuel的架構如下:

  

 Fuel由許多獨立的組件構成,有些組件來自第三方,如Cobbler、Puppet、Mcollective等。

    UI基於bootstrap和backbone框架使用JavaScript開發。

    Nailgun是Fuel的核心組件,使用Python開發。它提供用於部署和管理的REST API;管理磁盤卷配置數據、網絡配置數據以及其他環境相關的數據。它能夠根據編排邏輯按照正確順序生成部署命令。Nailgun使用SQL數據庫保存數據,使用AMQP服務與workers進行交互。用戶通過Web UI或 Fuel CLI與其進行交互。

Astute是另外一個重要的組件,代表着nailgun的workers。它主要是根據nailgun提供的指令運行着某些操作。Astute實際上什么東西都沒有只是一層封裝着所有細節和相互影響的服務比如cobbler、puppet、shell scripts等等,和提供了異步通用接口給那些服務。它是通過其他基本本地協議(比如XML-RPC協議)來管理這些服務或者可以使用Mcollective agents去提供定義好的命令比如運行’puppet apply’在其他的遠程節點上面或運行某些腳本。當然它是通過AMQP來與nailgun交互數據。

    Cobbler用於網卡啟動環境准備,被用來提供快速網絡安裝的linux服務。

    Puppet用戶部署,可以通過MCollective agent去管理其他的配置管理框架,比如Chef,SaltStack等。

    Mcollective agents用於執行類似硬件驅動清理、網絡連接探查等特別任務。

    OSTF(OpenStack Testing Framework/Health Check)是一個獨立的組件,用於在部署后測試OpenStack環境。

 

二、Fuel執行原理

 

1、節點部署

  Fuel說具體點就是個管理節點。這個節點包含了給節點提供網絡、安裝操作系統以及部署openstack創建雲平台環境等所有服務。上面說了nailgun是fuel里面的最重要的服務。它是用Python編寫的RESTful應用程序包含所有系統的業務邏輯。

  一個用戶能通過頁面或者CLI來編輯配置、給新節點分配角色以及搭建集群。

  Naligun的數據都是存儲在postgreSQL數據庫里(跟mysqlfreedb一樣屬於開源的數據庫)。這些數據包含了新節點硬件配置信息、角色、環境配置、現狀部署情況等。

  管理節點里的PXE服務使用了特殊的bootstrap image來發現新的節點。這個bootstrap image運行着特殊的腳本——nailgun agent.rb這個腳本收集了服務器硬件信息並提交給了nailgun通過REST API。

  部署程序是在用戶配好了環境才開始啟動的。Nailgun服務端會創建一個環境配置的JSON數據文件然后交給rabbitmq隊列中。這個信息會被一個“任務執行者“——Astute接受。最終由它去發送配置任務給其他組件安裝部署節點。

  Astute workers會去主動監聽rabbitmq隊列並接受消息。首先,一旦有提供環境的節點,astute會使用XML-RPC去給cobbler設置那些節點的配置並使用mcollective重啟那些節點讓cobbler去安裝基礎操作系統。Cobbler是一個部署系統能控制DHCP和TFTP服務並使用他們去網絡啟動那些節點以及部署系統根據用戶的配置內容。

  Astute發送一個特殊的信息給rabbitmq隊列包含着所有需要在托管節點的操作。在已經被引導啟動的節點上mcollectvie服務端會去監聽剛才發送消息,一旦有消息過來他們就會運行所需的代理的操作與給定的參數。Mcollective客戶端只是一組ruby腳本程序。這些程序會去運行mcollective所需要的執行的操作。

2openstack環境部署

  各節點的基礎操作系統安裝完成后,Astute便開始部署OpenStack的服務了。

  1) 首先,Astute通過uploadfile agent將節點配置傳至節點機器的/etc/astute.yaml文件,該文件包含所在節點的所有參數和配置信息;

  2)  然后,Astute通過puppetsync agent同步Puppet的modules和manifests到各節點。這個agent其實就是運行rsync命令,而rsyncd服務就在Master節點。

  3) 同步完成后,Astute通過puppet apply(Fuel沒有使用puppet的master-agent的方式,而是直接在各節點apply的)命令執行Puppet manifest的site.pp。MCollective agent使用daemonize工具在后台執行puppet(不過在Fuel9.0部署后的節點上沒有找到這個文件):

  daemonize puppet apply /etc/puppet/manifests/site.pp

 

  同時,Astute定期通過agent檢查部署過程是否已經完成,並將進度通過RabbitMQ報告給Nailgun,從而可以在UI前端看到安裝進度和實時的日志。

    部署過程啟動后,Puppet讀取astute.yaml文件作為fact,然后轉化數據到$fuel_settings數據結構中,后者在部署過程中用來獲取所有的配置信息。

 

  當puppet進程退出來之后無論成功還是返回一個錯誤,astute都會從節點得到一個報告文件並發送一個結果給nailgun。然后用戶可以通過監控看到這個日志,無論是從fuel界面還是cli。

 

  Astute也可以做額外的部署操作,這要根據用戶的環境配置,都可以添加無論部署是否已經完成:

   生成和上傳SSH keys

  網絡驗證

  上傳cirros鏡像

  上傳/etc/hosts文件給所有節點

  上傳RadosGW map(ceph節點)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM