1.openstack簡介
Openstack是一個項目,該項目支持所有類型的雲環境的一個開源雲計算平臺,該項目的目的是爲了實現簡單,大規模可擴展性,以及豐富功能集,來自世界各地的雲計算專家項目作出貢獻。Openstack提供了一個基礎架構即服務(Iaas)並通過各種配套服務的解決方案,每個服務提供一個應用編程接口來完成整個openstack的結合。
架構圖如下:
相關服務介紹:
服務名稱 | 項目名稱 | 描述 |
Dashboard | Horizon | 基於openstackAPI接口使用Django開發的web管理 |
Compute | Nova | 通過虛擬化技術提供計算資源池 |
Networking | Neutron | 實現了虛擬機的網絡資源管理 |
Storage(存儲) | ||
Object Storage | Swift | 對象存儲,適用於“一次寫入、多次讀取” |
Block Storage | Cinder | 塊存儲,提供存儲資源池 |
Share Service(共享服務) | ||
Identity Service | Keystone | 認證服務 |
Image Service | Glance | 提供虛擬鏡像的註冊和存儲管理 |
Telemetry | Ceilometer | 提供監控和數據採集、計算服務 |
Higher-level services(高層服務) | ||
Orchestration | Heat | 自動化部署的組件 |
DatabaseService | Trove | 提供數據庫應用服務 |
部署服務示例圖如下:
2.openstack的搭建部署
2.1部署環境說明
2.1.1基礎實驗環境:
軟硬件:VMware 12pro CentOS7.2 ;
兩臺虛擬機分別作爲控制節點和計算節點;
控制節點:2核處理器,4GB內存,50G硬盤
計算節點:1核處理器,2GB內存,50G硬盤
計算節點開啓虛擬機化功能以便創建虛擬機。
服務的部署架構圖如下:
2.1.2網絡時間協議(NTP)
確保兩臺主機的時間同步:ntpdatetime1.aliyun.com
2.1.3兩個節點需要安裝的包
啓用OpenStack庫
yum installcentos-release-openstack-newton –y
安裝openstack客戶端
yum install python-openstackclient –y
RHEL和 CentOS 默認啓用 SELinux 。安裝 openstack-selinux 包實現對OpenStack服務的安全策略進行自動管理:
yum install openstack-selinux –y
注意:測試證明,不要升級包,由於更新了一個新的內核會導致後面無法虛擬機創建失敗。
2.2基礎服務的部署
2.2.1基礎服務介紹
基礎服務:MySQL、RabbitMQ和Memcached
MySQL的使用主要是openstack各個組件存儲,生產環境需要做集羣;RabbitMQ爲分佈式消息隊列,用於組件之間的通信,支持集羣;
RabbitMQ爲分佈式消息隊列,用於組件之間的通信,支持集羣,除了Horizon和KeyStone,其它組件需要連接RabbitMQ;
Memcached:各類服務的身份認證機制使用Memcached緩存令牌。緩存服務memecached通常運行在控制節點。在生產部署中,我們推薦聯合啓用防火牆、認證和加密保證它的安全。
都是部署在控制節點上。
2.2.2MySQL部署
a軟件包安裝
yum install -ymariadb mariadb-server python2-PyMySQL
b.創建並編輯/etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address =192.168.56.11
default-storage-engine= innodb
innodb_file_per_table
max_connections =4096
collation-server =utf8_general_ci
character-set-server= utf8
c.完成安裝
啓動數據庫服務,並將配置設置爲開機自啓
systemctl enablemariadb.service
systemctl startmariadb.service
爲了保證數據庫服務的安全性,運行``mysql_secure_installation``腳本。特別需要說明的是,爲數據庫的root用戶設置一個適當的密碼。
mysql_secure_installation
2.2.3Rabbitmq部署
a.軟件包的安裝
yum install -y rabbitmq-server
b.啓動消息隊列服務並將其配置爲隨系統啓動
systemctl enablerabbitmq-server.service
systemctl startrabbitmq-server.service
c.添加openstack用戶
rabbitmqctladd_user openstack openstack(密碼)
d.給``openstack``用戶配置寫和讀權限
rabbitmqctlset_permissions openstack ".*" ".*" ".*"
e.啓動RabbitMQ_Web插件,管理界面監聽15672端口
rabbitmq-pluginsenable rabbitmq_management
2.2.4memcached的部署
a.軟件包安裝
yum installmemcached python-memcached -y
b.修改配置
vim/etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l192.168.56.11,::1"
c.啓動Memcached服務,並且配置它隨機啓動。
systemctl enablememcached.service
systemctl startmemcached.service
2.3認證服務
2.3.1keystone概況
Keystone包含用戶認證和服務目錄。
a.用戶與認證:用戶權限與用戶行爲跟蹤;
User:用戶 ,它是用一個數字代表使用openstack雲服務的一個人,系統或服務。身份驗證服務將會驗證傳入的由用戶聲明將調用的請求。
Project(tenant):項目,早期稱爲租戶,它是各個服務中的一些可以訪問的資源集合或者說叫資源組,它是一個容器,用於組織和隔離資源,或標示對象。
一個租戶可以有多個用戶。
一個用戶可以屬於一個或多個租戶
用戶對租戶和操作權限由租戶中擔任的角色來決定。
Token:令牌
Role:角色,roles代表一組用戶可以訪問的資源權限,例如Nova中的虛擬機、glance中的鏡像。Users可以被添加到任意一個全局的或項目內的角色中,在全局的role中,用戶的role權限作用於所有的租戶,即可以對所有的租戶執行role規定的權限;在租戶內的role中,用戶僅能在當前租戶內執行role規定的權限。
b服務目錄:提供一個服務目錄,包含所有服務項目與相關API端點
Service:服務 如Nova、glance、swift根據前三個概念(user,tenant,role)一個服務可以確認當前用戶是否具有訪問其資源的權限。但是當一個user嘗試着訪問其租戶內的service時,他必須知道這個service是否存在以及如何訪問這個service
Endpoint:端點,我們可以理解它是一個服務暴露出來的訪問點,如果需要訪問一個服務,則必須知道他的endpoint。Endpoint的每個URL都對應一個服務實例的訪問地址,並且具有public、private和admin這三種權限。Public URL可以被全局訪問,private URL只能被局域網訪問,admin URL被從常規的訪問中分離。
2.3.2keystone的配置與安裝
a.創建相關數據庫並授權
create database keystone;
grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';
grant all on keystone.* to 'keystone'@'%' identified by 'keystone';
b.keystone相關軟件包安裝
yum install–y openstack-keystone httpd mod_wsgi
c. 編輯文件 /etc/keystone/keystone.conf
[database]#配置數據庫訪問
connection =mysql+pymysql://keystone:[email protected]/keystone
[memcache]#緩存的連接
servers =192.168.56.11:11211
[token]#配置Fernet UUID令牌的提供者
provider = fernet
driver = memcache
d初始化身份認證服務的數據庫
su -s /bin/sh -c"keystone-manage db_sync" keystone
驗證
mysql -h192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"
e初始化Fernet key
keystone-managefernet_setup --keystone-user keystone --keystone-group keystone
keystone-managecredential_setup --keystone-user keystone --keystone-group keystone
f引導標識服務
keystone-managebootstrap --bootstrap-password admin \
--bootstrap-admin-urlhttp://192.168.56.11:35357/v3/ \
--bootstrap-internal-urlhttp://192.168.56.11:35357/v3/ \
--bootstrap-public-urlhttp://192.168.56.11:5000/v3/ \
--bootstrap-region-idRegionOne
2.3.3配置Apache http服務器
a配置http;配置``ServerName`` 選項爲控制節點
vim/etc/httpd/conf/httpd.conf
ServerName192.168.56.11:80
b創建一個鏈接到``/usr/share/keystone/wsgi-keystone.conf``文件
ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
c啓動 Apache HTTP 服務並配置其隨系統啓動
systemctl enablehttpd.service
systemctl starthttpd.service
d配置admin賬戶
exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_PROJECT_NAME=admin
exportOS_USER_DOMAIN_NAME=default
exportOS_PROJECT_DOMAIN_NAME=default
exportOS_AUTH_URL=http://192.168.56.11:35357/v3
exportOS_IDENTITY_API_VERSION=3
2.3.4創建一個域,項目,用戶和角色
使用一個你添加到你的環境中每個服務包含獨有用戶的service 項目。創建``service``項目:
openstack projectcreate --domain default \
--description"Service Project" service
常規(非管理)任務應該使用無特權的項目和用戶。作爲例子,本指南創建demo 項目和用戶。
創建``demo`` 項目:
openstack projectcreate --domain default \
--description"Demo Project" demo
創建``demo`` 用戶:
openstack usercreate --domain default \
--password-promptdemo
創建 user 角色:
openstack rolecreate user
把demo用戶加到demo項目授予user用戶
openstack role add--project demo --user demo user
2.3.5驗證
a撤銷臨時環境變量``OS_AUTH_URL``和``OS_PASSWORD``
unset OS_AUTH_URLOS_PASSWORD
b作爲 admin 用戶,請求認證令牌
openstack--os-auth-url http://192.168.56.11:35357/v3 --os-project-domain-name default--os-user-domain-name default --os-project-name admin --os-username admin tokenissue
c作爲``demo`` 用戶,請求認證令牌
openstack--os-auth-url http://192.168.56.11:5000/v3 --os-project-domain-name default--os-user-domain-name default --os-project-name demo --os-username demo tokenissue
2.3.6創建 OpenStack 客戶端環境腳本
創建 admin 和``demo``項目和用戶創建客戶端環境變量腳本。本實驗的接下來的部分會引用這些腳本,爲客戶端操作加載合適的的憑證。
a.編輯`` admin-openstack ``文件並且增加以下內容
exportOS_PROJECT_DOMAIN_NAME=default
exportOS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_AUTH_URL=http://192.168.56.11:35357/v3
exportOS_IDENTITY_API_VERSION=3
exportOS_IMAGE_API_VERSION=2
b編輯文件 demo-openstack 並添加如下內容
exportOS_PROJECT_DOMAIN_NAME=default
exportOS_USER_DOMAIN_NAME=default
exportOS_PROJECT_NAME=demo
exportOS_USERNAME=demo
exportOS_PASSWORD=demo
exportOS_AUTH_URL=http://192.168.56.11:5000/v3
exportOS_IDENTITY_API_VERSION=3
exportOS_IMAGE_API_VERSION=2
c使用腳本
1)加載``admin-openrc``文件來身份認證服務的環境變量位置和``admin``項目和用戶證書
sourceadmin-openstack
2)請求認證令牌:
openstack tokenissue
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
| expires |2016-12-20 06:36:58+00:00 |
| id |gAAAAABYWMN6VL02m9TtQtV0DxmaFtZqWD142fi7ggLdT_bcQXfs395O2T9q- |
| |UElJZPk_5y7QttNNpiaUb7Ant90C1w8Dnm7D7aE8ILD0DLnexqAgJD0HXQYrk9g6ajGq_sZMZixOdwK_yhR7-m3kIlbPeh_qvVtHHY9QjIh2RzkO79wFZ-uTvg|
| project_id |98e702c0165641d5b8833dce373373b2 |
| user_id |37a18975b18f484c8861d2ed4de048cb |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
以上圖片版權以及內容爲趙班長授課以及官網。