天天看點

openstack實戰部署Keystone認證服務及理論介紹

       openstack實戰部署Keystone認證服務及理論介紹

理論介紹:

1、Keystone介紹:

Keystone是openstack的元件之一,用于為openstack家族中的其他元件成員提供統一的認證服務,包括身份驗證、令牌的發放和校驗、服務清單、使用者權限的定義等等。

2、KeyStone 兩大功能:使用者與認證、服務目錄

使用者與認證:使用者權限與使用者行為跟蹤

服務目錄:提供一個服務目錄,包括所有服務項與相關Api的端點

注意:注冊不能多,也不能少,更不能錯,要是注冊出現問題,可以删除重建立。

2、Keystone使用的名詞:User使用者、project項目、token令牌、role角色(代表一組使用者可以通路的資源權限)、service服務、endpoint端點(每個endpoint有三個通路位址,三個通路位址的權限public公共的、private私有的、admin管理的)

3、keystone子產品:

Token:用來生成和管理token。

Catalog:用來存儲和管理service/endpoint。

Identity:用來管理tenant/user/role和驗證。

Policy:用來管理通路權限。

4、keystone:包括一個指令行接口,可以與keystone API互動已管理keystone和相關服務。

Keystone-all:用于驗證的,面向管理者和使用者的API。

keystone-manage:管理keystone的指令行接口,用于管理與keystone相連接配接的資料庫。

5、openstack老版本Tenant租戶和User使用者:

openstack實戰部署Keystone認證服務及理論介紹

6、keystone基本架構:

openstack實戰部署Keystone認證服務及理論介紹

部署并配置Keystone認證服務

1、建立資料庫:

mysql -u root -p  (進入資料庫)

create database keystone;  (建立keystone庫)

create database glance;  (建立glance庫)

create database nova;  (建立Nova庫)

create database nova_api; (建立Nova_api庫)

create database neutron;  (建立neutron庫)

create database cinder;    (建立cinder庫)

2、授權:

grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';   (給keystone授權)

grant all on keystone.* to 'keystone'@'%' identified by 'keeystone';    (給keystone授權,在任何上面都可以登入)

grant all on glance.* to 'glance'@'%' identified by 'glance';

grant all on glance.* to 'glance'@'localhost' identified by  'glance';

grant all on nova.* to 'nova'@'localhost' identified by 'nova';

grant all on nova.* to 'nova'@'%' identified by 'nova';

grant all on nova_api.* to 'nova'@'localhost' identified by 'nova';

grant all on nova_api.* to 'nova'@'%' identified by 'nova';

grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron';

grant all on neutron.* to 'neutron'@'%' identified by 'neutron';

grant all on cinder.* to 'cinder'@'localhost' identified by 'cinder';

grant all on cinder.* to 'cinder'@'%' identified by 'cinder';

3、檢視建立的資料庫:

show databases;

openstack實戰部署Keystone認證服務及理論介紹

4、配置Keystone,修改Keystone配置檔案:

vim /etc/keystone/keystone.conf

在[database]中修改如下:

connection = mysql+pymysql://keystone:[email protected]/keystone設定資料庫

openstack實戰部署Keystone認證服務及理論介紹

在[memcache]中修改如下:

servers = 192.168.56.11:11211

5、初始化keystone:

su -s /bin/sh -c "keystone-manage db_sync" keystone

注意:初始化keystone,使用的是keystone使用者。

6、檢查keystone是否初始化成功:

mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"

openstack實戰部署Keystone認證服務及理論介紹
openstack實戰部署Keystone認證服務及理論介紹

如果建立失敗,說明資料庫有問題,比如資料庫建立失敗,權限有問題,資料庫連接配接失敗等等。

7、由于使用memcache緩存tokens,上面也在keystone的memcache中添加了配置,需要安裝memcache:

yum -y install memcached python-memcached

8、設定開機自動啟動:

systemctl enable memcached.service

systemctl start memcached.service

9、可以在/etc/sysconfig/memcached 中,檢視memcache配置:

預設:64兆

openstack實戰部署Keystone認證服務及理論介紹

10、可以檢視端口号:

netstat -ntpl  

###可以看到是本地在監聽11211端口,如果其他伺服器通路,則通路失敗,需要修改配置問題。

11、修改memcache配置

 vim /etc/sysconfig/memcached

修改:OPTIONS="-l 192.168.56.11,::1"

openstack實戰部署Keystone認證服務及理論介紹

12、重新開機memecache:

systemctl restart memcached.service

13、需要在keystone配置中,設定令牌的提供者:

vim /etc/keystone/keystone.conf

修改[token]中,如下:

provider = fernet   ###token提供者

driver = memcache   ###token存放的位置

Ps:補充一個小知識,查找keystone的配置。

