1.1云計算概述
相信大家都聽到很多的阿里云、騰訊云、百度云等等這些詞,那到底什么是云計算?云
計算又能做什么?
1.1.1什么是云計算
云計算(cloud computing)是一種基于網絡的超級計算模式,基于用戶的不同需求,提供所需的資源,包括計算資源、存儲資源、網絡資源等。云計算服務務運行在若干臺高性能物理服務器之上,提供每秒10萬億次的運算能力,可以用于模擬核爆炸、預測氣候變化以及市場發展趨勢。
云計算有廣義和狹義之分。
> 狹義的云計算是指通過網絡按需向用戶提供IT基礎設施,包括硬件、平臺和軟件,提
供資源的網絡被稱為"云"。
> 廣義的云計算是指服務的交付和使用模式,通過網絡以按需、、易擴展的方式獲得所需的
服務。
1.1.2云計算的服務模型
云計算模型中有laaS (Infrastructure as a Service,基礎架構即服務)、Paas(Platform
as a Service,平臺即服務)、SaaS (Software as a Service,軟件即服務)三種基本服務模型
1.laaS
laas提供最底層的IT基礎設施服務,包括處理能力、存儲空間、網各資源等。
2.PasS
Paas是把已經安裝好開發環境的系統平臺作為一種服務通通過互聯網提供給用戶。
3.Saas
Saas可直接通過互聯網為用戶提供軟件和應用程序等服務
1.1.3OpenStack概述
OpenStack 是一個旨在為公共及私有云的建設與管理提供軟件的開源項目。它不是一個單一的軟件,而是由多個組件組成的云計算平臺。這些組件相互協作,提供諸如創建和管理虛擬機、分配和管理存儲資源、配置網絡等功能。?
OpenStack 主要包含以下核心組件:?
- Nova:計算服務組件,負責虛擬機實例的生命周期管理,包括創建、啟動、停止、刪除虛擬機等操作。?
- Cinder:塊存儲服務組件,為虛擬機提供持久化的塊存儲設備,類似于我們在物理服務器上使用的硬盤。?
- Neutron:網絡服務組件,用于管理和配置云環境中的網絡,包括創建網絡、子網、路由器,以及配置安全組等網絡功能。?
- Glance:鏡像服務組件,用于存儲和管理虛擬機鏡像,用戶可以通過 Glance 上傳、下載和共享鏡像。?
- Horizon:OpenStack 的 Web 管理界面,通過圖形化的方式,方便用戶對 OpenStack 資源進行管理和操作,無需頻繁使用命令行。?
- Keystone:身份認證服務組件,負責用戶身份驗證、權限管理和服務目錄管理,確保只有授權用戶才能訪問相應的資源。?
了解這些核心組件的基本功能,有助于我們在后續的操作中更好地理解和使用 OpenStack。
1.2 OpenStack一鍵部署
1.2.1環境介紹
- CPU:至少 4 核及以上?
- 內存:16GB 及以上?
- 存儲:100GB 及以上可用磁盤空間
- 操作系統:Ubuntu 20.04 LTS 或 CentOS 8(本次實驗以 Ubuntu 20.04 LTS 為例)?
- 網絡:確保實驗環境能夠連接互聯網,以便安裝所需的軟件包和依賴項?
在準備好實驗環境后,我們還需要對操作系統進行一些基本的配置,如更新系統軟件包、設置主機名和網絡配置等。
- 更新系統軟件包?
在終端中執行以下命令,更新系統已安裝的軟件包到最新版本:
sudo apt update
sudo apt upgrade -y
2設置主機名
執行以下命令設置主機名(假設我們將主機名設置為 openstack - node):
sudo hostnamectl set - hostname openstack - node
3關閉防火墻和 SELinux(僅在測試環境中)?
為了避免防火墻和 SELinux 對 OpenStack 服務造成干擾,在測試環境中可以將它們關閉。執行以下命令關閉防火墻:?
?
TypeScript
取消自動換行復制
sudo ufw disable?
?
對于 CentOS 系統,還需要關閉 SELinux,編輯/etc/selinux/config文件,將SELINUX的值改為disabled,然后重啟系統使更改生效。?
三、安裝 OpenStack 軟件包?
(一)安裝 OpenStack 源?
OpenStack 官方提供了穩定的軟件源,我們可以通過添加源來安裝 OpenStack 相關軟件包。執行以下命令添加 OpenStack 源:?
?
TypeScript
取消自動換行復制
sudo apt - install software - properties - common?
sudo add - apt - repository cloud - archive:ussuri?
sudo apt update?
?
這里我們使用的是 OpenStack Ussuri 版本的源,你也可以根據自己的需求選擇其他版本。?
(二)安裝數據庫?
OpenStack 的多個組件需要使用數據庫來存儲配置和運行數據,我們選擇安裝 MySQL 數據庫。執行以下命令安裝 MySQL:?
?
TypeScript
取消自動換行復制
sudo apt - install mariadb - server python3 - pymysql?
?
安裝完成后,對 MySQL 進行安全配置,執行以下命令:?
?
TypeScript
取消自動換行復制
sudo mysql_secure_installation?
?
按照提示設置 root 用戶密碼,刪除匿名用戶、禁止 root 遠程登錄、刪除 test 數據庫等操作,以提高數據庫的安全性。?
(三)安裝消息隊列服務?
OpenStack 組件之間通過消息隊列進行通信,我們選擇安裝 RabbitMQ 作為消息隊列服務。執行以下命令安裝 RabbitMQ:?
?
TypeScript
取消自動換行復制
sudo apt - install rabbitmq - server?
?
安裝完成后,添加一個 OpenStack 用戶,并賦予其訪問權限:?
?
TypeScript
取消自動換行復制
sudo rabbitmqctl add_user openstack password?
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"?
?
這里將password替換為你設置的密碼。?
(四)安裝身份認證服務(Keystone)?
- 創建數據庫?
登錄 MySQL 數據庫:?
?
TypeScript
取消自動換行復制
sudo mysql - u root - p?
?
輸入之前設置的 root 密碼后,執行以下 SQL 語句創建 Keystone 數據庫:?
?
TypeScript
取消自動換行復制
CREATE DATABASE keystone;?
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'password';?
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'password';?
FLUSH PRIVILEGES;?
EXIT;?
?
將password替換為你設置的密碼。?
- 安裝 Keystone 軟件包?
執行以下命令安裝 Keystone:?
?
TypeScript
取消自動換行復制
sudo apt - install keystone python3 - keystoneclient apache2 libapache2 - mod - wsgi - python3?
?
- 配置 Keystone?
編輯/etc/keystone/keystone.conf文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[database]?
connection = mysql+pymysql://keystone:password@localhost/keystone?
?
[token]?
provider = fernet?
?
將password替換為你設置的密碼。?
- 初始化 Keystone 數據庫?
執行以下命令初始化 Keystone 數據庫:?
?
TypeScript
取消自動換行復制
sudo su - s /bin/bash - c "keystone-manage db_sync" keystone?
?
- 配置 Fernet 令牌?
執行以下命令初始化 Fernet 密鑰:?
?
TypeScript
取消自動換行復制
sudo keystone - manage fernet_setup --keystone - user keystone --keystone - group keystone?
sudo keystone - manage credential_setup --keystone - user keystone --keystone - group keystone?
?
- 啟動 Keystone 服務?
重啟 Apache 服務使配置生效:?
?
TypeScript
取消自動換行復制
sudo systemctl enable --now apache2?
?
- 配置 Keystone 服務端點?
通過命令行設置 Keystone 服務端點:?
?
TypeScript
取消自動換行復制
export OS_USERNAME=admin?
export OS_PASSWORD=password?
export OS_PROJECT_NAME=admin?
export OS_USER_DOMAIN_NAME=Default?
export OS_PROJECT_DOMAIN_NAME=Default?
export OS_AUTH_URL=http://controller:5000/v3?
export OS_IDENTITY_API_VERSION=3?
?
openstack endpoint create --region RegionOne identity public http://controller:5000/v3?
openstack endpoint create --region RegionOne identity internal http://controller:5000/v3?
openstack endpoint create --region RegionOne identity admin http://controller:35357/v3?
?
將password替換為你設置的密碼。?
(五)安裝鏡像服務(Glance)?
- 創建數據庫?
登錄 MySQL 數據庫,執行以下 SQL 語句創建 Glance 數據庫:?
?
TypeScript
取消自動換行復制
CREATE DATABASE glance;?
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'password';?
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password';?
FLUSH PRIVILEGES;?
EXIT;?
?
將password替換為你設置的密碼。?
- 創建服務用戶和端點?
創建 Glance 服務用戶:?
?
TypeScript
取消自動換行復制
openstack user create --domain default --password - prompt glance?
?
輸入密碼后,將 Glance 用戶添加到service項目,并賦予admin角色:?
?
TypeScript
取消自動換行復制
openstack role add --project service --user glance admin?
?
創建 Glance 服務實體:?
?
TypeScript
取消自動換行復制
openstack service create --name glance --description "OpenStack Image" image?
?
創建 Glance 服務端點:?
?
TypeScript
取消自動換行復制
openstack endpoint create --region RegionOne image public http://controller:9292?
openstack endpoint create --region RegionOne image internal http://controller:9292?
openstack endpoint create --region RegionOne image admin http://controller:9292?
?
- 安裝 Glance 軟件包?
執行以下命令安裝 Glance:?
?
TypeScript
取消自動換行復制
sudo apt - install glance?
?
- 配置 Glance?
編輯/etc/glance/glance - api.conf和/etc/glance/glance - registry.conf文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[database]?
connection = mysql+pymysql://glance:password@localhost/glance?
?
[keystone_authtoken]?
auth_url = http://controller:5000/v3?
memcached_servers = controller:11211?
auth_type = password?
project_domain_name = Default?
user_domain_name = Default?
project_name = service?
username = glance?
password = password?
?
[paste_deploy]?
flavor = keystone?
?
將password替換為你設置的密碼。?
- 初始化 Glance 數據庫?
執行以下命令初始化 Glance 數據庫:?
?
TypeScript
取消自動換行復制
sudo su - s /bin/bash - c "glance-manage db_sync" glance?
?
- 啟動 Glance 服務?
執行以下命令啟動 Glance 服務:?
?
TypeScript
取消自動換行復制
sudo systemctl enable glance - api glance - registry?
sudo systemctl start glance - api glance - registry?
?
(六)安裝計算服務(Nova)?
- 創建數據庫?
登錄 MySQL 數據庫,執行以下 SQL 語句創建 Nova 數據庫:?
?
TypeScript
取消自動換行復制
CREATE DATABASE nova;?
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'password';?
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password';?
FLUSH PRIVILEGES;?
EXIT;?
?
將password替換為你設置的密碼。?
- 創建服務用戶和端點?
創建 Nova 服務用戶:?
?
TypeScript
取消自動換行復制
openstack user create --domain default --password - prompt nova?
?
輸入密碼后,將 Nova 用戶添加到service項目,并賦予admin角色:?
?
TypeScript
取消自動換行復制
openstack role add --project service --user nova admin?
?
創建 Nova 服務實體:?
?
TypeScript
取消自動換行復制
openstack service create --name nova --description "OpenStack Compute" compute?
?
創建 Nova 服務端點:?
?
TypeScript
取消自動換行復制
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s?
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s?
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s?
?
- 安裝 Nova 軟件包?
執行以下命令安裝 Nova:?
?
TypeScript
取消自動換行復制
sudo apt - install nova - compute?
?
- 配置 Nova?
編輯/etc/nova/nova.conf文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[database]?
connection = mysql+pymysql://nova:password@localhost/nova?
?
[DEFAULT]?
transport_url = rabbit://openstack:password@controller?
my_ip = <你的服務器IP地址>?
use_neutron = True?
firewall_driver = nova.virt.firewall.NoopFirewallDriver?
?
[api]?
auth_strategy = keystone?
?
[keystone_authtoken]?
auth_url = http://controller:5000/v3?
memcached_servers = controller:11211?
auth_type = password?
project_domain_name = Default?
user_domain_name = Default?
project_name = service?
username = nova?
password = password?
?
[vnc]?
enabled = True?
vncserver_listen = 0.0.0.0?
vncserver_proxyclient_address = $my_ip?
novncproxy_base_url = http://controller:6080/vnc_auto.html?
?
[glance]?
api_servers = http://controller:9292?
?
[oslo_concurrency]?
lock_path = /var/lib/nova/tmp?
?
將password替換為你設置的密碼,并將<你的服務器IP地址>替換為實際的服務器 IP 地址。?
- 初始化 Nova 數據庫?
執行以下命令初始化 Nova 數據庫:?
?
TypeScript
取消自動換行復制
sudo su - s /bin/bash - c "nova-manage api_db sync" nova?
sudo su - s /bin/bash - c "nova-manage db sync" nova?
?
- 啟動 Nova 服務?
執行以下命令啟動 Nova 服務:?
?
TypeScript
取消自動換行復制
sudo systemctl enable nova - compute?
sudo systemctl start nova - compute?
?
(七)安裝網絡服務(Neutron)?
- 創建數據庫?
登錄 MySQL 數據庫,執行以下 SQL 語句創建 Neutron 數據庫:?
?
TypeScript
取消自動換行復制
CREATE DATABASE neutron;?
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password';?
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'password';?
FLUSH PRIVILEGES;?
EXIT;?
?
將password替換為你設置的密碼。?
- 創建服務用戶和端點?
創建 Neutron 服務用戶:?
?
TypeScript
取消自動換行復制
openstack user create --domain default --password - prompt neutron?
?
輸入密碼后,將 Neutron 用戶添加到service項目,并賦予admin角色:?
?
TypeScript
取消自動換行復制
openstack role add --project service --user neutron admin?
?
創建 Neutron 服務實體:?
?
TypeScript
取消自動換行復制
openstack service create --name neutron --description "OpenStack Networking" network?
?
創建 Neutron 服務端點:?
?
TypeScript
取消自動換行復制
openstack endpoint create --region RegionOne network public http://controller:9696?
openstack endpoint create --region RegionOne network internal http://controller:9696?
openstack endpoint create --region RegionOne network admin http://controller:9696?
?
- 安裝 Neutron 軟件包?
執行以下命令安裝 Neutron:?
?
TypeScript
取消自動換行復制
sudo apt - install neutron - server neutron - plugin - ml2 neutron - linuxbridge - agent neutron - dhcp - agent neutron - l3 - agent?
?
- 配置 Neutron?
編輯/etc/neutron/neutron.conf文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[database]?
connection = mysql+pymysql://neutron:password@localhost/neutron?
?
[DEFAULT]?
core_plugin = ml2?
service_plugins = router?
transport_url = rabbit://openstack:password@controller?
auth_strategy = keystone?
notify_nova_on_port_status_changes = True?
notify_nova_on_port_data_changes = True?
?
[keystone_authtoken]?
auth_url = http://controller:5000/v3?
memcached_servers = controller:11211?
auth_type = password?
project_domain_name = Default?
user_domain_name = Default?
project_name = service?
username = neutron?
password = password?
?
[nova]?
auth_url = http://controller:5000/v3?
auth_type = password?
project_domain_name = Default?
user_domain_name = Default?
region_name = RegionOne?
project_name = service?
username = nova?
password = password?
?
將password替換為你設置的密碼。?
編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[ml2]?
type_drivers = flat,vlan,vxlan?
tenant_network_types = vxlan?
mechanism_drivers = linuxbridge,l2population?
extension_drivers = port_security?
?
[ml2_type_flat]?
flat_networks = provider?
?
[securitygroup]?
enable_ipset = True?
?
編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[linux_bridge]?
physical_interface_mappings = provider:eth0?
?
[vxlan]?
enable_vxlan = True?
local_ip = <你的服務器IP地址>?
l2_population = True?
?
[securitygroup]?
enable_security_group = True?
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver?
?
將<你的服務器IP地址>替換為實際的服務器 IP 地址。?
編輯/etc/neutron/dhcp_agent.ini文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[DEFAULT]?
interface_driver = linuxbridge?
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq?
enable_isolated_metadata = True?
?
編輯/etc/neutron/l3_agent.ini文件,找到并修改以下配置項:?
?
TypeScript
取消自動換行復制
[DEFAULT]?
interface_driver = linuxbridge?
?
- 初始化 Neutron 數據庫?
執行以下命令初始化 Neutron 數據庫:?
?
TypeScript
取消自動換行復制
sudo</doubaocanvas>?