iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >openstack云计算keystone架构怎么用
  • 466
分享到

openstack云计算keystone架构怎么用

2023-06-30 06:06:14 466人浏览 安东尼
摘要

本篇内容介绍了“openstack云计算keystone架构怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!keystone架构Keys

本篇内容介绍了“openstack云计算keystone架构怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    keystone架构

    openstack云计算keystone架构怎么用

    Keystone api

    Keystone API与Openstack其他服务的API类似,也是基于ReSTFul Http实现的。

    Keystone API划分为Admin API和Public API:

    • Public API不仅实现获取版本以及相应扩展信息的操作,同时包括获取Token以及Token租户信息的操作;

    • Admin API主要提供服务开发者使用,不仅可以完成Public API的操作,同时对User、Tenant、Role和Service Endpoint进行管理操作。

    Router

    Keystone Router主要实现上层API和底层服务的映射和转换功能,包括四种Router类型。

    (1) AdminRouter负责将Admin API请求映射为相应的行为操作并转发至底层相应的服务执行;

    (2) PublicRouter与AdminRouter类似;

    (3) PublicVersionRouter对系统版本的请求API进行映射操作;

    (4) AdminVersionRouter与PublicVersionRouter类似。

    Services

    Keystone Service接收上层不同Router发来的操作请求,并根据不同后端驱动完成相应操作,主要包括四种类型;

    (1) Identity Service

    Identity Service提供关于用户和用户组的授权认证及相关数据。

    Keystone-10.0.0支持ldap.core.Identity,sql.Identity两种后端驱动,系统默认的是Sql.Identity;

    Users:

    用户这一概念在openstack中实际上是用来标识一个使用者(an individual API consumer)

    一个用户必须被一个具体的domain拥有

    所有的用户名不是全局唯一的,在同一个domain中用户名才唯一

    Groups:

    用户组是一个包含了一系列用户的容器,一个group必须被一个具体的domain拥有

    所有的组名不是全局唯一的,在同一domain种组名才唯一

    (2) Resource Service

    Resouse服务提供关于projects和domains的数据

    projects

    Projects(在v2.0中称之为Tenants)在openstack中project代表资源的结合

    一个project必须被一个具体的domain所拥有

    所有的project都不是全局唯一的,仅仅在一个domain中project唯一

    新建一个project没有指定domain,它将被添加到默认的domain中即default

    Domains

    Domains是一个更高级别的包含n个projects-users-groups的容器。
    默认的Domains名为Default

    在v3版本中的唯一性概念

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

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

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

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

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

    基于这些容器结构,domains代表了openstack资源的管理方式,只要某一assignment(project-user-role)被授予权限,一个domain中的用户就可以访问另外一个domain中的资源。

    (3) Assignment Service

    Assignment Service提供role及role assignments的数据

    Roles

    role角色标识了一个用户可以获得的权限级别

    可以在domain或project级别授予role。

    可以分配给单个用户或组级别role。

    role名称是全局唯一的。

    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提供认证和管理令牌token的功能,用户的credentials认证通过后就得到token

    Keystone-10.0.0对于Token Service支持Kvs.Token,Memcache.Token,

    Memcache_pool.Token,Sql.Token四种后端驱动,系统默认的是kvs.Token

    (5) Catalog Service

    Catalog Service提供service和Endpoint相关的管理操作(service即openstack所有服务,endpont即访问每个服务的url)

    keystone-10.0.0对Catalog Service支持两种后端驱动:Sql.Catalog、Templated.Catalog两种后端驱动,系统默认的是templated.Catalog;

    (6) Policy ServicePolicy Service

    提供一个基于规则的授权驱动和规则管理

    keystone-10.0.0对Policy Service支持两种后端驱动:rules.Policy,sql.Policy,默认使用sql.Policy

    Backend Driver

    Backend Driver具有多种类型,不同的Service选择不同的Backend Driver。

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

    keystone管理这些概念的方法

    组件名称管理对象生成方法保存方式配置项
    identityuser,以及 user group-sql, ldap.core

    [identity]

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

    token用户的临时 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 之间的关系external, passWord, tokensql

    [assignment]

    methods = external, password, token

    password = keystone.auth.plugins.password.Password

    trusttrustsql 

    [trust]

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

    policyKeystone service 的用户鉴权策略 ruels|sql

    [default]

    policy_file = policy.JSON

    [policy]

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

    keystone-10.0.0代码结构展示

    keystone-manage 是个 CLI 工具,它通过和 Keystone service 交互来做一些无法使用 Keystone REST API 来进行的操作,包括:

    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.

    每个Keystone 组件,比如 catalog, token 等都有一个单独的目录。
    每个组件目录中:

    routes.py 定义了该组件的 routes (routes 见 探索 OpenStack 之(11):cinder-api Service 启动过程分析 以及 WSGI / Paste deploy / Router 等介绍)。

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

    controller.py 文件定义了该组件所管理的对象,比如 assignment 的controller.py 文件定义了 Tenant、Role、Project 等类。

    core.py 定了了两个类 Manager 和 Driver。Manager 类对外提供该组件操作具体对象的方法入口;

    Driver 类定义了该组件需要其Driver实现类所提供的接口。
    backend 目录下的每个文件是每个具体driver 的实现

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

    keystone服务启动

    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。。。

    详见:https://docs.openstack.org/keystone/latest/

    /usr/bin/keystone-all 会启动 keystone 的两个service:admin and main,它们分别对应 /etc/keystone/keystone-paste.ini文件中的两个composite:

    openstack云计算keystone架构怎么用

    可见 admin service 提供给administrator 使用;main 提供给 public 使用。

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

    名称middlewaresfactory功能区别
    admin比 public 多s3_extensionkeystone.service:public_app_factory

    从 factory 函数来看, admin service 比 public service 多了identity 管理功能, 以及 assignment 的admin/public 区别:

    admin 多了对 GET/users/{user_id} 的支持,多了get_all_projects,get_project,get_user_roles 等功能

    keystone 对 admin service 提供 admin extensions, 比如OS-KSADM等;对 public service 提供 public extensions。

    简单总结一下, public service 主要提供了身份验证和目录服务功能;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 会启动 admin 和 public 两个 service,分别绑定不同 host 和 端口。

    默认的话,绑定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详细说明

    WSGI server的父进程(50511号进程)开启两个Socket去分别监听本环境的5000和35357号端口,
    其中5000号端口是为main的WSGI server提供的,35357号端口为admin的WSGI server提供的。

    即WSGI server的父进程接收到5000号端口的HTTP请求时,则将把该请求转发给为main开启的WSGI server去处理,

    而WSGI server的父进程接收到35357号端口的HTTP请求时,则将把该请求转发给为admin开启的WSGI server去处理。

    vim /etc/keystone/keystone-paste.ini

    openstack云计算keystone架构怎么用

    日志

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

    (1) type = composite

    这个类型的section会把URL请求分发到对应的Application,use表明具体的分发方式,比如”egg:Paste#urlmap”表示使用Paste包中的urlmap模块,这个section里的其他形式如”key = value”的行是使用urlmap进行分发时的参数。

    (2) type = app

    一个app就是一个具体的WSGI Application。

    (3) type = filter-app

    接收一个请求后,会首先调用filter-app中的use所指定的app进行过滤,如果这个请求没有被过滤,就会转发到next所指定的app进行下一步的处理。

    (4) type = filter

    与filter-app类型的区别只是没有next。

    (5) type = pipeline

    pipeline由一系列filter组成。

    这个filter链条的末尾是一个app。pipeline类型主要是对filter-app进行了简化,否则,如果多个filter,就需要多个filter-app,然后使用next进行连接。OpenStack的paste的deploy的配置文件

    主要采用的pipeline的方式。

    因为url为http://192.168.118.1:5000/v2.0/tokens,因为基本url的后面接的信息为/v2.0,所以将到public_api的section作相应操作。

    “openstack云计算keystone架构怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: openstack云计算keystone架构怎么用

    本文链接: https://www.lsjlt.com/news/327620.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • openstack云计算keystone架构怎么用
      本篇内容介绍了“openstack云计算keystone架构怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!keystone架构Keys...
      99+
      2023-06-30
    • openstack云计算keystone架构源码分析
      目录keystone架构Keystone APIRouterServices(1) Identity Service(2) Resource Service(3) Assignmen...
      99+
      2024-04-02
    • openstack云计算组件keystone部署及操作使用技巧
      目录一 前言二 版本信息三 部署keystonestep 1:准备阶段step 2:部署mariadbstep 3:部署keystonestep 4:配置web server整合ke...
      99+
      2024-04-02
    • openstack云计算keystone组件工作流程及服务关系
      目录一 什么是keystone二 为何要有keystone三 keystone的功能四 keystone概念详解第一部分endpoint举例V3新增的概念:第二部分第三部分五 key...
      99+
      2024-04-02
    • openstack云计算cinder架构及各组件功能是什么
      这篇文章主要介绍“openstack云计算cinder架构及各组件功能是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“openstack云计算cinder架构及各组件功能是什么”文章能帮助大家解...
      99+
      2023-06-30
    • openstack云计算keystone组件工作流程及服务关系是什么
      这篇文章主要介绍“openstack云计算keystone组件工作流程及服务关系是什么”,在日常操作中,相信很多人在openstack云计算keystone组件工作流程及服务关系是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
      99+
      2023-06-30
    • openstack云计算cinder架构及各组件功能介绍
      目录一 cinder各组件1、cinder主要组成:2、cinder各组件功能:3、nova与cinder的工作原理类似二 cinder架构图三 RPC机制AMQP 模型有四个重要的...
      99+
      2024-04-02
    • OpenStack架构设计方法是什么
      本篇内容介绍了“OpenStack架构设计方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!OpenStack 是开源云计算平台,支持...
      99+
      2023-06-04
    • openstack的架构设计原则是什么
      OpenStack的架构设计原则包括以下几个方面: 模块化和可扩展性:OpenStack的架构采用模块化设计,将不同功能的组件划...
      99+
      2023-10-25
      openstack
    • openstack架构的用法是什么
      OpenStack是一个开源的云计算平台,其架构包括多个组件,用于构建和管理私有云、公有云和混合云环境。OpenStack的主要用途...
      99+
      2024-04-02
    • 亚马逊云计算架构
      亚马逊的IaaS、PaaS和SaaS服务之间可以通过API和标准接口进行交互。亚马逊提供了多种部署模式,如公共云、私有云、混合云等,可以根据具体业务需求选择合适的模式。 亚马逊的云计算基础设施服务包括存储、计算、网络、安全、容器服务等,为...
      99+
      2023-10-27
      亚马逊 架构
    • 云计算openstack框架分类及发展阶段概述
      目录1.1 云计算的发展阶段1.2 云计算的分类1.2.1 什么是云计算1.2.2 按架构设计分类1.2.3 按供给方式分类1.3. openstack 介绍1、什么是 openst...
      99+
      2024-04-02
    • 云服务器ecs计算架构
      云服务器(Cloud Storage)是一种高性能、可扩展的计算架构,旨在为大规模企业和组织提供可扩展的基础设施资源。以下是Cloud Server的计算架构。 数据中心服务器(DC Server):它们是Cloud Storage的主...
      99+
      2023-10-26
      架构 服务器 ecs
    • 云服务器ecs计算架构是什么
      云服务器ECS计算架构通常由四个组件组成: 服务器ECS:负责管理资源的ECS(Engineering Center)。服务器ECS应该能够管理和组织整个云计算资源池,并为用户提供最佳的服务。 资源ECS:管理云服务器的资源,例如计算、...
      99+
      2023-10-26
      架构 服务器 ecs
    • 云计算服务器常用架构有哪些
      云计算服务器常用架构有以下几种:1. 单一服务器架构:使用单个服务器来提供云计算服务,适用于小型规模的应用场景,如个人网站或小型企业...
      99+
      2023-09-21
      云计算服务器 服务器
    • 云服务器ecs计算架构包括什么
      云服务器(Cloud Storage Server,简称ECS)是一种基于云计算的服务器,其主要特点是高度可扩展和可伸缩性。与传统的单块硬件服务器相比,ECS服务器具有以下主要特点: 高度可扩展性:ECS服务器能够在不需要增加服务器数量...
      99+
      2023-10-27
      架构 服务器 ecs
    • 云服务器ecs计算架构包括
      云服务器(Cloud Storage,CSP)是一种云计算服务,它允许用户轻松地存储大量数据并进行快速访问,而无需担心硬件成本。在CSP中,通常有两种类型的计算节点,分别用于处理数据存储和计算。 第一种类型的计算节点称为“存储节点”(St...
      99+
      2023-10-26
      架构 服务器 ecs
    • 使用C++的云计算基础:架构与组件
      答案:c++++ 中的云计算架构包含三个层:iaas(基本资源)、paas(应用程序环境)和 saas(现成应用程序)。组件:计算实例:可伸缩虚拟服务器存储:数据和应用程序文件存储数据库...
      99+
      2024-05-12
      云计算 架构 c++
    • 云服务器ecs计算架构是什么意思
      云服务器ECS计算架构是一种计算架构,它采用分布式计算技术,可以将多个计算节点组成一个计算单元,并根据用户请求将计算指令分配到各自的节点上执行,从而实现高性能计算。它主要分为以下几个部分: 数据存储:每个节点都有自己的存储空间,以及各自...
      99+
      2023-10-27
      架构 服务器 ecs
    • 云服务器ecs计算架构是什么意思啊
      计算资源:包括CPU、内存、存储等硬件资源,以及操作系统、应用程序等软件资源。 存储资源:包括磁盘、网络等存储资源,以及数据库、缓存等对象存储资源。 网络资源:包括互联网连接、网络带宽等网络资源,以及应用程序、数据等网络资源。 应用程序资...
      99+
      2023-10-27
      架构 服务器 ecs
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作