CentOS7使用Packstack部署OpenStack

最近有些朋友在研究使用Packstack自動化工具單機(jī)部署OpenStack,遇到了各種各樣的問題,在這里總結(jié)一下整個(gè)部署的流程,希望能幫到各位

首先準(zhǔn)備系統(tǒng)環(huán)境,直接安裝一個(gè)沒有圖形界面的基礎(chǔ)系統(tǒng),節(jié)省內(nèi)存資源的占用,避免后期各種服務(wù)因內(nèi)存資源不足(可能,沒具體分析)崩潰導(dǎo)致創(chuàng)建實(shí)例時(shí)調(diào)度失敗等問題

系統(tǒng)安裝完成后手動給系統(tǒng)分配一個(gè)IP地址,鑒于在不同的環(huán)境中具體的名稱不盡相同,需要根據(jù)自己的實(shí)際情況去修改網(wǎng)卡名,網(wǎng)卡名可以使用命令
查看,全新系統(tǒng)一般第一個(gè)為回環(huán)第二個(gè)才是物理網(wǎng)卡的網(wǎng)卡名

這里我的網(wǎng)段是192.168.2.0/24所以在這里就分配一個(gè)192.168.2.59的IP地址,不需要UUID和IPV6,這里注釋掉UUID并且關(guān)閉了IPV6INIT,在這里需要注意一下網(wǎng)關(guān)的設(shè)置,假設(shè)使用的是VMware虛擬機(jī)就需要和"虛擬網(wǎng)絡(luò)編輯器"中設(shè)置保持一致

禁用NetworkManager和firewalld同時(shí)立即停止服務(wù),如圖

重啟network服務(wù)更新網(wǎng)絡(luò)設(shè)置


以下部分為可選,但是為了避免后續(xù)因包獲取超時(shí)導(dǎo)致安裝中止請盡量更換為國內(nèi)的鏡像源
使用一鍵腳本換源腳本鏈接:https://gitee.com/SuperManito/LinuxMirrors
直接復(fù)制這條命令就能立即執(zhí)行
?


換源腳本選擇示例 - 2
這里選擇的是13,使用中科大維護(hù)的鏡像源(最新的腳本已更新為15個(gè)候選且順序也有變化)你也可以選擇對自己網(wǎng)絡(luò)友好的源,需要注意的是不要安裝EPEL擴(kuò)展源因?yàn)闀?dǎo)致稍后安裝packstack失敗,建議只更換基礎(chǔ)源不要更換OpenStack相關(guān)的源避免后續(xù)在獲取某些軟件包時(shí)超時(shí)失敗
最好就是選擇“更新軟件包”完成之后再執(zhí)行一次?
這樣能夠緩存一部分包信息,加速安裝過程


安裝openstack-train源

安裝packstack

更改系統(tǒng)的主機(jī)名,可以設(shè)置成你喜歡的名字,這里設(shè)置成packstack。還需要在/etc/hosts中記錄本機(jī)的IP地址用于服務(wù)對主機(jī)名的解析

可以正常Ping通說明剛剛的修改已經(jīng)成功生效了

修改/etc/selinux/config禁用selinux

臨時(shí)關(guān)閉selinux?
你也可以通過重啟,重啟就不需要使用這條命令臨時(shí)關(guān)閉,這里使用 getenforce 檢查輸出為圖示即臨時(shí)關(guān)閉生效

強(qiáng)烈建議重新啟動一次系統(tǒng),因?yàn)橛幸欢ǖ目赡茉诓渴饡r(shí)將主機(jī)名錯(cuò)誤識別成packstack.localdomain,具體可部署后檢查配置文件 /etc/nova/nova.conf,問題同下novnc服務(wù)無法啟動(監(jiān)聽地址)
完成以上操作創(chuàng)建一個(gè)快照

開始正式部署OpenStack
成功安裝OpenStack后會返回如下信息

?
測試OpenStack各組件是否部署成功
上傳測試用的cloud-init鏡像,這里選用CentOS7的,假如你想要其他項(xiàng)目也可以使用這個(gè)鏡像而無需再次上傳,你可以使用admin賬號上傳鏡像并將“可見性”設(shè)置成“公有”

?

上傳測試用 cloud-init 鏡像 - 2
現(xiàn)在可以創(chuàng)建一個(gè)實(shí)例用于驗(yàn)證了

卷的選擇 -?1
測試階段可以選擇“刪除實(shí)例時(shí)刪除卷”為“是”

配置實(shí)例類型,其他保持默認(rèn)

解決一個(gè)小問題

成功創(chuàng)建實(shí)例之后,當(dāng)顯示狀態(tài)為運(yùn)行時(shí),進(jìn)入實(shí)例控制臺檢查是否有輸出,像這種連接故障可以通過修改配置文件來修復(fù),前提是在日志選項(xiàng)卡中確實(shí)有啟動時(shí)初始化的信息

當(dāng)看到類似下圖的日志輸出時(shí)其實(shí)實(shí)例已經(jīng)啟動,可以確定novnc服務(wù)出現(xiàn)異常

修改/etc/nova/nova.conf 使用/localdomain找到這條配置進(jìn)行修改,去掉尾部的localdomain使其正常的解析到計(jì)算節(jié)點(diǎn)

直接重啟所有的OpenStack服務(wù),使用命令
檢查novnc服務(wù)啟動情況

?已經(jīng)能夠有正常輸出顯示了,可以正常交互



需要在實(shí)例能夠成功創(chuàng)建并能輸出顯示的前提下完成后續(xù)配置,出現(xiàn)無法創(chuàng)建的情況回退到上一個(gè)快照重新部署

