1、OpenStack概述
OpenStack是一種云操作系統,OpenStack是虛擬機、裸金屬和容器的云基礎架構。可控制整個數據中心的大型計算、存儲和網絡資源池,所有資源都通過具有通用身份驗證機制的API進行管理和配置。管理員也可通過Web界面控制,同時授權用戶通過Web界面配置資源。
OpenStack既是一個社區,也是一個項目和一個開源軟件,作為一個開源的云計算管理平臺,OpenStack由幾個主要的組件組合起來完成具體工作。OpenStack支持幾乎所有類型的云環境,項目目標是提供實施簡單、可大規模擴展、豐富、標準統一的云計算管理平臺。OpenStack通過一組相互關聯的服務提供基礎設施即服務 (IaaS)解決方案,每個服務都提供應用程序編程接口 (API)來促進這種集成。
OpenStack社區:https://www.openstack.org/
為什么稱OpenStack是云操作系統?
云一般指云計算,聚焦于IT能力服務化,達到按需使用、按量計費;
操作系統的功能主要分為資源抽象(比如底層資源計算、存儲、網絡抽象為統一的接口提供給上層的應用,上層的應用基于此接口去調用)、資源分配與負載調度、應用生命周期管理、系統運維和人機交互,OpenStack具備以上能力,所以OpenStack可以稱為云操作系統。
AWS:Amazon Web Services,亞馬遜云服務,AWS是由亞馬遜公司提供的web服務,是一個讓用戶可以租用云電腦運行所需應用的系統。
EC2:Elastic Computing Cloud,彈性計算云,是由亞馬遜公司提供的Web服務,是一個讓用戶可以租用云電腦運行所需應用的系統。
API:Application Programming Interface,應用程序接口,又稱應用編程接口,是指應用程序之間為了保證互相通訊所提供的一系列特殊規則和要求。
IaaS:Infrastructure as a Service,基礎設施即服務。指把IT基礎設施作為一種服務通過網絡對外提供,并根據用戶對資源的實際使用量或占用量進行計費的一種服務模式。
OpenStack優先考慮如何將計算、存儲、網絡領域的各類資源抽象為資源池。在此基礎上,對資源池內的各類邏輯對象實施控制操作,并將控制操作包裝成面向用戶的服務。
OpenStack只是構建云計算的關鍵組件,為了構建云計算,還需要很多東西:
OpenStack是框架:以OpenStack為框架,將計算、存儲、網絡、管理、運營、運維等多個領域的軟硬件產品組件整合在一起,共同組成面向業務場景的整體解決方案。
Cloud BSS:Cloud Business Support System,云業務支撐系統。
Cloud OSS:Cloud Operation Support System ,云運營支撐系統。
云計算與虛擬化的關鍵區別:
云計算的特點是IT能力的服務化,按需使用,按量計費,多租戶隔離等。
虛擬化的特點是環境隔離,資源復用,降低隔離損耗,提升運行效率,提供高級虛擬化特性等。
OpenStack邏輯架構:
每個OpenStack服務內部是由多個進程組成。所有服務(Keystone除外)都至少有一個API進程,負責監聽API請求,對請求進行預處理并將它們傳遞給服務的其他部分。
每個OpenStack服務的進程之間的通信,使用AMQP消息(rabbitmq消息隊列)代理。服務的狀態存儲在數據庫中。在部署和配置OpenStack云時,管理員可以在多種消息代理和數據庫解決方案中進行選擇,例如RabbitMQ、MySQL、MariaDB和SQLite。
用戶可以通過Web用戶界面、命令行客戶端以及通過瀏覽器插件或curl等工具發出API請求來訪問OpenStack。
生產環境中,一般會有專門的OpenStack部署服務節點、控制節點、計算節點、網絡節點和存儲服務節點等。生產環境的控制節點建議三臺以上,其他節點按需求部署。
在OpenStack中創建虛擬機實例,資源需求和物理PC類似。
OpenStack核心服務簡介:
1、界面管理服務Horizon
提供基于Web的控制界面,使云管理員和用戶能夠管理各種OpenStack資源和服務。首次出現在OpenStack的“Essex”版本中。依賴Keystone認證服務。
2、認證服務Keystone
提供身份驗證,服務發現和分布式多租戶授權。支持LDAP、OAuth、OpenID Connect、SAML和SQL。首次出現在OpenStack的“Essex”版本中。為其他OpenStack服務提供認證支持。
3、鏡像服務Glance
提供發現、注冊和檢索虛擬機鏡像功能。提供的虛擬機實例鏡像可以存放在不同地方,例如本地文件系統、Swift對象存儲、Cinder塊存儲等。首次出現在OpenStack的“Bexar”版本中。依賴Keystone認證服務。
4、計算服務Nova
提供大規模、可擴展、按需自助服務的計算資源。支持管理裸機,虛擬機和容器。首次出現在OpenStack的“Austin”版本中。依賴Keystone認證服務、Neutron網絡服務和Glance鏡像服務。
5、塊存儲服務Cinder
提供塊存儲服務,為虛擬機實例提供持久化存儲。調用不同存儲接口驅動,將存儲設備轉化成塊存儲池,用戶無需了解存儲實際部署位置或設備類型。首次出現在OpenStack的“Folsom”版本中。依賴Keystone認證服務。
6、對象存儲服務Swift
提供高度可用、分布式、最終一致的對象存儲服務。可以高效、安全且廉價地存儲大量數據。非常適合存儲需要彈性擴展的非結構化數據。首次出現在OpenStack的“Austin”版本中。為其他OpenStack服務提供對象存儲服務。
7、網絡服務Neutron
負責管理虛擬網絡,專注于為OpenStack提供網絡即服務。首次出現在OpenStack的“Folsom”版本中。依賴Keystone認證服務。
8、編排服務Heat
為云應用程序編排OpenStack基礎架構資源。提供OpenStack原生REST API和CloudFormation兼容的查詢API。首次出現在OpenStack的“Havana”版本中。依賴Keystone認證服務。
9、計量服務Ceilometer
Ceilometer項目是一項數據收集服務,提供跨當前OpenStack核心組件規范化和轉換數據的能力。Ceilometer的數據可為所有OpenStack核心組件提供客戶計費、資源跟蹤和警報功能。首次出現在OpenStack的“Havana”版本中。
2、linux模板制作
使用minimal最小化安裝Stream-8,最小化安裝用# ip a查看ip
制作Linux 虛擬機模板,后面克隆(完整克隆)出計算節點compute和控制節點controller,https://blog.51cto.com/cloudcs/5258769
1、修改網卡信息 # cd /etc/sysconfig/network-scripts/ # cat ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=ens160
DEVICE=ens160
ONBOOT=yes
2、清除密鑰信息 # cd /etc/ssh
# rm -rf ssh_host_*
3、清除 Machine ID # cat /etc/machine-id
000fca8b6e184c94adbae8a120ce776a
# cat /dev/null > /etc/machine-id
# cat /etc/machine-id
4、最后關閉虛擬機,# init 0 關機(開機上述文件又會自動生成)
關機狀態下進行克隆虛擬機,通過模板完整克隆出兩臺完整復制的虛擬機。
開啟兩臺虛擬機(controller和compute),分別修改主機名和配置靜態IP
# hostnamectl set-hostname controller
# cd /etc/sysconfig/network-scripts/
# vi ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=10.1.1.50 10.1.1.60
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
DNS1=10.1.1.2 要有DNS,DNS1、DNS2這種寫法而不是直接DNS
重啟控制節點和計算節點(controller和compute)再拍攝快照
3、OpenStack環境搭建(在線yum源)
Openstack環境搭建有很多種方法:
1.手工搭建,一個組件一個組件去安裝。
2.通過工具 packstack 生成一個應答文件,編寫應答文件,packstack調用應答文件去安裝openstack環境。
3.HCS huaweicloud stack deploy 工具,私有云部署工具,通過安裝一個精簡版的openstack(heat編排服務),通過該服務去一鍵式安裝整個云環境。
https://blog.51cto.com/cloudcs/6267456 搭建 openstack 最麻煩的是 yum 源問題
8版本用NetworkManager替代了network,仍想用ntwork需安裝network服務,# yum install network-scripts -y
以下內容控制節點和計算節點都要操作
關閉防火墻和selinux和NetworkManager
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vi /etc/selinux/config 修改SELINUX=disabled
# systemctl stop NetworkManager
# systemctl disable NetworkManager
配置ip和主機名的映射,
# vi /etc/hosts
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.1.50 controller
10.1.1.60 compute
安裝基礎軟件包(用自帶的在線yum源)
yum install -y vim net-tools bash-completion chrony.x86_64 centos-release-openstack-victoria.noarch
安裝network服務,# yum install network-scripts -y
配置ntp時間同步
# vim /etc/chrony.conf
pool ntp.aliyun.com iburst
# systemctl start chronyd
# systemctl enable chronyd
配置yum源(先把原有的備份后清空)
# cd /etc/yum.repos.d/ # rm -rf *
# cat cloud.repo [highavailability]
name=CentOS Stream 8 - HighAvailability
baseurl=https://mirrors.aliyun.com/centos/8-stream/HighAvailability/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[nfv]
name=CentOS Stream 8 - NFV
baseurl=https://mirrors.aliyun.com/centos/8-stream/NFV/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[rt]
name=CentOS Stream 8 - RT
baseurl=https://mirrors.aliyun.com/centos/8-stream/RT/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[resilientstorage]
name=CentOS Stream 8 - ResilientStorage
baseurl=https://mirrors.aliyun.com/centos/8-stream/ResilientStorage/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[extras-common]
name=CentOS Stream 8 - Extras packages
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/x86_64/extras-common/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[extras]
name=CentOS Stream - Extras
mirrorlist=http://mirrorlist.centos.org/?release=&arch=&repo=extras&infra=
#baseurl=http://mirror.centos.org///extras//os/
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial[centos-ceph-pacific]
name=CentOS - Ceph Pacific
baseurl=https://mirrors.aliyun.com/centos/8-stream/storage/x86_64/ceph-pacific/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage[centos-rabbitmq-38]
name=CentOS-8 - RabbitMQ 38
baseurl=https://mirrors.aliyun.com/centos/8-stream/messaging/x86_64/rabbitmq-38/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Messaging[centos-nfv-openvswitch]
name=CentOS Stream 8 - NFV OpenvSwitch
baseurl=https://mirrors.aliyun.com/centos/8-stream/nfv/x86_64/openvswitch-2/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-NFV
module_hotfixes=1[baseos]
name=CentOS Stream 8 - BaseOS
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[appstream]
name=CentOS Stream 8 - AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1[centos-openstack-victoria]
name=CentOS 8 - OpenStack victoria
baseurl=https://mirrors.aliyun.com/centos/8-stream/cloud/x86_64/openstack-victoria/
#baseurl=https://repo.huaweicloud.com/centos/8-stream/cloud/x86_64/openstack-yoga/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud
module_hotfixes=1[powertools]
name=CentOS Stream 8 - PowerTools
#mirrorlist=http://mirrorlist.centos.org/?release=&arch=&repo=PowerTools&infra=
baseurl=https://mirrors.aliyun.com/centos/8-stream/PowerTools/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial# yum clean all 清理緩存
# yum makecache 重新建立緩存
# yum repolist all 列出yum倉庫(13個)
只在控制節點上安裝并配置packstack
安裝packstack工具,# yum install -y openstack-packstack
[root@controller ~]# packstack --help |grep ans 找到生成應答文件的參數,–gen-answer-file
[root@controller ~]# packstack --gen-answer-file=yingda.txt 生成應答文件
編輯應答文件,# vim yingda.txt
修改以下參數內容
CONFIG_COMPUTE_HOSTS=10.1.1.50,10.1.1.60
CONFIG_KEYSTONE_ADMIN_PW=redhat
CONFIG_PROVISION_DEMO=n
CONFIG_HEAT_INSTALL=y
CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160
需要注意的是 br-ex 后面對應的網卡名稱,有的網卡是ens33,我這里是ens160
根據應答文件安裝openstack,# packstack --answer-file=yingda.txt
8版本用NetworkManager替代了network,仍想用ntwork需安裝network服務,# yum install network-scripts -y 前面把NetworkManager禁用了后面啟用network服務。因關閉 NetworkManager 服務,會導致節點重啟后網絡無法自動啟用,也會導致 openstack 組件異常,所以啟用 network 來替代 NetworkManager 服務。
控制節點和計算節點都開啟network服務,# systemctl start network # systemctl enable network
控制節點和計算節點都開啟網絡服務后分別拍攝快照
用戶admin,密碼忘記了去應答文件中找。
4、OpenStack環境搭建(本地yum源)
所有流程和在線yum源是一樣的,唯獨配置yum源不一樣。
在計算節點上開啟httpd服務[root@compute ~]# yum install -y httpd # systemctl start httpd # systemctl enable httpd
[root@compute ~]# mkdir /iso 后將鏡像放置該目錄下[root@compute ~]# ls /iso
CentOS-Stream-8-OPS-Victoria.iso CentOS-Stream-8-x86_64-20221222-dvd1.iso
[root@compute ~]# cd /var/www/html/ [root@compute html]# mkdir os vic
[root@compute html]# vim /etc/fstab 鏡像文件系統類型為iso9660
/iso/CentOS-Stream-8-x86_64-20221222-dvd1.iso /var/www/html/os iso9660 defaults 0 0
/iso/CentOS-Stream-8-OPS-Victoria.iso /var/www/html/vic iso9660 defaults 0 0
[root@compute html]# mount -a 刷新
[root@compute html]# df -Th
控制節點和計算節點都要配置本地yum源
cat <<EOF > /etc/yum.repos.d/cloudcs.repo
[highavailability]
name=CentOS Stream 8 - HighAvailability
baseurl=http://192.168.100.152/vic/highavailability/
gpgcheck=0[nfv]
name=CentOS Stream 8 - NFV
baseurl=http://192.168.100.152/vic/nfv/
gpgcheck=0[rt]
name=CentOS Stream 8 - RT
baseurl=http://192.168.100.152/vic/rt/
gpgcheck=0[resilientstorage]
name=CentOS Stream 8 - ResilientStorage
baseurl=http://192.168.100.152/vic/resilientstorage/
gpgcheck=0[extras-common]
name=CentOS Stream 8 - Extras packages
baseurl=http://192.168.100.152/vic/extras-common/
gpgcheck=0[extras]
name=CentOS Stream $releasever - Extras
baseurl=http://192.168.100.152/vic/extras/
gpgcheck=0[centos-ceph-pacific]
name=CentOS - Ceph Pacific
baseurl=http://192.168.100.152/vic/centos-ceph-pacific/
gpgcheck=0[centos-rabbitmq-38]
name=CentOS-8 - RabbitMQ 38
baseurl=http://192.168.100.152/vic/centos-rabbitmq-38/
gpgcheck=0[centos-nfv-openvswitch]
name=CentOS Stream 8 - NFV OpenvSwitch
baseurl=http://192.168.100.152/vic/centos-nfv-openvswitch/
gpgcheck=0[baseos]
name=CentOS Stream 8 - BaseOS
baseurl=http://192.168.100.152/os/BaseOS/
gpgcheck=0[appstream]
name=CentOS Stream 8 - AppStream
baseurl=http://192.168.100.152/os/AppStream/
gpgcheck=0[centos-openstack-victoria]
name=CentOS 8 - OpenStack victoria
baseurl=http://192.168.100.152/vic/centos-openstack-victoria/
gpgcheck=0[powertools]
name=CentOS Stream 8 - PowerTools
baseurl=http://192.168.100.152/vic/powertools/
gpgcheck=0
EOF
從網上下載新的Stream-8的isoj鏡像如CentOS-Stream-8-x86_64-latest-dvd1.iso更新了一些新特性,導致本地yum源安裝openstack-packstack失敗,本地yum源加module_hotfixes=1參數也不行,得用CentOS-Stream-8-OPS-Victoria.iso和CentOS-Stream-8-x86_64-20221222-dvd1.iso配套使用。