雲計算與openstack學習(六)

理解 Keystone 核心概念 

upload-ueditor-p_w_picpath-20160407-1460033914

作爲 OpenStack 的基礎支持服務,Keystone 做下面這幾件事情:

1. 管理用戶及其權限

2. 維護 OpenStack Services 的 Endpoint

3. Authentication(認證)和 Authorization(鑑權)


學習 Keystone,得理解下面這些概念:

upload-ueditor-p_w_picpath-20160407-1460033914

User

User 指代任何使用 OpenStack 的實體,可以是真正的用戶,其他系統或者服務。

upload-ueditor-p_w_picpath-20160407-1460033914

當 User 請求訪問 OpenStack 時,Keystone 會對其進行驗證。

Horizon 在 Identity->Users 管理 User

upload-ueditor-p_w_picpath-20160407-1460033915

除了 admin 和 demo,OpenStack 也爲 nova、cinder、glance、neutron 服務創建了相應的 User。 admin 也可以管理這些 User。

upload-ueditor-p_w_picpath-20160407-1460033915

Credentials

Credentials 是 User 用來證明自己身份的信息,可以是: 1. 用戶名/密碼 2. Token 3. API Key 4. 其他高級方式

upload-ueditor-p_w_picpath-20160407-1460033915

Authentication

Authentication 是 Keystone 驗證 User 身份的過程。

User 訪問 OpenStack 時向 Keystone 提交用戶名和密碼形式的 Credentials,Keystone 驗證通過後會給 User 簽發一個 Token 作爲後續訪問的 Credential。

upload-ueditor-p_w_picpath-20160407-1460033915

Token

Token 是由數字和字母組成的字符串,User 成功 Authentication 後由 Keystone 分配給 User。

1. Token 用做訪問 Service 的 Credential

2. Service 會通過 Keystone 驗證 Token 的有效性

3. Token 的有效期默認是 24 小時

upload-ueditor-p_w_picpath-20160407-1460033915

Project

Project 用於將 OpenStack 的資源(計算、存儲和網絡)進行分組和隔離。 根據 OpenStack 服務的對象不同,Project 可以是一個客戶(公有云,也叫租戶)、部門或者項目組(私有云)。

這裏請注意:

1. 資源的所有權是屬於 Project 的,而不是 User。

2. 在 OpenStack 的界面和文檔中,Tenant / Project / Account 這幾個術語是通用的,但長期看會傾向使用 Project

3. 每個 User(包括 admin)必須掛在 Project 裏才能訪問該 Project 的資源。 一個User可以屬於多個 Project。

4. admin 相當於 root 用戶,具有最高權限

upload-ueditor-p_w_picpath-20160407-1460033916

Horizon 在 Identity->Projects 中管理 Project

upload-ueditor-p_w_picpath-20160407-1460033916

通過 Manage Members 將 User 添加到 Project 中

upload-ueditor-p_w_picpath-20160407-1460033916

upload-ueditor-p_w_picpath-20160407-1460033916

Service

OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。

每個 Service 都會提供若干個 Endpoint,User 通過 Endpoint 訪問資源和執行操作。

upload-ueditor-p_w_picpath-20160407-1460033916

Endpoint

Endpoint 是一個網絡上可訪問的地址,通常是一個 URL。 Service 通過 Endpoint 暴露自己的 API。 Keystone 負責管理和維護每個 Service 的 Endpoint。

upload-ueditor-p_w_picpath-20160407-1460033917

可以使用下面的命令來查看 Endpoint。

root@devstack-controller:~# source devstack/openrc admin admin 

root@devstack-controller:~# openstack catalog list

upload-ueditor-p_w_picpath-20160407-1460033917

Role

安全包含兩部分:Authentication(認證)和 Authorization(鑑權) Authentication 解決的是“你是誰?”的問題 Authorization 解決的是“你能幹什麼?”的問題

Keystone 是藉助 Role 來實現 Authorization 的:

1. Keystone定義Role

upload-ueditor-p_w_picpath-20160407-1460033918

