OpenStack 因為架構復雜,配置較多,一向以安裝部署過程困難聞名。雖然 OpenStack 社區前后涌現出了很多的自動化部署工具,但是對於普通用戶,特別是新人來說,上手仍然有難度。
使用本文介紹的基於 Kolla-Ansible 構建的操作系統鏡像,用戶只需執行極少命令即可完成環境的部署。
安裝 OpenStack 可能有多麻煩
選擇項太多
OpenStack 誕生之時,在運維自動化領域已經存在多個配置工具,不同的團隊有不同的技術偏好,因此他們紛紛選擇不同的工具來實現 OpenStack 的自動化安裝:
- Ansible
- Puppet
- Chef
- Salt
OpenStack 可以部署在多個主流的 Linux 系統中:
- Ubuntu
- RHEL/CentOS
- SUSE/openSUSE
OpenStack 架構也很靈活,除了核心模塊外,還有很多可選模塊;
- Swift
- Cinder
- Neutron
- Heat
- ...
核心模塊本身也有多種可選配置,比如說網絡項目 Neutron,可以選擇:
- Linux Bridge
- OpenvSwitch
OpenStack 是一個基於 Python 的開源項目,意味着除了從軟件包安裝外,還會有使用 pip install
從 pypi 安裝 Python 模塊,以及從 git 源碼倉庫下載源碼安裝的需求:
- rpm/deb 源
- pypi 源
- git 源
開源社區的工具一般比較中立,各種場景都要照顧到,也不會特意去強調哪種方式更好,所以對於新人來說,如何選擇容易上手的部署方式是一個難題。
OpenStack 針對開發快速上手有一個專門的項目 devstack
,但是由於眾所周知的國情,會遇到下面的網絡問題。
網絡不給力
開源的部署工具一般都是基於軟件包倉庫或者是代碼倉庫,需要在線下載軟件包或源碼安裝。這些倉庫基本都是國外的網站。這就又涉及到幾個問題:
一個是下載速度的問題,雖然近些年國內出現了很多鏡像站,但是配置軟件安裝源在不同的操作系統中是不同的操作命令,不是所有人都能熟練完成。
也不是所有的自動化安裝工具的作者(絕大部分是老外)會意識到網絡會是個問題,安裝文檔里不會去特意去提安裝源的設置,甚至不會把它們作為可配參數提取出來。
再者,隨着版本的升級和時間推移,包括社區的變動,很多軟件安裝源的 URL 會發生變更,並不是長期保證不變的。也就是說,基於網絡安裝的文檔是有時效性的,可能過1、2年就不具備可操作性了。
此外,即便網絡狀況很好,安裝一切順利,如果要反復多次搭建,每次都需要下載安裝也會比較耗時間。
版本變化快
OpenStack 的版本發行計划是每半年 release 一個版本。聽上去沒那么頻繁,實際上對於這種超大型的項目來說,可能你當前版本還沒完全吃透呢,又來新版本了。所以,目前網上很多的安裝工具和安裝教程也都過時了。
這里給大家提供的是次新的 Stein
版本,可以體驗更多的新特性。
安裝 OpenStack 可以有多簡單
下面給大家介紹的是基於 Kolla-Ansible 的容器化部署方式。
常規的安裝文檔中,Kolla-Ansible 本身也是需要安裝部署的,它用到的 docker 容器的鏡像也需要從網絡上拉取,為了進一步簡化操作,這里將 Kolla-Ansible 工具和鏡像包和 CentOS 系統鏡像一起打包,重新構建生成一個可引導的 .iso 鏡像。真正做到了一鍵啟動,離線安裝,裝完即用。
關於 Kolla 的一些細節以后會逐漸展開介紹,本文暫不涉及。
准備一台機器
大部分人可能沒有空閑的機器專門來安裝 Linux 系統,這里我們使用虛擬機也可以完成安裝。
選擇一個適合你的系統的虛擬機管理軟件即可:
- VirtualBox (推薦)
- VMWare
- Hyper-V
- 其它
下載 .iso 鏡像文件
微信搜索並關注公眾號 DavyCloud
,獲取下載鏈接
創建虛機
先配置兩個網絡:
- 兩個 host-only 的網絡,
- 其中一個網絡的地址段設置為
10.10.10.1/24
新建一個虛擬機,滿足以下條件:
- 內存 8GB
- 啟動盤選擇
davycloud-openstack-stein.iso
- 磁盤空間 >= 40GB
- 兩個網卡分別配置兩個 host-only 的網絡,
- 第一塊網卡的地址段對應到
10.10.10.1/24
那一個
修改啟動選項
進入引導菜單時,有兩個選項:
- 安裝 Deploy 節點
- 安裝 Worker 節點 (默認)
使用方向鍵移動光標,選擇第 1 個,按下回車鍵開始安裝系統。
掃碼關注公眾號,可以獲取鏡像下載鏈接
為什么要把默認選項放在第 2 個?
因為部署節點只需要安裝一個即可,而工作節點可能會有很多個。
系統進入自動安裝流程,整個過程無需任何交互。系統安裝完畢后會彈出光盤並自動重啟。
第一次啟動過程會比較耗時,請耐心等待。
配置修改
如果虛機的網絡地址段按要求配置,對 OpenStack 的模塊也沒有什么特別要求,這里可以不做任何改動,直接跳到下一步驟即可。
為了不讓本文變得冗長,這里也不具體介紹修改配置的方法,僅簡單說明相關情況。
All-In-One 安裝場景默認安裝 OpenStack 核心模塊和公共組件,包括:
- MySQL
- RabbitMQ
- Memcached
- Keystone
- Glance
- Neutron
- Nova
- Heat
注意到核心模塊里包含了初級用戶平常比較少用的 Heat 服務,而比較常用的卷存儲服務 Cinder 卻沒有作為核心模塊包含在內。如果需要安裝 Cinder,需要為其指定一個 backend,不同的存儲方式可能還有其它額外的配置條件,這里先保持默認不安裝。
同時注意,即使是 All-In-One 場景,默認也是啟用了 HAProxy 和浮動 IP,也就是需要安裝:
- HAProxy
- Keepalived
啟用 HAProxy 不需要什么額外操作,唯一需要的就是多占用一個 IP 地址。啟用浮動 IP 可以使得后續控制節點的橫向擴展更簡單。因此,除非確定就是一直作為單節點環境使用,否則推薦保留默認配置。
值得注意的是,在某些雲環境下(比如 OpenStack),這個浮動地址可能會面臨安全組的問題,需要一些額外的配置。后面有機會再詳細說明。
命令三連:prechecks、deploy、post-deploy
使用用戶名 kolla
,密碼 kollapass
登錄系統,並切換到 root
用戶:
$ sudo -s
# cd /root
下面的所有操作都使用 root
用戶執行,全程只需要執行三個命令:
下面每個命令都是執行相應的 ansible playbook,所以屏幕會有大量打印。
安裝前的環境檢測,檢查是否必要條件都已經滿足
# kolla-ansible prechecks
開始安裝,視機器性能和選擇安裝模塊數量,20分鍾到40分鍾不等,耐心等待即可
# kolla-ansible deploy
安裝后的一點點收尾工作
# kolla-ansible post-deploy
上面的命令執行完成后,會在 /etc/kolla
目錄下生成 admin-openrc.sh
文件,其中包含了登錄所需要的用戶名和密碼信息。
使用 openstack 命令
以前的 OpenStack 版本每個模塊都提供自己的客戶端命令,例如 nova
, glance
等,現在基本都統一使用 openstack
命令。以前的命令有的還能用,比如 nova
,有的已經不能用了,比如 keystone
要使用 openstack
命令,必須先要安裝各模塊的客戶端包。而我們的宿主機系統里面只安裝了 Docker
和 Ansible
。Kolla 構建的 docker 鏡像中,已經在 openstack-base
這個基礎鏡像中安裝了所有的客戶端包,這意味着:
- 我們完全沒有必要在宿主機單獨安裝客戶端
- 進入任意一個 OpenStack 服務的容器里,都可以使用客戶端
但是,每次手動敲命令進入容器里畢竟不夠方便,所以我在鏡像中內置了一個 bash 腳本,取名就叫 openstack
,其中的內容是啟動一個容器,使用方法和原本 openstack
命令一致:
# source /etc/kolla/admin-openrc.sh <--仍然需要先導入環境變量
# openstack <-- 直接敲命令
(openstack)
登錄 horizon
因為隨機生成的 admin 用戶密碼很長,VirtualBox 的控制台不支持復制,所以這時候你最好先找個 SSH 客戶端登入虛擬機中把密碼拷貝出來
開始體驗
安裝過程還有疑問的可以在 Bilibili 觀看視頻操作。
如果覺得文章不錯,別忘了點贊和關注公眾號,謝謝!