秦宇
【摘 要】在當前的云計算平臺中,OpenStack占據了重要的地位。OpenStack云平臺的部署過程相當復雜。本文對比研究了OpenStack部署的多套方案,并提出了優(yōu)化措施。
【關鍵詞】OpenStack;云平臺;部署
中圖分類號: TP393.09文獻標識碼: A文章編號: 2095-2457(2019)33-0192-002
DOI:10.19694/j.cnki.issn2095-2457.2019.33.094
Research and Optimization of OpenStack Cloud Platform Deployment
QIN Yu
(Guangdong vocational college of foreign languages and arts, Guangzhou Guangdong 510640, China)
【Abstract】In the current cloud computing platform, openstack occupies an important position. The deployment of openstack cloud platform is quite complex. In this paper, we compare and study several schemes of openstack deployment, and propose optimization measures.
【Key words】OpenStack; Cloud computing; Deployment
0 前言
OpenStack是眾多云平臺中較為重要的一個,但其部署十分復雜,給學習,科研和生產人員造成了較大的困難,為了提高OpenStack部署的效率,本文對比研究了一些OpenStack部署的常用方法,提出了優(yōu)化措施。
1 分析和設計
OpenStack的部署方式可以基于使用者分為兩類:
個人使用用到以下方式:
(1)DevStack,執(zhí)行shell腳本來安裝一個OpenStack的開發(fā)環(huán)境。
(2)Rdo,Red Hat開源的一款部署OpenStack的工具。
(3)手動部署。
團體使用用到以下方式:
(1)Puppet,Puppet由Ruby語言編寫。
(2)Ansible,是新近出現的自動化運維工具,已被Red Hat收購。
(3)SaltStack。
(4)Kolla,走的是docker容器部署路線。
(5)Fuel,大量采用了Python、Ruby和JavaScript等語言。
雖然,OpenStack的部署方式眾多,但最基本的部署方式還是參考OpenStack官網的Installation Guides進行安裝。由于OpenStack的版本基本上每半年都會更新一次,所以要選擇合適版本的Installation Guides進行安裝,建議不要每次都安裝最新的版本,安裝發(fā)行過一段時間的版本比較穩(wěn)定,但也不要安裝太舊的版本,因為有些舊版本已經不被OpenStack支持了?;诓煌膌inux系統(tǒng)會有不同的安裝手冊,比如如果要基于centos進行安裝,就可以用如下命令查詢可以使用yum在線安裝的OpenStack版本:
yum list | grep release-openstack
查詢結果如下:
centos-release-openstack-queens
centos-release-openstack-rocky
centos-release-openstack-stein
centos-release-openstack-train
可見當前還可以支持queens和高于此版本的OpenStack的安裝,然后可以參考queens版本的安裝手冊進行安裝。
由于參考官方手冊進行在線安裝時,有大量的軟件包要從國外網站下載,網速較慢,為了克服這個缺點,可以一次下載好所有軟件包后,自行制作yum倉庫,然后把yum的安裝源指向本地的服務器,這樣不僅可以大大加快下載軟件包的速度,也可以對于舊版本的OpenStack進行部署,方便學習和研究。
在生產環(huán)境中,還可以編寫bash腳本,把OpenStack的的各個組件快速安裝到各自的節(jié)點上,提高生產效率。
除了手動部署,還可以利用packstack工具進行OpenStack的快速部署。要注意主機內存最好在8G左右,因為packstack的all-in-noe安裝會部署較多組件到一臺節(jié)點上,如果內存不夠,到了安裝快結束時候,會提示內存不夠,組件無法啟動的錯誤。準備好硬件資源后,就可以開始安裝了。具體的安裝步驟可以參考以下網址:
https://www.rdoproject.org/install/packstack/
由于部署過程中,會在線安裝很多軟件包,而這些軟件包又有些會有互相依賴的關系,所以即使按照以上安裝手冊安裝,也可能會出現關于urllib3軟件包的錯誤,而這個urllib3又是進行網絡通信的關鍵軟件包,所以會導致整個OpenStack安裝失敗。經過分析和實驗,發(fā)現應該先用如下命令刪除urllib3 軟件包:
pip uninstall urllib3
然后再使用命令重新安裝urllib3:
pip install urllib3
由于在部署OpenStack的過程中,被此錯誤中斷,所以要重新運行以下命令:
packstack-allinone-answer-file packstack-answers-20191022-153728.txt
此次命令帶上了參數“-answer-file”,此參數所配置的文件“packstack-answers-20191022-153728.txt”是第一次部署時候所產生的配置文件。經過大概半個小時的下載文件以及安裝,可以通過如下的地址成功訪問OpenStack的web管理界面:
經過統(tǒng)計發(fā)現大部分的部署工具都在其部署過程中利用了puppet工具。Puppet是由Puppet公司開發(fā)的系統(tǒng)管理框架和工具集,被用于IT服務的自動化管理。掌握puppet對于快速部署OpenStack有著重要的作用。Puppet中,一切皆資源,puppet通過module來管理系統(tǒng)的安裝配置等流程。為了使用puppet來部署OpenStack,OpenStack推出了PuppetOpenstack項目,此項目推出了Identity(Keystone)等幾十個module,這些module大部分使用了puppet官方推出的puppet-apache等基礎模塊,而且還自定義了很多資源,例如用于創(chuàng)建操作數據庫的mysql_database資源。具體部署步驟可以參考官方網址:
https://github.com/openstack/puppet-openstack-integr-
ation#all-in-one
只需要執(zhí)行以下三行語句:
(1)git clone https://opendev.org/openstack/puppet-openstack-integration
(2)cd puppet-openstack-integration
(3)./all-in-one.sh
Bash腳本的調用關系如下:
all-in-one.sh->run_tests.sh-> install_modules.sh
在使用install_modules.sh安裝完modules后,run_tests.sh會執(zhí)行puppet apply語句運行scenario-aio場景里面指定的各個class,也就是自動安裝OpenStack的各個組件。整個安裝完成后,會運行tempest類,來對安裝好的OpenStack平臺進行測試,主要是針對horizon和cinder組件。
在“Install r10k”這個過程中,會停留較長時間,在“install_modules”這個過程完成之前會耗費大量的時間,較快網速也需要大約20多分鐘,前面這些前期工作完成后,就開始通過運行class真正進入到OpenStack的安裝過程中了,但在接下來的安裝中,經常會由于軟件包的版本不一致或者缺少某個文件,比如出現“No module named queue”的錯誤導致安裝失敗,此時只好又從最開始的前期準備工作重新運行,浪費了時間。經過分析發(fā)現,可以從“run_tests.sh”腳本里面的
print_header "Running Puppet Scenario: ${SCENARIO} (1st time)"
這一行開始重新運行,在前面加上環(huán)境變量的設置等基本腳本,把這些腳本單獨抽離出來形成一個新的腳本“run_class_openstack.sh”,這樣在以后的每次運行class安裝OpenStack出錯時,可以不用再重頭開始運行,節(jié)約了大量的時間。
2 結論
本文對于OpenStack的部署進行了研究分析,提出了優(yōu)化措施。OpenStack的部署方式可以基于學習,研究和生產等不同的目的采用不同的部署方式。OpenStack云平臺是一個每年都在不斷更新的框架,所以在以后的部署中難免還會遇到新的問題,掌握好基本工具的使用和在以往的部署中積累經驗,才能更好地應對新出現的問題。
【參考文獻】
[1]侯圣寶.部署OpenStack生成環(huán)境實戰(zhàn)[J].網絡安全和信息化,2018,8.
[2]魏迎.OpenStack云計算平臺的研究與實現[J].電子設計工程,2019,3.
[3]openstack/puppet-openstack-integration: Collection of scripts and manifests for module testing https://github.com/openstack/puppet-openstack-integration.