OpenStack簡介
OpenStack既是一個社區,也是一個項目和一個開源軟件,它提供了一個部署云的操作平臺或工具集(IaaS)。其宗旨在于:幫助組織運行為虛擬計算或存儲服務的云,為公有云、私有云提供可擴展的、靈活的云計算。
OpenStack主要包含以下幾個組件,各個組件的功能如下,其中Nova,Keyston,Neutron,Glance,DashBoard為必須裝的組件,其余可以選擇性安裝,圖為OpenStack生態系統。
- Nova 計算管理服務,支撐虛擬機運行
- Keystone 提供所有組件的認證
- Neutron 提供網絡支持
- Glance 提供給鏡像服務
- DashBoard 提供WEB管理界面服務
- Swift 提供對象存儲
- Cinder 提供擴展硬盤給nova
- Ceilometer 監控cinder,neutron,nova,glance運行并計量
- Heat 支持云平臺資源自動部署,集群服務
OpenStack安裝配置
由于OpenStack的各個模塊都需要通過KeyStone來進行認證,所以在配置安裝OpenStack過程中需要主要,安裝其他模塊之前必須先進行安裝KeyStone模塊,本次安裝步驟如下:
- 配置認證服務KeyStone
- 配置鏡像服務Glance
- 配置計算服務Nova
- 配置網絡服務Neutron
- 配置Web管理服務DashBoard
配置認證服務KeyStone
主要分為以下幾步
- 安裝配置認證服務
- 創建用戶、租戶和角色
安裝配置認證服務
KeyStone只需要在controller上面進行配置,執行yum指令即可安裝,安裝成功后需要進行數據庫相關配置,還需要對相關權限進行配置
- 安裝KeyStone
yum install -y openstack-keystone python-opnstackclient
- 修改配置文件設置數據庫
openstack-config --set /etc/keystone/keystone.conf database connection mysql://keystone:000000@controller/keystone
- 配置數據庫用戶
[root@controller ~]# mysql -u root -p000000
MariaDB [(none)]> create database keystone;
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by '000000';
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by '000000';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
- 為認證服務創建數據庫表
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
- 定義配置授權令牌
[root@controller ~]# ADMIN_TOKEN=$(openssl rand -hex 10)
[root@controller ~]# echo $ADMIN_TOKEN
3a4756d6a595a5d6794c
[root@controller ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
- 相關權限配置
[root@controller ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
[root@controller ~]# chown -R keystone:keystone /etc/keystone/ssl
[root@controller ~]# chmod -R o-rwx /etc/keystone/ssl
啟動KeyStone服務并設置自啟動
[root@controller ~]# systemctl restart openstack-keystone
[root@controller ~]# systemctl enable openstack-keystone創建計劃任務并定期執行
[root@controller ~]# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone
[root@controller ~]# crontab -l -u keystone
@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1
創建用戶、租戶和角色
- 配置環境變量,編輯admin-openrc.sh文件,并寫入以下幾句,保存后執行
[root@controller ~]# vi admin-openrc.sh
export OS_TOKEN=3a4756d6a595a5d6794c
export OS_URL=http://controller:35357/v3
export OS_USERNAME=admin
export OS_PASSWORD=000000
export OS_AUTH_URL=http://controller:35357/v3
export OS_PROJECT_NAME=admin
export OS_IDENTITY_API_VERSION=3
[root@controller ~]# source admin-openrc.sh
- 通過openstackclient創建服務及對應的endpoint
[root@controller ~]# openstack
(openstack) service create --name keystone --description "Openstack Identity" identity
(openstack) endpoint create --region RegionOne identity public http://controller:5000/v3
(openstack) endpoint create --region RegionOne identity admin http://controller:35357/v3
(openstack) endpoint create --region RegionOne identity internal http://controller:35357/v3
- 創建admin相關項目、用戶、角色
(openstack) project create --domain default --description "Admin Project" admin
(openstack) user create --domain default --password 000000 --email admin@localhost admin
(openstack) role create admin
(openstack) role add --project admin --user admin admin
- 創建demo相關項目、用戶、角色
(openstack) project create --domain default --description "Demo Project" demo
(openstack) user create --domain default --password 000000 demo
(openstack) role create demo
(openstack) role add --project demo --user demo user
- 創建service相關項目、用戶、角色
(openstack) project create --domain default --description="Service Project" service
驗證認證服務
- 重置環境變量并獲取token
[root@controller ~]# unset OS_TOKEN
[root@controller ~]# unset OS_URL
[root@controller ~]# openstack token issue
配置鏡像服務Glance
Glance鏡像服務實現發現、注冊、獲取虛擬機鏡像和鏡像元數據,鏡像數據支持存儲多種的存儲系統,可以是簡單文件系統、對象存儲系統等。
Glance鏡像服務是典型的C/S架構,Glance架構包括glance-CLIent、Glance、Glance Store。Glance包括主要包括REST API、數據庫抽閑層(DAL)、域控制器(Glance Domain controller)、注冊層(Registry Layer),Glance 使用集中數據庫(Glance DB)在Glance各組件直接共享數據。
該過程僅需在controller節點布置。
- 下載安裝Glance
[root@controller ~]# yum install openstack-glance -y - 修改相關配置文件,設置數據庫連接以及keystone相關設置
openstack-config --set /etc/glance/glance-api.conf database connection mysql://glance:000000@controller/glance
openstack-config --set /etc/glance/glance-registry.conf database connection mysql://glance:000000@controller/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_plugin password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_id default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_id default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 000000
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_plugin password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_id default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_id default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password 000000
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
配置成功后兩個文件均會多出以下幾行
- 配置數據庫相關權限及表
[root@controller ~]# mysql -u root -p000000
create database glance;
grant all privileges on glance.* to 'glance'@'localhost' identified by '000000';
grant all privileges on glance.* to 'glance'@'%' identified by '000000';
flush privileges;
exit
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
-
建立相關用戶
[root@controller ~]# openstack
(openstack) user create --password 000000 --email glance@localhost glance
(openstack) role add --project service --user glance admin
成功 建立endpoint
(openstack) service create --name glance --description="Openstack Image Service" image
(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
- 啟動服務并設置自啟動
[root@controller ~]# systemctl restart openstack-glance-api
[root@controller ~]# systemctl restart openstack-glance-registry
[root@controller ~]# systemctl enable openstack-glance-api
[root@controller ~]# systemctl enable openstack-glance-registry
-
上傳鏡像
[root@controller images]# openstack image create --disk-format qcow2 --container-format bare --public --file /opt/images/centos_65_x86_6420140327.qcow2 centos
上傳成功
遇見問題
- 安裝openstack-keystone的時候會報錯,提示缺少python-zope-interface這個包,在阿里云、網易云鏡像站均找不到這個包,最后通過關鍵字搜索python-zope-interface rpm找到了對應的包,放入epel文件夾并更新repodate文件,再次安裝成功。
- 由于k版本后keystone client被openstack client所代替,所以如果yum的是python-keystoneclient,執行命令時候會出現如圖所示告警,下載
- 在配置賬戶的時候出現很多問題,例如試驗指導書里面給的環境變量是 OS_SERVICE_ENDPOINT和OS_SERVICE_TOKEN,但是幫助里面沒有這個環境變量的用法,當我修改為OS_URL和OS_TOKEN的時候可以正常使用,可能是因為版本變更的問題吧。并且這里如果沒有配置OS_URL和OS_TOKEN環境變量的話,報錯的很多問題可能都不會指向OS_URL,可能會提示其他諸如
openstack could not determine a suitable url for the plugin
openstack The request you have made requires authentication,
還有一些其他的報錯沒有一一記錄,總之,這兩個環境變量很重要。
在配置環境變量的時候各參數一定要一致,如果地址末尾給的是v3,那么一定要將export OS_IDENTITY_API_VERSION的值設置成3,如果給的是v2.0,則這一項可以不填,因為默認的是2,不然會因為版本問題無法繼續配置。
注意這里對于環境變量OS_URL和OS_TOKEN一定要重置,否則會提示404未找到等