Murano環境搭建、使用介紹和思考

  murano是OpenStack的Application Catalog服務,推崇AaaS(Anything-as-a-Service)的概念,通過統一的框架和API實現應用程序快速部署和應用程序生命週期管理的功能,降低應用程序對底層平臺(OpenStack層和虛擬化層)的依賴。
  目前,容器技術的火爆使沉默已久的PaaS煥發了青春,各種概念曾出不窮,比如CaaS(Container-as-a-Service),ePaaS(elastic PaaS),其核心思想就是通過通過Container打包應用。仔細想想,過去幾年PaaS一直不瘟不火,或者直白一點在IaaS面前顯得那麼雞肋,總結起來主要有以下幾點原因:
  (1)嚴重依賴IaaS層的實現,比如需要IaaS層提供服務編排和彈性擴展的功能;
  (2)處於SaaS和IaaS的夾縫中,很多功能SaaS層和IaaS實現起來更方便; 
(3)
沒有統的對外接種平臺林立(OpenShift,CloudFundry,GAESAE一; 
(4)應用上
PaaS難,沒有規範的應用發佈標準

  Container的出現,徹底解決了(1)和(2)兩個問題,而且提供了更好的用戶體驗(部署快,性能好),並且能夠反過來蠶食SaaS和IaaS的空間(比如CaaS和AaaS的概念)。但是(3)和(4)仍然實現是最需要解決的兩個核心問題:標準的接口和標準的應用發佈流程。murano針對這兩個問題提出的解決框架:標準的對外API(OpenStack API)、標準的應用打包規範(http://murano.readthedocs.org/en/latest/articles/app_pkg.html)和標準的應用生命週期管理流程。

1. DevStack安裝部署murano

(1) 從https://github.com/openstack/murano/tree/master/contrib/devstack處下載extras.d和lib下的文件,然後執行如下命令

    $ cp lib/murano ${DEVSTACK_DIR}/lib
    $ cp lib/murano-dashboard {DEVSTACK_DIR}/lib
    $ cp extras.d/70-murano.sh {DEVSTACK_DIR}/extras.d

(2)編寫localrc文件

    DATABASE_PASSWORD=123456
    RABBIT_PASSWORD=123456
    SERVICE_TOKEN=123456
    SERVICE_PASSWORD=123456
    ADMIN_PASSWORD=123456

    disable_service n-net
    enable_service q-svc
    enable_service q-agt
    enable_service q-dhcp
    enable_service q-l3
    enable_service q-meta
    enable_service q-lbaas
    enable_service q-vpn

    DEST=/home/OpenStack/workspace

    DATA_DIR=$DEST/data
    SERVICE_DIR=$DEST

    LOGDIR=/home/OpenStack/workspace/logs
    LOGFILE=$LOGDIR/stack.sh.log
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=$LOGDIR/screens

    Q_PLUGIN=ml2
    ENABLE_TENANT_VLANS=True

    LOGDAYS=1

    #RECLONE=True
    #OFFLINE=True

    GIT_BASE="http://github.com"

    IMAGE_URLS=http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

    # Enable Heat
    enable_service heat h-api h-api-cfn h-api-cw h-eng

    # Enable Murano
    enable_service murano murano-api murano-engine

2. 安裝過程遇到問題

(1)如果之前通過devstack安裝過openstack,可能存在依賴的pip包和python-xxxclient版本太低的問題

   sudo pip install python-openstackclient --upgrade

具體錯誤參見文章《openstack image list: error: unrecognized arguments: --property status=active
(2)目錄權限問題: ~/.cache/pip目錄沒有寫入的權限

3. Murano使用總結
  這裏先簡單的介紹murano的使用,對於具體的原理性的知識後續專門進行介紹。
  murano成功搭建完成後,會在horizon多出murano相關的菜單,如下圖所示。

用戶使用murano,首先需要將自己的applications或者mirantis application catalog的應用導入,下面以從mirantis application catalog導入應用爲例,目前支持三種類型的應用導入方式:文件、Repository和URL。
(1)文件,指的是將應用按照murano的應用打包規範做成的zip包
(2)Repository,指的的應用的源碼的git repository,可以自己搭建本地的repo,也可以使用mirantis的
(3)URL,指的是從源碼按照murano的應用打包規範做好的zip包的網絡地址,murano可以直接從網上下載並導入
下面以URL的方式爲例,從murano的官方app catalog導入應用。下圖從apps.openstack.org導入Apache和Cloudfoundry的zip包。

導入後應用就可以在application catalog中看到了,如下圖所示。

murano有Enviroment的概念,意思是一組application的集合,比如我們可以把相互關聯的應用定義成在同一個Env中,也可以把功能相似的應用定義在同一個Env中,個人感覺有點微服務的概念,即多個應用構成一個服務。比如創建一個PaaS的enviroment,並在這個環境中添加CloudFoundry應用。下面首先創建一個Env,然後就可以通過拖拽的方式向這個環境中添加application,完成一鍵式安裝和部署,如下圖所示。

拖入應用後,要求配置應用的需要的資源信息,如下圖所示。

點擊部署之後,可以看到應用開始部署,在orchistration中也能看到生成了對應的stack,並且還可以繼續向這個env 中添加應用
 

最後可以通過murano查看當前應用的部署拓撲,如下圖所示,拓撲顯示這個apache應用有個external network的floating ip和一個nova instance兩種資源組成。

  另外,需要注意一個問題,這裏的floating ip要求能夠訪問公網,因爲應用的部署過程需要從公網下載一些安裝包,以這個apache應用爲例,虛擬機啓動後需要執行如下腳本:
  1. sudo apt-get update
  2. sudo apt-get -y install apache2

  3. if [[ $1 == "True" ]];
  4. then
  5.     sudo apt-get -y install php5
  6. fi

  7. sudo iptables -I INPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT -m comment --comment "by murano, Apache server access on HTTPS port 443"
  8. sudo iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT -m comment --comment "by murano, Apache server access on HTTP port 80"
  後續文章將從代碼和原理上解釋murano的工作機制等相關知識。


————————————————————
email: [email protected]
微博:@Marshal-Liu
  1. ##升級python-openstackclient
  2. sudo pip install python-openstackclient --upgrade



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章