最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

openstack云計(jì)算keystone架構(gòu)源碼分析

 更新時(shí)間:2022年04月20日 10:55:38   作者:Jeff的技術(shù)棧  
這篇文章主要為大家介紹了openstack云計(jì)算keystone架構(gòu)源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

keystone架構(gòu)

Keystone API

Keystone API與Openstack其他服務(wù)的API類(lèi)似,也是基于ReSTFul HTTP實(shí)現(xiàn)的。

Keystone API劃分為Admin API和Public API:

  • Public API不僅實(shí)現(xiàn)獲取版本以及相應(yīng)擴(kuò)展信息的操作,同時(shí)包括獲取Token以及Token租戶(hù)信息的操作;
  • Admin API主要提供服務(wù)開(kāi)發(fā)者使用,不僅可以完成Public API的操作,同時(shí)對(duì)User、Tenant、Role和Service Endpoint進(jìn)行管理操作。

Router

Keystone Router主要實(shí)現(xiàn)上層API和底層服務(wù)的映射和轉(zhuǎn)換功能,包括四種Router類(lèi)型。

(1) AdminRouter負(fù)責(zé)將Admin API請(qǐng)求映射為相應(yīng)的行為操作并轉(zhuǎn)發(fā)至底層相應(yīng)的服務(wù)執(zhí)行;

(2) PublicRouter與AdminRouter類(lèi)似;

(3) PublicVersionRouter對(duì)系統(tǒng)版本的請(qǐng)求API進(jìn)行映射操作;

(4) AdminVersionRouter與PublicVersionRouter類(lèi)似。

Services

Keystone Service接收上層不同Router發(fā)來(lái)的操作請(qǐng)求,并根據(jù)不同后端驅(qū)動(dòng)完成相應(yīng)操作,主要包括四種類(lèi)型;

(1) Identity Service

Identity Service提供關(guān)于用戶(hù)和用戶(hù)組的授權(quán)認(rèn)證及相關(guān)數(shù)據(jù)。

Keystone-10.0.0支持ldap.core.Identity,Sql.Identity兩種后端驅(qū)動(dòng),系統(tǒng)默認(rèn)的是Sql.Identity;

Users:

用戶(hù)這一概念在openstack中實(shí)際上是用來(lái)標(biāo)識(shí)一個(gè)使用者(an individual API consumer)

一個(gè)用戶(hù)必須被一個(gè)具體的domain擁有

所有的用戶(hù)名不是全局唯一的,在同一個(gè)domain中用戶(hù)名才唯一

Groups:

用戶(hù)組是一個(gè)包含了一系列用戶(hù)的容器,一個(gè)group必須被一個(gè)具體的domain擁有

所有的組名不是全局唯一的,在同一domain種組名才唯一

(2) Resource Service

Resouse服務(wù)提供關(guān)于projects和domains的數(shù)據(jù)

projects

Projects(在v2.0中稱(chēng)之為T(mén)enants)在openstack中project代表資源的結(jié)合

一個(gè)project必須被一個(gè)具體的domain所擁有

所有的project都不是全局唯一的,僅僅在一個(gè)domain中project唯一

新建一個(gè)project沒(méi)有指定domain,它將被添加到默認(rèn)的domain中即default

Domains

Domains是一個(gè)更高級(jí)別的包含n個(gè)projects-users-groups的容器。
默認(rèn)的Domains名為Default

在v3版本中的唯一性概念

Domain名,在所有的domains中全局唯一

Role名.在所有的domains中全局唯一

User名,僅僅在它自己所在的domain中唯一

Project名,僅僅在它自己所在的domain中唯一

Group名,僅僅在它自己所在的domain中唯一

基于這些容器結(jié)構(gòu),domains代表了openstack資源的管理方式,只要某一assignment(project-user-role)被授予權(quán)限,一個(gè)domain中的用戶(hù)就可以訪問(wèn)另外一個(gè)domain中的資源。

(3) Assignment Service

Assignment Service提供role及role assignments的數(shù)據(jù)

Roles

role角色標(biāo)識(shí)了一個(gè)用戶(hù)可以獲得的權(quán)限級(jí)別

可以在domain或project級(jí)別授予role。

可以分配給單個(gè)用戶(hù)或組級(jí)別role。

role名稱(chēng)是全局唯一的。

Role Assignments

A 3-tuple that has a Role, a Resource and an Identity.

Resource指的是project

Identity指的是user

Role指的是role即project-user-role

(4) Token Service

Token Service提供認(rèn)證和管理令牌token的功能,用戶(hù)的credentials認(rèn)證通過(guò)后就得到token