2. 可以爲 User 分配一個或多個 Role Horizon 的菜單爲 Identity->Project->Manage Membersupload-ueditor-p_w_picpath-20160407-1460033918

3. Service 決定每個 Role 能做什麼事情 Service 通過各自的 policy.json 文件對 Role 進行訪問控制。 下面是 Nova 服務 /etc/nova/policy.json 中的示例upload-ueditor-p_w_picpath-20160407-1460033918

6. 

上面配置的含義是:對於 create、attach_network 和 attach_volume 操作,任何Role的 User 都可以執行; 但只有 admin 這個 Role 的 User 才能執行 forced_host 操作。

OpenStack 默認配置只區分 admin 和非 admin Role。 如果需要對特定的 Role 進行授


通過例子學習 Keystone 

upload-ueditor-p_w_picpath-20160410-1460244058

上一節介紹了 Keystone 的核心概念。
本節我們通過“查詢可用 p_w_picpath”這個實際操作讓大家對這些概念建立更加感性的認識。 

User admin 要查看 Project 中的 p_w_picpath 

第 1 步 登錄

upload-ueditor-p_w_picpath-20160410-1460244058

當點擊upload-ueditor-p_w_picpath-20160410-1460244058時,OpenStack 內部發生了哪些事情?請看下面 

upload-ueditor-p_w_picpath-20160410-1460244058

Token 中包含了 User 的 Role 信息 

第 2 步 顯示操作界面

upload-ueditor-p_w_picpath-20160410-1460244058

請注意,頂部顯示 admin 可訪問的  Project 爲 “admin” 和 “demo”。 其實在此之前發生了一些事情: 

upload-ueditor-p_w_picpath-20160410-1460244059

同時,admin 可以訪問 Intance, Volume, Image 等服務 

upload-ueditor-p_w_picpath-20160410-1460244059

這是因爲 admin 已經從 Keystone 拿到了各 Service 的 Endpoints 

upload-ueditor-p_w_picpath-20160410-1460244059

第 3 步 顯示 p_w_picpath 列表

點擊 “Images”,會顯示 p_w_picpath 列表 

upload-ueditor-p_w_picpath-20160410-1460244059

背後發生了這些事: 

首先,admin 將請求發送到 Glance 的 Endpoint 

upload-ueditor-p_w_picpath-20160410-1460244059

Glance 向 Keystone 詢問 admin 身份的有效性。 

upload-ueditor-p_w_picpath-20160410-1460244059

接下來 Glance 會查看 /etc/glance/policy.json。 判斷 admin 是否有查看 p_w_picpath 的權限 

upload-ueditor-p_w_picpath-20160410-1460244059

權限判定通過,Glance 將 p_w_picpath 列表發給 admin。 

Troubleshoot

OpenStack 排查問題的方法主要是通過日誌。 每個 Service 都有自己的日誌文件。 

Keystone 主要有兩個日誌: keystone.log 和 keystone_access.log 保存在 /var/log/apache2/ 目錄裏。 

devstack 的 screen 窗口已經幫我們打開了這兩個日誌。 可以直接查看: 

upload-ueditor-p_w_picpath-20160410-1460244060

如果需要得到最詳細的日誌信息,可以在 /etc/keystone/keystone.conf 中打開 debug 選項 

upload-ueditor-p_w_picpath-20160410-1460244060

在非 devstack 安裝中,日誌可能在 /var/log/keystone/ 目錄裏。


理解 Glance 

upload-ueditor-p_w_picpath-20160412-1460472066

OpenStack 由 Glance 提供 Image 服務。

理解 Image

要理解 Image Service 先得搞清楚什麼是 Image 以及爲什麼要用 Image? 

在傳統 IT 環境下,安裝一個系統是要麼從安裝 CD 從頭安裝,要麼用 Ghost 等克隆工具恢復。這兩種方式有如下幾個問題: 

1. 如果要安裝的系統多了效率就很低

2. 時間長,工作量大

3. 安裝完還要進行手工配置,比如安裝其他的軟件,設置 IP 等

4. 備份和恢復系統不靈活

雲環境下需要更高效的解決方案,這就是 Image。 Image 是一個模板,裏面包含了基本的操作系統和其他的軟件。 

