我的编程空间,编程开发者的网络收藏夹
学习永远不晚

openstack云计算keystone架构怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

openstack云计算keystone架构怎么用

本篇内容介绍了“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架构怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    openstack云计算keystone架构怎么用

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

    下载Word文档

    猜你喜欢

    openstack云计算keystone架构怎么用

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

    openstack云计算keystone组件工作流程及服务关系是什么

    这篇文章主要介绍“openstack云计算keystone组件工作流程及服务关系是什么”,在日常操作中,相信很多人在openstack云计算keystone组件工作流程及服务关系是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
    2023-06-30

    openstack云计算cinder架构及各组件功能是什么

    这篇文章主要介绍“openstack云计算cinder架构及各组件功能是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“openstack云计算cinder架构及各组件功能是什么”文章能帮助大家解
    2023-06-30

    云服务器ecs计算架构是什么

    云服务器ECS计算架构通常由四个组件组成:服务器ECS:负责管理资源的ECS(EngineeringCenter)。服务器ECS应该能够管理和组织整个云计算资源池,并为用户提供最佳的服务。资源ECS:管理云服务器的资源,例如计算、存储和网络等。资源ECS应该能够分配和管理这些资源,以最大限度地提高资源利用率和减少成本。服务ECS:为用户提供服务的ECS,例如应用程序和服务,它们使用云计算
    2023-10-26

    云计算服务器常用架构有哪些

    云计算服务器常用架构有以下几种:1. 单一服务器架构:使用单个服务器来提供云计算服务,适用于小型规模的应用场景,如个人网站或小型企业。2. 集群式架构:使用多台服务器组成集群,通过负载均衡技术将用户请求分配到不同的服务器上进行处理,提高系统
    2023-09-21

    云服务器ecs计算架构包括什么

    云服务器(CloudStorageServer,简称ECS)是一种基于云计算的服务器,其主要特点是高度可扩展和可伸缩性。与传统的单块硬件服务器相比,ECS服务器具有以下主要特点:高度可扩展性:ECS服务器能够在不需要增加服务器数量的情况下增加处理能力,因为它们可以通过使用多台服务器进行并行计算。此外,ECS服务器还可以通过配置来动态地扩大或缩小其规模。高度可伸缩性:ECS服务器可以轻松地进行横向和纵向扩展,以适应不断变化的...
    2023-10-27

    使用C++的云计算基础:架构与组件

    答案:c++++ 中的云计算架构包含三个层:iaas(基本资源)、paas(应用程序环境)和 saas(现成应用程序)。组件:计算实例:可伸缩虚拟服务器存储:数据和应用程序文件存储数据库:结构化数据管理和存储网络:连接计算实例、存储和数据库
    使用C++的云计算基础:架构与组件
    2024-05-12

    云服务器ecs计算架构是什么意思

    云服务器ECS计算架构是一种计算架构,它采用分布式计算技术,可以将多个计算节点组成一个计算单元,并根据用户请求将计算指令分配到各自的节点上执行,从而实现高性能计算。它主要分为以下几个部分:数据存储:每个节点都有自己的存储空间,以及各自的存储目录。存储目录可以包含各种格式的数据,例如文件、数据库、备份数据等。计算能力:云服务器ECS提供了强大的计算能力,可以处理海量数据,如图形处理、分布式计算、数据存储等,从而...
    2023-10-27

    云服务器ecs计算架构包括什么和什么

    ECS服务器:ECS服务器是云服务器的核心,负责处理所有的云服务器请求,并将请求推送到合适的计算节点上。RDS数据库:RDS数据库是云服务器提供的数据存储服务,可以存储和管理用户的数据和应用程序数据。DNS解析器:DNS解析器是负责DNS查询的计算节点,负责将请求映射到正确的云服务器服务器上。负载均衡器:负载均衡器是一种网络管理工具,用于平衡多台云服务器的负载,以提高可靠性和可用性。弹性裸金属:弹...
    2023-10-27

    云服务器ecs计算架构是什么意思呀

    在云服务器ecs中,多台云服务器可以通过互联网相互连接,形成一个大规模的计算集群,从而为用户提供高效的计算服务。这种架构的优点是可以实现弹性扩展和自动化管理,用户不需要关心存储和计算资源的管理,只需要专注于应用程序的运行和业务的增长。在实际应用中,云服务器ecs计算架构可以应用于各种场景,例如企业数据中心、互联网应用等
    云服务器ecs计算架构是什么意思呀
    2023-10-28

    云服务器ecs计算架构是什么意思啊

    计算资源:包括CPU、内存、存储等硬件资源,以及操作系统、应用程序等软件资源。存储资源:包括磁盘、网络等存储资源,以及数据库、缓存等对象存储资源。网络资源:包括互联网连接、网络带宽等网络资源,以及应用程序、数据等网络资源。应用程序资源:包括应用程序服务器、应用程序运行环境等软件资源,以及运行在云服务器上的应用程序。安全资源:包括安全管理平台、安全策略等安全资源,以及防火墙、入侵检测等安全机制。总之...
    2023-10-27

    云服务器ecs计算架构包括什么内容

    一、基础设施层基础设施层是云服务器的核心部分,它包括服务器、网络、存储等设备,是云服务器的基础设施。云服务器的硬件设备包括CPU、内存、存储、网络等,其中CPU是云服务器的核心,负责处理数据计算和通信等任务,内存和存储用于存储和读取数据,网络用于数据传输和存储。二、应用层应用层是云服务器的主要部分,它可以为用户提供各种
    2023-10-27

    Python 金融计算框架 Prophet怎么用

    Python 金融计算框架 Prophet怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言Prophet 是一个 Python 的微框架,用于金融市场。
    2023-06-02

    怎么做web高可用的架构设计

    本篇内容介绍了“怎么做web高可用的架构设计”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义目标既然我们的目标是做到高可用,那么我们就有必
    2023-06-05

    Kubernetes原生边缘计算框架KubeEdge怎么用

    本篇文章给大家分享的是有关Kubernetes原生边缘计算框架KubeEdge怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 KubeEdge成为第一个Kubernete
    2023-06-04

    阿里云服务器的架构高性能、高可用的云计算解决方案

    随着互联网技术的飞速发展,云计算已经成为企业和个人开展业务的重要工具。作为中国领先的云计算服务提供商,阿里云拥有先进的服务器架构,可以提供高性能、高可用的云计算解决方案。本文将详细介绍阿里云服务器的架构,帮助您更好地了解其性能和优势。阿里云服务器的架构:阿里云服务器的架构基于虚拟化技术,能够将一台物理服务器分割成
    阿里云服务器的架构高性能、高可用的云计算解决方案
    2023-10-30

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录