Keystone-10.0.0對(duì)于Token Service支持Kvs.Token,Memcache.Token,

Memcache_pool.Token,Sql.Token四種后端驅(qū)動(dòng),系統(tǒng)默認(rèn)的是kvs.Token

(5) Catalog Service

Catalog Service提供service和Endpoint相關(guān)的管理操作(service即openstack所有服務(wù),endpont即訪問(wèn)每個(gè)服務(wù)的url)

keystone-10.0.0對(duì)Catalog Service支持兩種后端驅(qū)動(dòng):Sql.Catalog、Templated.Catalog兩種后端驅(qū)動(dòng),系統(tǒng)默認(rèn)的是templated.Catalog;

(6) Policy ServicePolicy Service

提供一個(gè)基于規(guī)則的授權(quán)驅(qū)動(dòng)和規(guī)則管理

keystone-10.0.0對(duì)Policy Service支持兩種后端驅(qū)動(dòng):rules.Policy,sql.Policy,默認(rèn)使用sql.Policy

Backend Driver

Backend Driver具有多種類(lèi)型,不同的Service選擇不同的Backend Driver。

官方https://docs.openstack.org/keystone/latest/#groups

keystone管理這些概念的方法

組件名稱(chēng)管理對(duì)象生成方法保存方式配置項(xiàng)
identityuser,以及 user group-sql, ldap.core

[identity]

driver = keystone.identity.backends.[sql|ldap.core].Identity

token用戶(hù)的臨時(shí) tokenpki,pkiz,uuidsql, kvs,memcached

[token]

driver = keystone.token.persistence.backends.[sql|kvs|memcache|memcache_pool].Token

provider=keystone.token.providers.[pkiz|pki|uuid].Provider
credentialEC2 credential sql

[credential]

driver = keystone.credential.backends.sql.Credential

provider=keystone.token.providers.[core|fernet].Provider

catalogregion,service,endpoint sql|templated

[catalog]

driver = keystone.catalog.backends.[sql|templated].Catalog

assignmenttenant,domain,role 以及它們與 user 之間的關(guān)系external, password, tokensql

[assignment]

methods = external, password, token

password = keystone.auth.plugins.password.Password

trusttrustsql 

[trust]

driver = keystone.trust.backends.[sql].Trust

policyKeystone service 的用戶(hù)鑒權(quán)策略 ruels|sql

[default]

policy_file = policy.json

[policy]

driver = keystone.policy.backends.[ruels|sql].Policy

keystone-10.0.0代碼結(jié)構(gòu)展示

keystone-manage 是個(gè) CLI 工具,它通過(guò)和 Keystone service 交互來(lái)做一些無(wú)法使用 Keystone REST API 來(lái)進(jìn)行的操作,包括:

db_sync: Sync the database.

db_version: Print the current migration version of the database.

mapping_purge: Purge the identity mapping table.

pki_setup: Initialize the certificates used to sign tokens.

saml_idp_metadata: Generate identity provider metadata.

ssl_setup: Generate certificates for SSL.

token_flush: Purge expired tokens.

每個(gè)Keystone 組件,比如 catalog, token 等都有一個(gè)單獨(dú)的目錄。
每個(gè)組件目錄中:

routes.py 定義了該組件的 routes (routes 見(jiàn) 探索 OpenStack 之(11):cinder-api Service 啟動(dòng)過(guò)程分析 以及 WSGI / Paste deploy / Router 等介紹)。

其中identity 和 assignment 分別定義了 admin 和 public 使用的 routes,分別供 admin service 和 public service 使用。

controller.py 文件定義了該組件所管理的對(duì)象,比如 assignment 的controller.py 文件定義了 Tenant、Role、Project 等類(lèi)。

core.py 定了了兩個(gè)類(lèi) Manager 和 Driver。Manager 類(lèi)對(duì)外提供該組件操作具體對(duì)象的方法入口;

Driver 類(lèi)定義了該組件需要其Driver實(shí)現(xiàn)類(lèi)所提供的接口。
backend 目錄下的每個(gè)文件是每個(gè)具體driver 的實(shí)現(xiàn)

下載keystone-10.0.0演示https://www.openstack.org/

keystone服務(wù)啟動(dòng)

Keystone is an HTTP front-end to several services. Like other OpenStack applications, this is done using python WSGI interfaces and applications are configured together usingPaste. The application’s HTTP endpoints are made up of pipelines of WSGI middleware。。。

詳見(jiàn):https://docs.openstack.org/keystone/latest/

