KeyStone 简要分析

2021SC@SDUSC

KeyStone 简要分析

一,KeyStone是什么
keyStone是openstack中提供identity,token,catalog和policy服务的组件,实现了openstack的身份认证API。

​ 身份认证服务包含了两个基本服务:

  • 用户管理:记录用户和用户所被允许执行的工作。
  • 服务日志:提供一个关于什么服务是被允许的和它们的AP入口位置的日志。
二.KeyStone 架构

KeyStone根据传统,承担了一组内部服务,向外暴露一个或多个服务入口节点。

  1. 身份认证:身份认证服务为用户,租客和角色(for USER,Tenant and Role)提供了认证评估验证和和数据以及相关元数据;

  2. Token:在一个user或者tenant在验证之后,发给其一个Token,Token服务可以验证并管理这些Token(类似cookie)

  3. Catalog:记录所有endpoint(入口)在需要服务时查询catalog即可

  4. Policy:提供基于规范的认证引擎

​ 每个服务可以根据当前环境进行设置来适应当前需求。可以在keystone.conf里设置后端。

  1. KVS Backend:一个简单的后端接口,需要更深入的设置
  2. SQL Backend:一个基于SQLAchemy(python操作SQL的工具包)完成的后端,用于储存数据。
  3. PAM Backend:使用了当前系统的PAM服务用于认证,提供user和tenant一对一关联。(extra)
  4. LDAP Backend:把user和tenant储存在不同的子树中
  5. template Backend:泛式设置keystone

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L05KD1rr-1634377476209)(https://image.slidesharecdn.com/openstackkeystoneidentityservice-121017010633-phpapp01/95/openstack-keystone-identity-service-6-638.jpg?cb=1350436060)]

工作流

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0e9bzASZ-1634377476211)(https://image.slidesharecdn.com/openstackkeystoneidentityservice-121017010633-phpapp01/95/openstack-keystone-identity-service-7-638.jpg?cb=1350436060)]

三,keystone用户管理
1. User:代表一个个体用户,与用户名,密码和email相关联。一个user与一个特定的domain相关,所以username不需要全局唯一,只需要域内唯一。(许多user可以组成一个group,group被一个domain拥有,group名也是域唯一)
2. tenant:一个项目,组织等。 只有tenant才能与openstack服务提出request
3. role:代表一类在指定tenant下的role(可执行的动作)
  1. domain:项目,用户和组织的高层次的容器。参数:域名(全局唯一),角色名,用户名,项目名,组织名(域内唯一)

    不同domain内的用户可以访问不同域的服务

四.应用架构

KeyStone中使用REST API的服务通过HTTP交互

KeyStone中与flask-RESTful相关的方法在keystone.server.flask.common

KeyStone的API资源继承自keystone.server.flask.common.ResourceBase并暴露HTTP方法(GET,PUT,POST,PATCH和DELETE)

class UserResource(ks_flask.ResourceBase):
    collection_key = 'users'
    member_key = 'user'
    get_member_from_driver = PROVIDERS.deferred_provider_lookup(
        api='identity_api', method='get_user')

    def get(self, user_id=None):
        """Get a user resource or list users.
        GET/HEAD /v3/users
        GET/HEAD /v3/users/{user_id}
        """
        ...

    def post(self):
        """Create a user.
        POST /v3/users
        """
        ...

class UserChangePasswordResource(ks_flask.ResourceBase):
    @ks_flask.unenforced_api
     def post(self, user_id):
         ...

API路由

class UserAPI(ks_flask.APIBase):
    _name = 'users'
    _import_name = __name__
    resources = [UserResource]
    resource_mapping = [
        ks_flask.construct_resource_map(
            resource=UserChangePasswordResource,
            url='/users/<string:user_id>/password',
            resource_kwargs={},
            rel='user_change_password',
            path_vars={'user_id': json_home.Parameters.USER_ID}
        ),
     ...
Service和Endpoint的关系
  1. openstack中,每一个service都三种endpoint:Admin,internal和public(创建完service后需要为其创建API EndPoint. )
  2. Admin是用作管理用途的,如它能够修改user/tenant(project)。
  3. public 是让客户调用的,比如可以部署在外网上让客户可以管理自己的云。
  4. internal是openstack内部调用的。
  5. 三种endpoints 在网络上开放的权限一般也不同。Admin通常只能对内网开放,public通常可以对外网开放,internal通常只能对安装有openstack对服务的机器开放。

每个你部署的openstack服务都需要绑定endpoint(存储在keystone中)来提供服一个服务的入口,因而我们第一需要部署的组件就是keystone。

五.小结

nstack对服务的机器开放。

每个你部署的openstack服务都需要绑定endpoint(存储在keystone中)来提供服一个服务的入口,因而我们第一需要部署的组件就是keystone。

五.小结

KeyStone是为用户创建令牌凭证,提供服务入口,为其他openstack服务提供凭证验证服务的组件,是构建openstack服务的第一个组件,并可以为用户授权和定义行为,可以在KeyStone中窥得其他服务及其endpoint。

<think>好的,用户想了解OpenStack架构设计和运维管理任务。首先,我需要整理OpenStack的基础架构,包括它的核心组件以及它们之间的关系。根据引用[1],OpenStack的概念架构分为计算、网络、存储等部分,可能需要详细说明每个组件的功能,比如Nova负责计算,Neutron管理网络,Cinder提供块存储等。 接下来是物理架构部分,引用[3]提到有两种部署架构:简单和复杂。需要解释这两种架构的区别,可能涉及控制节点、计算节点、存储节点的分布情况。用户可能想知道在实际生产环境中如何选择适合的架构,因此需要结合资源规划来说明。 然后是运维管理任务。引用[2]提到了Python调用OpenStack API进行运维,这里可以介绍自动化运维工具和脚本开发的重要性。另外,监控和性能分析也很关键,引用[5]提到的TPIG栈(Telegraf、InfluxDB、Grafana、Prometheus)可以作为监控方案的例子,说明如何实施性能采集和分析。 部署步骤方面,引用[4]提到了编辑配置文件,可能需要简要说明部署的基本流程,如环境准备、软件包安装、配置调整等。同时,引用[3]强调根据需求设计落地方案,这里可以补充部署时的注意事项,如网络规划、高可用性设计等。 用户可能对架构设计的具体原则感兴趣,引用[1]中的设计基本原则,如模块化、可扩展性,需要展开讨论。此外,运维中的安全管理和故障恢复也是重点,需要涵盖用户权限管理、漏洞修复、备份策略等内容。 最后,生成相关问题时要覆盖架构设计、组件功能、部署方案、运维工具、监控方法以及常见问题处理,确保问题全面且有针对性,帮助用户进一步深入学习。</think>### OpenStack 架构设计与运维管理任务 #### 一、OpenStack 架构设计 1. **概念架构** OpenStack 由多个松耦合的组件构成,遵循模块化设计原则[^1]。核心组件包括: - **计算服务(Nova)**:管理虚拟机生命周期,支持KVM/Xen等虚拟化技术。 - **网络服务(Neutron)**:提供虚拟网络、子网、路由及安全组功能。 - **存储服务**: - *对象存储(Swift)*:分布式对象存储系统 - *块存储(Cinder)*:为虚拟机提供持久化块存储 - **身份认证(Keystone)**:统一鉴权与多租户管理,支持LDAP/OAuth集成[^3]。 $$ \text{设计原则:可扩展性 > 容错性 > 服务解耦} $$ 2. **物理架构** - **简单部署架构**:所有服务集中在控制节点,计算节点独立,适合小型环境。 - **复杂部署架构**: - *控制节点集群*(高可用):MariaDB Galera集群 + RabbitMQ镜像队列 - *计算节点池*:横向扩展资源 - *分布式存储*:Ceph集群提供统一存储后端 #### 二、运维管理任务 1. **部署实施** - 环境规划:网络拓扑(管理网、数据网、存储网分离)、硬件资源分配。 - 自动化部署:使用DevOps工具链(Ansible/Puppet)完成多节点部署[^4]。 - 配置调优:调整Nova调度算法、Neutron网络MTU值等。 2. **日常运维** - **监控与告警**: - 通过Prometheus采集Nova/Neutron性能指标(如虚拟机启动耗时) - Grafana可视化监控面板,设置阈值告警[^5] - **日志分析**: ```bash # 集中收集各节点日志 journalctl -u nova-api.service --since "2023-01-01" ``` - **容量管理**:定期分析资源利用率,预测扩容需求。 3. **故障处理** - 常见问题: - 虚拟机启动失败:检查Nova-Compute与Hypervisor连接状态 - 网络隔离失效:验证Neutron安全组规则及流表配置 - 恢复策略: - 关键服务进程监控(如通过systemd自动重启) - 数据库定期备份(mysqldump + 增量快照) 4. **安全运维** - 定期更新CVE补丁(如Keystone令牌伪造漏洞修复)。 - 实施最小权限原则:通过Role-Based Access Control限制运维人员权限[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值