目前,容器技術的火爆使沉默已久的PaaS煥發了青春,各種概念曾出不窮,比如CaaS(Container-as-a-Service),ePaaS(elastic PaaS),其核心思想就是通過通過Container打包應用。仔細想想,過去幾年PaaS一直不瘟不火,或者直白一點在IaaS面前顯得那麼雞肋,總結起來主要有以下幾點原因:
(1)嚴重依賴IaaS層的實現,比如需要IaaS層提供服務編排和彈性擴展的功能;
(2)處於SaaS和IaaS的夾縫中,很多功能SaaS層和IaaS實現起來更方便;
(3)沒有統一的對外接口,各種平臺林立(OpenShift,CloudFundry,GAE,SAE),接口不統一;
(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
(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應用爲例,虛擬機啓動後需要執行如下腳本:
- sudo apt-get update
- sudo apt-get -y install apache2
- if [[ $1 == "True" ]];
- then
- sudo apt-get -y install php5
- fi
- 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"
- 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"
————————————————————
email: [email protected]
微博:@Marshal-Liu
- ##升級python-openstackclient
- sudo pip install python-openstackclient --upgrade