舉例來說,有家公司需要爲每位員工配置一套辦公用的系統,一般需要一個 Win7 系統再加 MS office 軟件。 OpenStack 是這麼玩的: 

1. 先手工安裝好這麼一個虛機

2. 然後對虛機執行 snapshot,這樣就得到了一個 p_w_picpath

3. 當有新員工入職需要辦公環境時,立馬啓動一個或多個該 p_w_picpath 的 instance(虛機)就可以了

在這個過程中,第 1 步跟傳統方式類似,需要手工操作和一定時間。
但第 2、3 步非常快,全自動化,一般都是秒級別。 

而且 2、3 步可以循環做。 比如公司新上了一套 OA 系統,每個員工的 PC 上都得有客戶端軟件。 那麼可以在某個員工的虛機中手工安裝好 OA 客戶端,然後執行 snapshot ,得到新的 p_w_picpath,以後就直接使用新 p_w_picpath 創建虛機就可以了。 

另外,snapshot 還有備份的作用,能夠非常方便的恢復系統。 

理解 Image Service

Image Service 的功能是管理 Image,讓用戶能夠發現、獲取和保存 Image。 

在 OpenStack 中,提供 Image Service 的是 Glance,其具體功能如下: 

1. 提供 REST API 讓用戶能夠查詢和獲取 p_w_picpath 的元數據和 p_w_picpath 本身

2. 支持多種方式存儲 p_w_picpath,包括普通的文件系統、Swift、Amazon S3 等

3. 對 Instance 執行 Snapshot 創建新的 p_w_picpath

Glance 架構

upload-ueditor-p_w_picpath-20160412-1460472066

上面是 Glance 的架構圖 

glance-api

glance-api 是系統後臺運行的服務進程。 對外提供 REST API,響應 p_w_picpath 查詢、獲取和存儲的調用。 

glance-api 不會真正處理請求。 如果是與 p_w_picpath metadata(元數據)相關的操作,glance-api 會把請求轉發給 glance-registry; 如果是與 p_w_picpath 自身存取相關的操作,glance-api 會把請求轉發給該 p_w_picpath 的 store backend。 

在控制節點上可以查看 glance-api 進程 

upload-ueditor-p_w_picpath-20160412-1460472067

glance-registry

glance-registry 是系統後臺運行的服務進程。 負責處理和存取 p_w_picpath 的 metadata,例如 p_w_picpath 的大小和類型。 

在控制節點上可以查看 glance-registry 進程 

upload-ueditor-p_w_picpath-20160412-1460472067

Glance 支持多種格式的 p_w_picpath,包括 

upload-ueditor-p_w_picpath-20160412-1460472067

Database

Image 的 metadata 會保持到 database 中,默認是 MySQL。 在控制節點上可以查看 glance 的 database 信息 

upload-ueditor-p_w_picpath-20160412-1460472068

Store backend

Glance 自己並不存儲 p_w_picpath。 真正的 p_w_picpath 是存放在 backend 中的。 Glance 支持多種 backend,包括 

1. A directory on a local file system(這是默認配置)

2. GridFS

3.  Ceph RBD

4. Amazon S3

5. Sheepdog

6. OpenStack Block Storage (Cinder)

7. OpenStack Object Storage (Swift)

8. VMware ESX

具體使用哪種 backend,是在 /etc/glance/glance-api.conf 中配置的在我們的 devstack 環境中,p_w_picpath 存放在控制節點本地目錄 /opt/stack/data/glance/p_w_picpaths/ 中 

upload-ueditor-p_w_picpath-20160412-1460472068

其他 backend 的配置可參考http://docs.openstack.org/liberty/config-reference/content/configuring-p_w_picpath-service-backends.html 

查看目前已經存在的 p_w_picpath 

upload-ueditor-p_w_picpath-20160412-1460472068

查看保存目錄 

upload-ueditor-p_w_picpath-20160412-1460472069

每個 p_w_picpath 在目錄下都對應有一個文件,文件以 p_w_picpath 的 ID 命名。


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