/usr/bin/keystone-all 會(huì)啟動(dòng) keystone 的兩個(gè)service:admin and main,它們分別對(duì)應(yīng) /etc/keystone/keystone-paste.ini文件中的兩個(gè)composite:

可見(jiàn) admin service 提供給administrator 使用;main 提供給 public 使用。

它們分別都有 V2.0 和 V3 版本,只是目前的 keystone Cli 只支持 V2.0.比較下 admin 和 public:

名稱(chēng)middlewaresfactory功能區(qū)別
admin比 public 多s3_extensionkeystone.service:public_app_factory

從 factory 函數(shù)來(lái)看, admin service 比 public service 多了identity 管理功能, 以及 assignment 的admin/public 區(qū)別:

1. admin 多了對(duì) GET/users/{user_id} 的支持,多了get_all_projects,get_project,get_user_roles 等功能

2. keystone 對(duì) admin service 提供 admin extensions, 比如OS-KSADM等;對(duì) public service 提供 public extensions。

簡(jiǎn)單總結(jié)一下, public service 主要提供了身份驗(yàn)證和目錄服務(wù)功能;admin service 增加了 tenant、user、role、user group 的管理功能。

public

sizelimit url_normalize build_auth_context token_auth admin_token_auth xml_body_v2

json_body ec2_extension user_crud_extension

keystone.service:admin_app_factory

/usr/bin/keystone-all 會(huì)啟動(dòng) admin 和 public 兩個(gè) service,分別綁定不同 host 和 端口。

默認(rèn)的話(huà),綁定host 都是 0.0.0.0;

admin 的綁定端口是 35357 (admin_port), public 的綁定端口是 5000 (public_port)。

因此,給 admin 使用的OS_AUTH_URL 為 http://controller:35357/v2.0,

給 public 使用的OS_AUTH_URL=http://controller:5000/v2.0

keystone詳細(xì)說(shuō)明

WSGI server的父進(jìn)程(50511號(hào)進(jìn)程)開(kāi)啟兩個(gè)socket去分別監(jiān)聽(tīng)本環(huán)境的5000和35357號(hào)端口,
其中5000號(hào)端口是為main的WSGI server提供的,35357號(hào)端口為admin的WSGI server提供的。

即WSGI server的父進(jìn)程接收到5000號(hào)端口的HTTP請(qǐng)求時(shí),則將把該請(qǐng)求轉(zhuǎn)發(fā)給為main開(kāi)啟的WSGI server去處理,

而WSGI server的父進(jìn)程接收到35357號(hào)端口的HTTP請(qǐng)求時(shí),則將把該請(qǐng)求轉(zhuǎn)發(fā)給為admin開(kāi)啟的WSGI server去處理。

vim /etc/keystone/keystone-paste.ini

日志

2016-09-14 11:53:01.037 12698 INFO keystone.common.wsgi [req-07b28d5b-084c-467e-b45a-a4c8a52b7e96
9ff041112e454cca9b54bf117a80ca29 15426931fe4746d08736c5e5c1da6b1c 
- 6e495643fb014e5e8a3992c69d80d234 6e495643fb014e5e8a3992c69d80d234] 
GET http://controller02:35357/v3/auth/tokens

(1) type = composite

這個(gè)類(lèi)型的section會(huì)把URL請(qǐng)求分發(fā)到對(duì)應(yīng)的Application,use表明具體的分發(fā)方式,比如”egg:Paste#urlmap”表示使用Paste包中的urlmap模塊,這個(gè)section里的其他形式如”key = value”的行是使用urlmap進(jìn)行分發(fā)時(shí)的參數(shù)。

(2) type = app

一個(gè)app就是一個(gè)具體的WSGI Application。

(3) type = filter-app

接收一個(gè)請(qǐng)求后,會(huì)首先調(diào)用filter-app中的use所指定的app進(jìn)行過(guò)濾,如果這個(gè)請(qǐng)求沒(méi)有被過(guò)濾,就會(huì)轉(zhuǎn)發(fā)到next所指定的app進(jìn)行下一步的處理。

(4) type = filter

與filter-app類(lèi)型的區(qū)別只是沒(méi)有next。

(5) type = pipeline

pipeline由一系列filter組成。

這個(gè)filter鏈條的末尾是一個(gè)app。pipeline類(lèi)型主要是對(duì)filter-app進(jìn)行了簡(jiǎn)化,否則,如果多個(gè)filter,就需要多個(gè)filter-app,然后使用next進(jìn)行連接。OpenStack的paste的deploy的配置文件

主要采用的pipeline的方式。