grep '^[a-z]' /etc/keystone/keystone.conf

connection = mysql+pymysql://keystone:[email protected]/keystone  ###連結資料庫

servers = 192.168.56.11:11211      ###memcache位址

provider = fernet      ####token提供者

driver = memcache     ###token存放位置

openstack實戰部署Keystone認證服務及理論介紹

14、初始化key,主要初始化完,生成證書。

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

預設會在/etc/keystone 下建立一個fernet-keys目錄。

15、初始化的使用者,自動建立使用者、密碼等 (N版才有這個功能)

keystone-manage bootstrap --bootstrap-password admin \

  --bootstrap-admin-url http://192.168.56.11:35357/v3/ \

  --bootstrap-internal-url http://192.168.56.11:35357/v3/ \

  --bootstrap-public-url http://192.168.56.11:5000/v3/ \

  --bootstrap-region-id RegionOne

openstack實戰部署Keystone認證服務及理論介紹

Ps:--bootstrap-admin-url http://192.168.56.11:35357/v3/ \   ###admin的url

  --bootstrap-internal-url http://192.168.56.11:35357/v3/ \   ###内部的url

  --bootstrap-public-url http://192.168.56.11:5000/v3/ \     ###public的url

這是endpoint的三個url

16、配置apache,設定servername

vim /etc/httpd/conf/httpd.conf

修改ServerName 192.168.56.11:80

17、建立軟連接配接:

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

18、啟動Apache服務:

systemctl enable httpd.service

systemctl start httpd.service

驗證端口:

19、隻要使用keystone就要有驗證,keystone提供了兩種驗證方式:1)選項的方式 2)環境變量

  在這裡我們使用環境變量,設定環境變量指令:

export OS_USERNAME=admin   ###使用者名

export OS_PASSWORD=admin   ###密碼

export OS_PROJECT_NAME=admin   ###哪個項目

export OS_USER_DOMAIN_NAME=default   ###預設的域

export OS_PROJECT_DOMAIN_NAME=default  

export OS_AUTH_URL=http://192.168.56.11:35357/v3  ##驗證的url

export OS_IDENTITY_API_VERSION=3            ###端口

openstack實戰部署Keystone認證服務及理論介紹

20、執行指令測試,是否可以連接配接keystone:

openstack user list

openstack實戰部署Keystone認證服務及理論介紹

21、建立service項目(安裝其他服務,需要連接配接keystone,連接配接keystone這些服務和角色屬于哪些項目,)

openstack project create --domain default --description "Server Project" service

openstack實戰部署Keystone認證服務及理論介紹

再檢視一下project有幾個項目:

openstack實戰部署Keystone認證服務及理論介紹

22、建立一個demo項目:(示範使用)

openstack project create --domain default --description "Demo Project" demo

23、建立demo的使用者:

openstack user create --domain default --password-prompt demo

24、建立一個user角色(一個項目有兩種角色admin超級管理者(M版本需要建立,N版不需要建立)和user,這個角色是keystone上的角色)

openstack role create user

25、添加user角色到demo項目和使用者:

openstack role add --project demo --user demo user

Ps: 以上指令意思為:把demo使用者加入到了demo項目,并賦予user角色 

openstack實戰部署Keystone認證服務及理論介紹

26、為了後期友善,也為了不容易出錯,在這裡我建立其餘的使用者并添加到相應的項目中,賦予相應的角色:

 openstack user create --domain default --password-prompt glance

openstack role add --project service --user glance admin

openstack user create  --domain default --password-prompt nova

openstack role add --project service --user nova admin

openstack user create  --domain default --password-prompt neutron

openstack role add --project service --user neutron admin

openstack user create  --domain default --password-prompt cinder

openstack role add --project service --user cinder admin

   删除使用者 、服務、endpoint都一樣使用:

openstack user delete 使用者ID

27、驗證keystone,需要先讀取環境變量,由于安全性的原因,關閉臨時認證指令牌機制,

第一步:把環境變量取消掉:

unset OS_AUTH_URL OS_PASSWORD

第二步:請求認證指令牌:

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 token issue

openstack實戰部署Keystone認證服務及理論介紹

如果密碼錯誤是什麼報錯?說明密碼錯誤。

openstack實戰部署Keystone認證服務及理論介紹

如果擷取到token成功,說明你的keystone安裝成功。

28、建立admin和demo的環境變量腳本:

vim admin-openstack

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL=http://192.168.56.11:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

vim demo-openstack

export OS_PROJECT_NAME=demo

export OS_USERNAME=demo

export OS_PASSWORD=demo

export OS_AUTH_URL=http://192.168.56.11:5000/v3

29、請求令牌(使用source指令)

source admin-openstack

檢視測試結果:

openstack實戰部署Keystone認證服務及理論介紹

繼續閱讀