網(wǎng)絡(luò)的配置部分,我們需要修改網(wǎng)卡的配置還有橋接網(wǎng)橋的配置實(shí)現(xiàn)OpenStack實(shí)例訪問外網(wǎng),推薦只保留這些基本配置,第一條命令一定要按照實(shí)際的網(wǎng)卡名進(jìn)行修改

更新網(wǎng)絡(luò)設(shè)置
重新使用 ip addr命令檢查網(wǎng)橋是否成功設(shè)置IP地址并能連通外網(wǎng)

登錄dashboard,直接以admin身份登錄,刪除先前創(chuàng)建的實(shí)例
來到管理員選項(xiàng)卡中的網(wǎng)絡(luò)-網(wǎng)絡(luò)可以看到當(dāng)前有兩個(gè)項(xiàng)目,admin項(xiàng)目是外網(wǎng),demo項(xiàng)目是其自有的私網(wǎng),目前外網(wǎng)的子網(wǎng)網(wǎng)段不符合實(shí)際情況需要進(jìn)行重新創(chuàng)建

來到管理員選項(xiàng)卡中的網(wǎng)絡(luò)-路由可以看到默認(rèn)demo項(xiàng)目已經(jīng)有了一個(gè)路由綁定了外部網(wǎng)絡(luò),需要先對其刪除才能重新創(chuàng)建public中的子網(wǎng)

?
回到管理員選項(xiàng)卡中的網(wǎng)絡(luò)-網(wǎng)絡(luò),直接點(diǎn)擊藍(lán)色public進(jìn)行子網(wǎng)的重新創(chuàng)建

先刪除原子網(wǎng)

再點(diǎn)擊創(chuàng)建子網(wǎng)


需要注意的是這里的地址池范圍是因網(wǎng)絡(luò)實(shí)際情況避免沖突才進(jìn)行的限制,可以根據(jù)自己的情況更改范圍
子網(wǎng)創(chuàng)建完成

重新創(chuàng)建demo項(xiàng)目的路由

demo項(xiàng)目的路由創(chuàng)建完成

?
轉(zhuǎn)到demo項(xiàng)目進(jìn)行實(shí)例內(nèi)外網(wǎng)互通的測試
進(jìn)入網(wǎng)絡(luò)-路由,點(diǎn)擊剛剛重新創(chuàng)建的demo路由

給其添加一個(gè)接口用于私網(wǎng)用于連接外部網(wǎng)絡(luò)

?添加完成之后應(yīng)該會出現(xiàn)一個(gè)名稱隨機(jī)的內(nèi)部接口

進(jìn)入網(wǎng)絡(luò)-網(wǎng)絡(luò)拓?fù)洳榭淳W(wǎng)絡(luò)拓?fù)?,檢查是否內(nèi)外網(wǎng)通過demo路由連接到一起,此為配置完成

?
為了Ping通和能夠使用SSH登錄到實(shí)例需要修改默認(rèn)安全組規(guī)則
點(diǎn)擊管理規(guī)則

添加兩個(gè)規(guī)則
此規(guī)則即允許任意來源的IP的ICMP報(bào)文通過/進(jìn)入
?

此規(guī)則即允許任意來源的IP能夠使用SSH協(xié)議連接到實(shí)例

添加完成后,安全組應(yīng)該是這樣的

?
添加一個(gè)浮動IP用于綁定實(shí)例,通過這個(gè)浮動IP可以測試實(shí)例是否聯(lián)通外網(wǎng)并且能夠使用這個(gè)浮動IP使用SSH協(xié)議連接實(shí)例
點(diǎn)擊分配IP給項(xiàng)目

此IP為地址池中任意的一個(gè)IP

回到計(jì)算選項(xiàng)卡導(dǎo)入宿主機(jī)的公鑰/終端模擬軟件生成的密鑰用于SSH連接實(shí)例
這里導(dǎo)入宿主機(jī)的公鑰,安裝packstack時(shí)應(yīng)該默認(rèn)就已經(jīng)自動生成了一個(gè)公鑰,可以直接使用這個(gè)公鑰

復(fù)制公鑰然后導(dǎo)入

回到計(jì)算-實(shí)例和上面提到的一樣創(chuàng)建一個(gè)實(shí)例用于測試內(nèi)外網(wǎng)互通和SSH登錄
在創(chuàng)建實(shí)例的過程中遇到一直在調(diào)度的問題可以去檢查一下日志,需要持續(xù)監(jiān)控,有可能是openstack-nova-conductor這個(gè)服務(wù)崩了或者沒有啟動,可以單獨(dú)重啟這個(gè)服務(wù)再試試,查看狀態(tài)和重啟的命令可以參考下面
持續(xù)顯示末尾后100行的內(nèi)容,會有類似的輸出

假如還是一直處于調(diào)度狀態(tài)可以先重啟一遍所有的OpenStack服務(wù)再重新創(chuàng)建實(shí)例
注意檢查openstack-nova-conductor服務(wù)的運(yùn)行狀態(tài)
如狀態(tài)不為running則需要使用命令重啟服務(wù)
等待實(shí)例創(chuàng)建成功并能通過控制臺查看到登錄界面時(shí)即可使用SSH免密登錄到fedora-37實(shí)例
先測試能不能Ping通綁定的浮動IP

測試完連通性再嘗試使用SSH免密登錄實(shí)例,登錄成功


可以看到這個(gè)實(shí)例的對應(yīng)IP是分配的私網(wǎng)網(wǎng)段地址,綁定的浮動IP地址則是外部網(wǎng)段的地址,SSH登錄需要使用的是外部網(wǎng)段的這個(gè)IP地址

至此已完成基本的,部署OpenStack、創(chuàng)建實(shí)例、SSH訪問實(shí)例
?