一、Keystone元件概述
部署openstack元件時,需先行安裝認證服務(keystone),而認證服務是使用Apache執行的,安裝完成後才可以建立、管理賬號,然後安裝映象服務(glance)、計算服務(nova)、網路服務(neutron) 其中計算服務和網路服務分為管理端和客戶端,所以需要在openstack的管理端安裝計算服務和網路服務的管理端,在建立虛擬機器的node節點上安裝計算服務和網路服務的客戶端,最後安裝dashboard服務,openstack各種元件的API都是通過apache執行的; openstack的管理端負責建立虛擬機器過程的排程 通過openstack管理端建立虛擬機器的相關資料最終都會記錄到mysql(mariadb)中;node節點沒有許可權往資料庫中寫資料,只有控制端有許可權,並且node節點與控制端通訊是通過rabbitmq間接通訊,node節點會監聽rabbitmq,控制端也會監聽rabbitmq,控制端把建立虛擬機器的指令傳送到rabbitmq,由監聽rabbitmq指定佇列的node節點接收訊息並建立虛擬機器;
二、Keystone元件部署
在完成OpenStack環境配置的基礎上進行Keystone元件的部署
2.1 建立資料庫例項和資料庫使用者
[ root@ct ~]
MariaDB [ ( none) ] > create database keystone;
MariaDB [ ( none) ] > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone' @'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS' ;
MariaDB [ ( none) ] > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone' @'%' IDENTIFIED BY 'KEYSTONE_DBPASS' ;
MariaDB [ ( none) ] > flush privileges;
MariaDB [ ( none) ] > exit
2.2 安裝keystone、httpd、mod_wsgi
[ root@ct ~]
[ root@ct ~]
[ root@ct ~]
[ root@ct ~]
[ root@ct ~]
2.3 初始化認證服務資料庫
[ root@ct ~]
2.4 初始化fernet 金鑰儲存庫
以下命令會生成兩個金鑰,生成的金鑰放於/etc/keystone/目錄下,用於加密資料
[ root@ct keystone]
[ root@ct keystone]
2.5 配置bootstrap身份認證服務
[ root@ct ~]
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne
此步驟是初始化openstack,會把openstack的admin使用者的資訊寫入到mysql的user表中,以及url等其他資訊寫入到mysql的相關表中; #admin-url是管理網(如公有云內部openstack管理網路),用於管理虛擬機器的擴容或刪除;如果共有網路和管理網是一個網路,則當業務量大時,會造成無法通過openstack的控制端擴容虛擬機器,所以需要一個管理網; internal-url是內部網路,進行資料傳輸,如虛擬機器訪問儲存和資料庫、zookeeper等中介軟體,這個網路是不能被外網訪問的,只能用於企業內部訪問 public-url是共有網路,可以給使用者訪問的(如公有云) #但是此環境沒有這些網路,則公用同一個網路 5000埠是keystone提供認證的埠 需要在haproxy伺服器上新增一條listen 各種網路的url需要指定controler節點的域名,一般是haproxy的vip的域名(高可用模式)
2.6 配置Apache HTTP伺服器
[ root@ct ~]
2.7 建立配置檔案
安裝完mod_wsgi包後,會生成 wsgi-keystone.conf 這個檔案,檔案中配置了虛擬主機及監聽了5000埠,mod_wsgi就是python的閘道器
[ root@ct ~]
2.8 開啟服務
[ root@ct conf.d]
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[ root@ct conf.d]
2.9 配置管理員賬戶的環境變數
這些環境變數用於建立角色和專案使用,但是建立角色和專案需要有認證資訊,所以通過環境變數宣告使用者名稱和密碼等認證資訊,欺騙openstack已經登入且通過認證,這樣就可以建立專案和角色;也就是把admin使用者的驗證資訊通過宣告環境變數的方式傳遞給openstack進行驗證,實現針對openstack的非互動式操作
[ root@ct ~]
export OS_USERNAME= admin
export OS_PASSWORD= ADMIN_PASS
export OS_PROJECT_NAME= admin
export OS_USER_DOMAIN_NAME= Default
export OS_PROJECT_DOMAIN_NAME= Default
export OS_AUTH_URL= http://ct:5000/v3
export OS_IDENTITY_API_VERSION= 3
export OS_IMAGE_API_VERSION= 2
EOF
[ root@ct ~]
三、建立OpenStack 域、專案、使用者和角色
3.1 檢視user列表
[ root@ct ~]
3.2 建立一個專案
建立在指定的domain(域)中,指定描述資訊,project名稱為service(可使用openstack domain list 查詢)
[ root@ct ~]
3.3 建立角色(可使用openstack role list檢視)
[ root@ct ~]
3.4 檢視openstack 角色列表
[ root@ct ~]
admin為管理員; member為 租戶; user為使用者
3.5 檢視是否可以不指定密碼就可以獲取到token資訊(驗證認證服務)
[ root@ct ~]
四、小結
Keystone 元件是作為OpenStack 叢集中統一認證、授權的模組,其核心功能就是針對於User(使用者)、Tenant(租戶)、Role(角色)、Token(令牌/憑證)的控制(手工編譯部署即圍繞此功能展開的) User :使用 openstack 的使用者。 Tenant :租戶,可以理解為一個人、專案或者組織擁有的資源的合集。在一個租戶中可以擁有很多個使用者,這些使用者可以根據許可權的劃分使用租戶中的資源。 Role :角色,用於分配操作的許可權。角色可以被指定給使用者,使得該使用者獲得角色對應的操作許可權。 Token :指的是一串位元值或者字串,用來作為訪問資源的記號。Token 中含有可訪問資源的範圍和有效時間,token 是使用者的一種憑證,需要使用正確的使用者名稱和密碼向 Keystone 服務申請才能得到 token。 使用手動部署的模式搭建OpenStack的思路:
分模組部署 部署keystone模組的基礎環境(下載依賴包、元件包、第三方工具/外掛) 建立、開啟此模組的功能(以keystone為例,建立並初始化認證資料庫、修改配置檔案、初始化金鑰-fernet格式、配置身份認證服務) 驗證