雲計算之openstack(N版)keystone鏡像服務最佳實踐

1.openstack簡介

Openstack是一個項目,該項目支持所有類型的雲環境的一個開源雲計算平臺,該項目的目的是爲了實現簡單,大規模可擴展性,以及豐富功能集,來自世界各地的雲計算專家項目作出貢獻。Openstack提供了一個基礎架構即服務(Iaas)並通過各種配套服務的解決方案,每個服務提供一個應用編程接口來完成整個openstack的結合。

架構圖如下:

wKioL1hsqlzxdPhTAADRY4qH1tE895.png-wh_50

相關服務介紹:

服務名稱

項目名稱

描述

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

提供數據庫應用服務

部署服務示例圖如下:

wKiom1hsqnOC9vtVAACMrqGF21U686.png-wh_50


2.openstack的搭建部署

2.1部署環境說明

2.1.1基礎實驗環境:

軟硬件:VMware 12pro  CentOS7.2 ;

兩臺虛擬機分別作爲控制節點和計算節點;

控制節點:2核處理器,4GB內存,50G硬盤

計算節點:1核處理器,2GB內存,50G硬盤

計算節點開啓虛擬機化功能以便創建虛擬機。

服務的部署架構圖如下:

wKioL1hsqoLA8aB7AAED4Te5usw127.png-wh_50

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

wKioL1hsqtPzlovTAAGsdYO_1K4366.png-wh_50

 

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 |

+------------+----------------------------------------------------------------------------------------------------------------------------------------------+


以上圖片版權以及內容爲趙班長授課以及官網。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章