一、云計算概述
1.1 云計算的定義與本質
云計算(Cloud Computing)是一種基于網絡的超級計算模式,它能夠根據用戶的不同需求,動態提供所需的計算資源、存儲資源和網絡資源等。這種模式就像我們日常生活中使用水電煤氣一樣,用戶無需關心資源的生產和維護過程,只需按需付費即可。
從狹義上講,云計算是通過網絡按需向用戶提供 IT 基礎設施,包括硬件、平臺和軟件,提供資源的網絡被稱為 "云"。在用戶眼中,"云" 中的資源是無限的,并且可以通過橫向擴展來滿足不斷增長的需求。
廣義的云計算則是指服務的交付和使用模式,通過網絡以按需、易擴展的方式獲得所需的服務。這種服務不僅限于 IT 和軟件領域,還可以是任意其他類型的服務。
1.2 云計算的三種服務模型
1.2.1 IaaS(基礎設施即服務)
IaaS 提供最底層的 IT 基礎設施服務,包括計算能力、存儲空間、網絡資源等。用戶可以從中獲取硬件或虛擬硬件資源(如裸機或虛擬機),然后在這些資源上安裝操作系統和其他應用程序。IaaS 一般面向的是 IT 管理人員,他們需要對基礎設施進行配置和管理。
1.2.2 PaaS(平臺即服務)
PaaS 把已經安裝好開發環境的系統平臺作為一種服務通過互聯網提供給用戶。用戶可以在這個平臺上安裝其他應用程序,但不能修改已經安裝好的操作系統和運行環境。PaaS 主要面向開發人員,他們需要了解平臺提供環境下的應用開發和部署。
1.2.3 SaaS(軟件即服務)
SaaS 可直接通過互聯網為用戶提供軟件和應用程序等服務。用戶可以通過租賃的方式獲取安裝在廠商或服務供應商那里的軟件,一般只需一組賬號和密碼即可使用。SaaS 面向的是普通用戶,無需關心軟件的安裝和維護。
二、OpenStack 概述
2.1 OpenStack 的起源與發展
OpenStack 是由 Rackspace(一家美國的云計算廠商)和美國國家航空航天局(NASA)在 2010 年 7 月共同發起的項目。其中,Rackspace 貢獻了存儲源碼(Swift),NASA 貢獻了計算源碼(Nova)。經過多年的發展,OpenStack 已經成為云計算領域最受歡迎的開源項目之一,截至目前,其最新版本已更新到 Train 版,并且每半年左右會更新一次版本。
2.2 OpenStack 的定義與功能
OpenStack 是一個通過數據中心控制計算資源、存儲資源和網絡資源的云平臺,同時它也是一款以 Apache 許可證授權的自由軟件和開放源代碼項目,支持所有類型的云環境。其目標是提供簡單實施、可擴展以及功能豐富的云產品,由來自全世界的云計算專家共同維護。
OpenStack 通過多種補充服務提供了 IaaS 解決方案,每一種服務均提供了相應的應用程序接口(API),以促進各組件之間的整合。它被廣泛用于公有云以及私有云的建設和管理,其社區規模涵蓋了 130 家企業以及 1350 位開發人員,這些機構與個人都將 OpenStack 作為 IaaS 資源的通用前端。
2.3 OpenStack 的核心項目
OpenStack 包含多個核心項目,以下是常見的 8 個核心項目及其功能:
服務 | 項目名稱 | 功能描述 |
---|---|---|
Compute(計算服務) | Nova | 負責實例生命周期的管理,是計算資源的單位。對 Hypervisor 進行屏蔽,支持多種虛擬化技術(紅帽默認為 KVM),支持橫向擴展 |
Network(網絡服務) | Neutron | 負責虛擬網絡的管理,為實例創建網絡拓撲結構。是面向租戶的網絡管理,可以自定義網絡,并使租戶之間互不影響 |
Identity(身份認證服務) | Keystone | 類似于 LDAP 服務,對用戶、租戶和角色、服務進行認證與授權,并且支持多認證機制 |
Dashboard(控制面板服務) | Horizon | 提供一個 Web 管理界面,與 OpenStack 底層服務進行交互 |
Image Service(鏡像服務) | Glance | 提供虛擬機鏡像模板的注冊與管理,將做好的操作系統復制為鏡像模板,在創建虛擬機時直接使用。可支持多格式的鏡像 |
Block Storage(塊存儲服務) | Cinder | 負責為運行實例提供持久的塊存儲設備,可進行方便的擴展,按需付費,支持多種后端存儲 |
Object Storage(對象存儲服務) | Swift | 為 OpenStack 提供基于云的彈性存儲,支持集群無單點故障 |
Telemetry(計量服務) | Ceilometer | 用于度量、監控和控制數據資源的集中來源,為 OpenStack 用戶提供記賬途徑 |
2.4 OpenStack 的優勢
OpenStack 在多個方面具備顯著優勢,使其有可能成為云計算領域的行業標準:
- 控制性:完全開源的平臺,模塊化的設計,提供相應的 API 接口,方便與第三方技術集成,從而滿足自身業務需求。
- 兼容性:OpenStack 兼容其他公有云,方便用戶進行數據遷移。
- 可擴展性:采用模塊化的設計,支持主流的 Linux 發行版本,可以通過橫向擴展,增加節點、添加資源。
- 靈活性:用戶可以根據自己的需要建立基礎設施,也可以輕松地為自己的群集增加規模。此外,OpenStack 項目采用 Apache 2 許可,意味著第三方廠家可以重新發布源代碼。
- 行業標準:眾多 IT 領軍企業都加入到 OpenStack 項目,這預示著 OpenStack 在未來可能形成云計算行業標準。
三、OpenStack 一鍵部署
3.1 部署環境準備
3.1.1 硬件要求
安裝部署 OpenStack 環境的主機設備最低配置要求如下:
類型 | 最低配置要求 |
---|---|
CPU | 支持 Intel 64 或 AMD 64 CPU 擴展,并啟用了 AMD-V 或 Intel VT 硬件虛擬化支持的 64 位 x86 處理器,邏輯 CPU 個數為 4 核 |
內存 | 8GB |
磁盤空間 | 30GB |
網絡 | 1 個 1 Gbps 網卡 |
3.1.2 軟件環境
本案例使用操作系統為 CentOS 7.3 的主機,需要提前部署一臺新安裝操作系統的主機,要求能訪問互聯網,主機的系統采用最小化方式安裝。若通過 VMware 等虛擬機軟件實現,網絡采用橋接模式。
3.2 在線安裝前準備工作
3.2.1 準備虛擬機
通過 VMware 等軟件創建虛擬機,配置靜態 IP 地址、網關及 DNS 參數,并測試網絡連通性。需要注意的是,在配置 IP 地址時不要有 "DOMAIN=x.x.X.X" 這一行,因為這會影響 nova 配置文件內 host 的配置項,從而導致可用域不可用,無法創建虛擬機。
3.2.2 修改主機名
使用以下命令修改主機名:
[root@localhost ~]# hostnamectl set-hostname openstack
[root@localhost ~]# bash
[root@openstack ~]#
3.2.3 更新系統并安裝常用軟件
[root@openstack ~]# yum -y update
[root@openstack ~]# yum -y install vim wget net-tools lrzsz
3.2.4 關閉防火墻并取消開機啟動
[root@openstack ~]# systemctl stop firewalld
[root@openstack ~]# systemctl disable firewalld
3.2.5 禁用 NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
3.2.6 禁用 Selinux
修改 Selinux 配置文件:
[root@openstack ~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected
# minimum - modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3.2.7 添加 hosts 綁定
[root@openstack ~]# cat /etc/hosts
192.168.9.137 openstack
3.3 使用 packstack 一鍵在線部署 OpenStack
3.3.1 Train 版 YUM 源安裝
最小化安裝 CentOS 7.3 并執行 update 升級后,系統會升級到 CentOS 7.7 版本。系統默認提供的 CentOS 官方 YUM 源包含了 Queens、Rocky、Stein、Train 四個 OpenStack 版本,選擇安裝 Train 版本:
[root@openstack ~]# yum install -y centos-release-openstack-train
安裝完成后,在 /etc/yum.repos.d/ 目錄下會自動生成 YUM 配置文件。
3.3.2 Packstack 軟件包安裝
[root@openstack ~]# yum install -y openstack-packstack
3.3.3 Packstack 一鍵部署 OpenStack
執行以下命令開始部署:
[root@openstack ~]# packstack --allinone
部署過程中會顯示一系列安裝步驟,當界面中出現 "successfully" 時,說明 OpenStack 安裝成功。部署完成后,會生成環境變量文件、日志文件等信息,并提示登錄 Dashboard 的方法。
3.4 離線安裝前準備工作
如果網絡較慢,無法通過 packstack 完成在線安裝,可采用離線方式安裝。離線安裝前的準備工作與在線安裝類似,但需要注意以下幾點:
虛擬機的磁盤空間要確保大于 30G,以 40G 為宜,因為要存放離線包。
IP 地址配置時不要出現 DOMAIN 配置項。
3.5 使用 packstack 一鍵離線部署 OpenStack
3.5.1 上傳并解壓 Train 版離線安裝包
[root@openstack ~]# mkdir /data && cd /data
[root@openstack data]# tar zxf openstack.tgz
3.5.2 配置本地 YUM 源
[root@openstack ~]# cd /etc/yum.repos.d/
[root@openstack yum.repos.d]# mkdir backup
[root@openstack yum.repos.d]# mv *.repo backup
[root@openstack yum.repos.d]# vim local.repo
在 local.repo 文件中添加以下內容:
[base]
name=base
baseurl=file:///data/base
gpgcheck=0
enabled=1[centos-ceph-nautilus]
name=centos-ceph-nautilus
baseurl=file:///data/centos-ceph-nautilus
gpgcheck=0
enabled=1[centos-nfs-ganesha28]
name=centos-nfs-ganesha28
baseurl=file:///data/centos-nfs-ganesha28
gpgcheck=0
enabled=1[centos-openstack-train]
name=centos-openstack-train
baseurl=file:///data/centos-openstack-train
gpgcheck=0
enabled=1[centos-qemu-ev]
name=centos-qemu-ev
baseurl=file:///data/centos-qemu-ev
gpgcheck=0
enabled=1[extras]
name=extras
baseurl=file:///data/extras
gpgcheck=0
enabled=1[openstack-train]
name=openstack-train
baseurl=file:///data/openstack-train
gpgcheck=0
enabled=1[rdo-qemu-ev]
name=rdo-qemu-ev
baseurl=file:///data/rdo-qemu-ev
gpgcheck=0
enabled=1[updates]
name=updates
baseurl=file:///data/updates
gpgcheck=0
enabled=1
3.5.3 更新 YUM 源數據
[root@localhost data]# createrepo /data/base/
[root@localhost data]# createrepo /data/centos-ceph-nautilus/
[root@localhost data]# createrepo /data/centos-nfs-ganesha28/
[root@localhost data]# createrepo /data/centos-openstack-train/
[root@localhost data]# createrepo /data/centos-qemu-ev/
[root@openstack data]# createrepo /data/extras
[root@openstack data]# createrepo /data/openstack-train/
[root@openstack data]# createrepo /data/rdo-qemu-ev/
[root@openstack data]# createrepo /data/updates/
[root@openstack data]# yum clean all
[root@openstack data]# yum makecache
3.5.4 安裝 openstack-packstack
[root@localhost ~]# yum -y install openstack-packstack
3.5.5 一鍵部署 OpenStack
[root@openstack ~]# packstack --allinone
部署完成后,仿照在線部署生成 br-ex 網橋配置文件。
四、通過 Dashboard 體驗 OpenStack 功能
4.1 Dashboard 簡介
Horizon 是 OpenStack 的一個組件,也是 OpenStack 中 Dashboard(儀表板,即 Web 控制臺)的項目名,主要用于 OpenStack 的管理,其底層通過 API 和 OpenStack 其他組件進行通信,為管理員提供 Web 頁面,方便操作管理。
4.2 登錄 Dashboard
在客戶端的瀏覽器地址欄中輸入?http://192.168.9.137/dashboard,進入 Dashboard 的登錄界面。安裝 OpenStack 后,在 root 用戶的 Home 目錄下會生成一個 keystonerc_admin 文件,該文件記錄了 keystone 認證的環境變量,包括用戶名和登錄密碼。
4.3 Dashboard 功能模塊
4.3.1 項目模塊
項目模塊主要包含訪問 API、計算、卷、網絡、對象存儲五個分類:
- 訪問 API:顯示所有組件的服務端點。
- 計算類:包含概況、實例、鏡像、密鑰對、主機組等子類,用于管理計算資源和實例。
- 卷類:用于管理云主機的存儲卷,可創建卷和快照。
- 網絡類:包含網絡拓撲、網絡、路由、安全組、浮動 IP、中繼等子類,用于管理網絡資源。
- 對象存儲類:主要包含容器子類,用于存儲數據。
4.3.2 管理員模塊
管理員模塊與項目模塊功能相似,但權限更高,僅限管理員用戶操作,包含概況、計算類、卷類、網絡類、系統類等功能。
4.3.3 身份管理模塊
身份管理模塊主要有項目、用戶、組、角色等分類,用于管理用戶身份和權限。
五、創建云主機
5.1 創建云主機前的準備
創建云主機需要依賴 OpenStack 中的各種虛擬資源,如 CPU、內存、硬盤等。如果需要云主機連接外部網絡,還需要網絡、路由器等資源。如果需要外部網絡訪問云主機,還需要配置浮動 IP。
5.2 創建網絡
- 在控制臺中依次單擊 "項目"→"網絡"→"網絡" 按鈕,點擊右上角 "+ 創建網絡" 按鈕,輸入網絡名稱為 "private",保持默認復選框狀態,點擊 "下一步"。
- 在子網信息頁面,輸入子網名稱、網絡地址等參數,網關 IP 可保持為空或自定義,點擊 "下一步"。
- 在子網詳情頁面,配置 DHCP,輸入分配地址池和 DNS 服務器地址,點擊 "創建" 按鈕。
5.3 創建路由
- 在控制臺中依次單擊 "項目"→"網絡"→"路由" 按鈕,點擊右上角的 "+ 新建路由" 按鈕,填寫路由名稱 my_route,外部網絡選擇默認的公有網絡 public,點擊 "新建路由"。
- 點擊路由器名稱進入詳細信息頁面,在 "接口" 標簽下點擊 "+ 增加接口" 按鈕,選擇之前創建的 private 私有網絡,點擊 "提交"。
5.4 創建鏡像
- 核實現有鏡像大小,若鏡像過小需重新上傳正確鏡像。點擊 "項目"→"計算"→"鏡像" 按鈕,點擊 "+ 創建鏡像"。
- 在彈出頁面填寫鏡像信息,鏡像名稱填寫 "cirrors01",選擇鏡像源文件,鏡像格式選擇 "QCOW2",可見性選為 "公有",點擊創建鏡像。
5.5 創建云主機
- 點擊 "項目"→"計算"→"實例" 按鈕,點擊右上角 "創建實例" 按鈕。
- 在 "詳情" 頁面填寫實例名稱為 "test",其他字段保持默認,點擊 "下一項"。
- 在 "源" 頁面選擇鏡像 "cirrors01",填寫卷大小,點擊 "下一步"。
- 在 "實例類型" 頁面選擇 "m1.tiny"
-
在 "實例類型" 頁面,選擇資源占用最少的實例類型,單擊頁面下方名稱為 "m1.tiny" 的實例類型右邊的上箭頭,完成后單擊 "下一項" 按鈕。m1.tiny 實例類型的配置為 1CPU、512MB 內存、1GB 根分區磁盤,適合入門測試使用。
-
在 "網絡" 頁面中,選擇云主機連接的私有網絡。單擊之前創建的名稱為 "private" 網絡右邊的箭頭,保證 private 網絡置于可分配狀態,后續步驟保持默認,最后直接單擊 "創建實例" 按鈕。
-
在彈出的實例列表頁面中,可以看到已創建的云主機。創建實例需要執行塊設備映射等操作,耗時取決于硬件和網絡性能,等待片刻后可看到實例狀態變為 "運行中"。
5.6 管理云主機并測試連通性
-
云主機啟動成功后,單擊云主機名稱右側的下拉菜單,選擇 "控制臺" 按鈕,進入云主機的控制臺頁面。若控制臺顯示黑屏,同時按下 "Ctrl+Alt" 按鈕即可。
-
根據控制臺提示信息,輸入登錄用戶名:cirros,密碼:gocubsgo。進入 $ 提示符的 shell 終端,說明已成功登錄云主機。
-
在云主機控制臺中運行 ifconfig 命令,查看網絡配置。可以看到云主機已通過 private 網絡中的 DHCP 自動獲取到 IP 地址,如 192.168.100.200。
-
在云主機上測試連接外網和本地主機的連通性:
- 運行
ping -c 1 baidu.com
測試連接百度,查看是否能獲取到百度的 IP 地址并返回響應。 - 運行
ping 本地主機IP
測試與本地主機的連通性,確保網絡路由正常。
- 運行
-
若 ping 外網不通,可能是以下原因導致:
- 檢查 ifcfg-br-ex 配置文件,查看宿主機 br-ex 網卡是否啟動。若未啟動,執行命令
[root@openstack ~]# ifconfig br-ex 172.24.4.1 netmask 255.255.255.0 up
啟動 br-ex 網卡。 - 檢查 Linux 虛擬機是否開啟了路由轉發。若未開啟,執行命令
[root@localhost ~]# vi /etc/sysctl.conf
,將net.ipv4.ip_forward = 0
改為net.ipv4.ip_forward = 1
,保存后執行[root@localhost ~]# sysctl -p
使配置生效。
- 檢查 ifcfg-br-ex 配置文件,查看宿主機 br-ex 網卡是否啟動。若未啟動,執行命令
六、OpenStack 入門總結與實踐建議
6.1 入門實踐總結
通過本次 OpenStack 入門體驗,我們完成了從云計算概念理解、OpenStack 架構認知到實際環境部署和云主機創建的全流程操作。主要內容包括:
-
云計算的基本概念和三種服務模型(IaaS、PaaS、SaaS),明確了 OpenStack 作為 IaaS 解決方案的定位。
-
OpenStack 的起源、核心組件及各服務的功能,了解了 Nova、Neutron、Keystone 等核心項目在云平臺中的作用。
-
使用 packstack 工具進行 OpenStack 一鍵部署,包括在線部署和離線部署兩種方式,掌握了部署前的環境準備和具體部署步驟。
-
通過 Horizon Dashboard 控制臺體驗 OpenStack 的各項功能,熟悉了項目、管理員、身份管理等模塊的操作界面和功能劃分。
-
完成了云主機創建的全流程操作,包括網絡配置、路由設置、鏡像準備和實例創建,并進行了網絡連通性測試。
6.2 生產環境實踐建議
雖然本次入門體驗完成了 OpenStack 的基本部署和操作,但在實際生產環境中,OpenStack 的搭建和運維要復雜得多,需要注意以下幾點:
-
硬件配置優化:生產環境中應根據業務需求合理配置硬件資源,避免資源瓶頸。計算節點、控制節點和存儲節點建議分離部署,以提高系統性能和穩定性。
-
高可用性設計:生產環境中需考慮組件的高可用性,如數據庫、消息隊列、API 服務等應采用集群部署,避免單點故障。
-
網絡規劃:復雜的網絡需求需要更精細的網絡規劃,包括租戶網絡隔離、負載均衡、防火墻策略等,確保網絡安全和性能。
-
存儲方案:根據業務對存儲性能和容量的需求,選擇合適的塊存儲和對象存儲后端,如 Ceph、GlusterFS 等,并進行合理的存儲資源分配和管理。
-
監控與告警:部署完善的監控系統,對 OpenStack 各組件的運行狀態、資源使用情況進行實時監控,并設置合理的告警閾值,及時發現和解決問題。
-
安全管理:加強身份認證和授權管理,合理配置安全組規則,定期進行安全漏洞掃描和修復,確保云平臺的安全性。
-
版本選擇與升級:根據業務需求和技術支持情況,選擇合適的 OpenStack 版本,并制定合理的升級計劃,確保系統能夠及時獲取新功能和安全補丁。