因?yàn)閡rl為http://192.168.118.1:5000/v2.0/tokens,因?yàn)榛緐rl的后面接的信息為/v2.0,所以將到public_api的section作相應(yīng)操作。

以上就是openstack云計(jì)算keystone架構(gòu)源碼分析的詳細(xì)內(nèi)容,更多關(guān)于openstack云計(jì)算keystone架構(gòu)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解OpenStack之服務(wù)端口號(hào)

    詳解OpenStack之服務(wù)端口號(hào)

    這篇文章主要介紹了詳解OpenStack之服務(wù)端口號(hào),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • java.util.ConcurrentModificationException 解決方法

    java.util.ConcurrentModificationException 解決方法

    這篇文章主要介紹了 java.util.ConcurrentModificationException 解決方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • CentOS系統(tǒng)中一鍵安裝Openstack圖文教程

    CentOS系統(tǒng)中一鍵安裝Openstack圖文教程

    最近在學(xué)習(xí)Openstack,一直想試試安裝一下,可是參考了很多資料,并不如人意。由于一直用的Linux版本為CentOS,大部分Openstack安裝都要求在Ubuntu上進(jìn)行。本文介紹的是在CentOS系統(tǒng)中一鍵安裝Openstack的方法,有需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2016-10-10
  • CentOS 6.4下安裝部署OpenStack云計(jì)算平臺(tái)的方法

    CentOS 6.4下安裝部署OpenStack云計(jì)算平臺(tái)的方法

    現(xiàn)在好多公司都使用Openstack,所以也想著學(xué)習(xí)下用OpenStack云計(jì)算平臺(tái),這篇文章給加詳細(xì)介紹了CentOS 6.4下安裝部署OpenStack云計(jì)算平臺(tái)的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-10-10
  • OpenStack手動(dòng)分布式部署Keystone(Queens版)

    OpenStack手動(dòng)分布式部署Keystone(Queens版)

    這篇文章主要介紹了OpenStack手動(dòng)分布式部署Keystone(Queens版),Keystone是OpenStack框架中負(fù)責(zé)管理身份驗(yàn)證服務(wù)訪問(wèn)規(guī)則和服務(wù)令牌功能的組件,需要的朋友可以參考下
    2023-03-03
  • centos下最簡(jiǎn)安裝openstack——使用packstack詳解

    centos下最簡(jiǎn)安裝openstack——使用packstack詳解

    本篇文章主要介紹了centos下最簡(jiǎn)安裝openstack——使用packstack,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • openstack云計(jì)算組件keystone部署及操作使用技巧

    openstack云計(jì)算組件keystone部署及操作使用技巧

    這篇文章主要為大家介紹了openstack云計(jì)算組件keystone部署及操作使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • OpenStack 中的Nova組件詳解

    OpenStack 中的Nova組件詳解

    Nova是OpenStack云中的計(jì)算組織控制器。支持OpenStack云中實(shí)例(instances)生命周期的所有活動(dòng)都由Nova處理。本文給大家介紹OpenStack 中的Nova組件,感興趣的朋友一起看看吧
    2016-11-11
  • 圖文講解OpenStack手動(dòng)分布式部署環(huán)境準(zhǔn)備(Queens版)

    圖文講解OpenStack手動(dòng)分布式部署環(huán)境準(zhǔn)備(Queens版)

    這篇文章主要介紹了圖文講解OpenStack手動(dòng)分布式部署環(huán)境準(zhǔn)備(Queens版),OpenStack用于部署公有云、私有云,并實(shí)現(xiàn)對(duì)云項(xiàng)目管理,需要的朋友可以參考下
    2023-03-03
  • 詳解VMware接入Openstack—使用Openstack創(chuàng)建vCenter虛擬機(jī)

    詳解VMware接入Openstack—使用Openstack創(chuàng)建vCenter虛擬機(jī)

    本篇文章主要介紹了VMware接入Openstack—使用Openstack創(chuàng)建vCenter虛擬機(jī),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03

最新評(píng)論

锦州市| 华安县| 荣昌县| 龙胜| 山阴县| 旌德县| 滁州市| 西畴县| 隆子县| 睢宁县| 济南市| 安丘市| 曲周县| 霍林郭勒市| 古浪县| 腾冲县| 绵竹市| 宁强县| 华阴市| 宜兰县| 青神县| 鸡东县| 清苑县| 岗巴县| 吴江市| 嘉义县| 诸城市| 噶尔县| 平陆县| 黎平县| 湘潭市| 临汾市| 富源县| 西平县| 明星| 延安市| 本溪市| 铅山县| 岳普湖县| 德惠市| 太仓市|