openstack手动安装部署(四) --- Keystone认证任务

一、Keystone认证任务

认证

  • 认证是确认允许一个用户访问的进程,当OpenStack认证体系接受了用户请求之后,它会发布一个认证令牌( token) , 用户拿到这个令牌后就可以去访问资源中的其他的应用。

token

  • 通常指一串比特值或字符串,用来做访问资源的记号。其中包含可以访问的资源范围和有效时间,有效期有限可以随时被撤回。

租户(tenant)、用户(user)、角色(role)

  • 租户早期被叫做project,是各个服务中可以访问的资源集合。用户在访问租户资源时,必须与该租户关联,并指定该用户在该租户下的角色。
  • 用户可以是一个人或服务或使用OpenStack相关服务的一个组织, OpenStack通过注册相关服务用户来管理用户。例如Nova服务注册Nova用户来管理相应服务。
  • 角色代表组用户可以访问的资源权限,角色决定了用户的权限。你可以理解租户为那些使用你云环境的客户,这些客户可以是一个项目组、 工作组、公司,这些客户中会建立不同的帐号(用户)及其对应的权限(角色)。
1、实验目的

安装控制器必备软件
在控制器端配置镜像存储、网络、计算和dashboard服务

2、Keystone的认证流程

openstack手动安装部署(四) --- Keystone认证任务
1)用户给keystone发送credential进行身份验证
2)keystone收到用户发送的credential进行验证;如果验证失败返回401错误,如果验证成功返回一个临时token
3)用户再次给keystone发送请求一个临时token
4)keystone返回给用户tenants的列表
5) keystone返回给用户一个tenant token,同时keystone给用户返回tenant的service 列表
6) 用户发送tenant所需credentials给keystone
7) 用户发送tenant token给endpoint进行验证
8) endpoint将用户发送的tenant token发送给keystone验证用户发送的tenant token是否正确?tenant token是否被允许使用service(service包括计算、镜像、认证、存储、网络)
9) keystone验证用户tenant token成功后,返回service的endpoint地址,并且让用户去访问service

3、安装MySQL服务
3.1、安装mysql服务

openstack持久化数据需要存储到数据库中,如nova相关的主机信息,instance状态,网络相关的网络、子网、端口、地址范围、agent ,cinder相关的volume存储,卷的分配情况等等。一般而言 ,在构建controller的高可用集群上, MySQL是必须要考虑的地方。数据库-般运行在controller节点,其他节点只需安装MySQL-python包即可。
3.1.1、
#yum clean all #清空yum缓存
#yum makecache #制作新的缓存
#yum install -y mysql mysql-server MySQL-python
openstack手动安装部署(四) --- Keystone认证任务
openstack手动安装部署(四) --- Keystone认证任务
#vi /etc/my.cnf #修改配置文件
openstack手动安装部署(四) --- Keystone认证任务
#server mysqld start #启动mysql服务器
#chkconfig --add mysqld #chkconfig on
openstack手动安装部署(四) --- Keystone认证任务
#/usr/bin/mysqladmin -u root password ‘openstack’ #修改数据库的密码为openstack
#mysql_install_db #MySQL数据库初始化

3.2、安装Rabbitmq消息队列
  • openstack是使用消息队列用于组件之间的通信的桥梁,如nova,neutron,cinder这些组件之间交互都需要使用到消息队列,
    例如创建虚拟机,首先nova-api接受用户创建instance的请求,后由nova-sceduler选择到合适的compute节点,然后生成(生产者)创建instance的命令放到消息队列中,被选中的compute节点(消费者)会从队列中提取队列信息,按照需求创建instance ,创建完成之后,再放入队列中,返还给controller ,从而实现生产和消费的过程。

  • openstack旨在创建一个大规模的云环境 ,消息队列是众多组件交互所必须的桥梁

  • openstack中能够支持的消息队列有多重,包括Qpid , Rabbitmq和ZeroMQ ,其中Qpid在早期的icehouse中使用,以使用者经验来说有两方面的缺陷: 1.默认只支持4000个connection ,使用需要修改, 2. Qpid对集群支持不好,需要借助其他高可用软件如pacemaker来完成,并且对数据的持久化支持不好,不建议使用。rabbitmq则自身 就已经携带有集群机制,能够支持将队列放到内存和磁盘,并且对数据持久化的支持很好,并且本身就 区提供有一个Web管理界面,用于口果和监控。

3.2.1、创建rabbitmq目录,并在该目录下制作信任公钥
(1)导入KEY
#mkdir -p /data/rabbitmq
#cd /data/rabbitmq
#vi rabbitmq-signing-key-public.asc.txt
openstack手动安装部署(四) --- Keystone认证任务
#rpm --import rabbitmq-signing-key-public.asc.txt #导入公钥
(2)安装rabbitmq
通过XFTP工具上传四个包到/data/rabbitmq目录下:
openstack手动安装部署(四) --- Keystone认证任务
#cd /data/rabbitmq
openstack手动安装部署(四) --- Keystone认证任务
#cd /etc/rabbitmq

openstack手动安装部署(四) --- Keystone认证任务
openstack手动安装部署(四) --- Keystone认证任务
http://10.20.0.10.:15672/ 进入管理界面来查看rabbitMQ的信息,默认管理员用户和密码都是:guest

openstack手动安装部署(四) --- Keystone认证任务
openstack手动安装部署(四) --- Keystone认证任务
(3)为nova,neutron,cinder,heat创建用户并授予权限
openstack手动安装部署(四) --- Keystone认证任务
#对相应的用户执行授权操作:
openstack手动安装部署(四) --- Keystone认证任务

4、安装keystone

(1)创建库和授权
#mysql -uroot -popenstack #链接数据库

show database;
create database keystone;
show database;
openstack手动安装部署(四) --- Keystone认证任务

(2)授权本地用户和远程用户、查看所有用户
openstack手动安装部署(四) --- Keystone认证任务
(3)验证登录数据库
openstack手动安装部署(四) --- Keystone认证任务

4.1、Keystone的安装与配置

(1)安装软件包
openstack手动安装部署(四) --- Keystone认证任务
openstack手动安装部署(四) --- Keystone认证任务
(2)生成token(随机生成一个16进制的token)配置token
openstack手动安装部署(四) --- Keystone认证任务
(3)查看参数修改结果
openstack手动安装部署(四) --- Keystone认证任务
(4)配置数据库连接
openstack手动安装部署(四) --- Keystone认证任务
(5)查看参数修改结果,如果没有修改成功手动修改
openstack手动安装部署(四) --- Keystone认证任务
(6)配置UUID token和SQL驱动
openstack手动安装部署(四) --- Keystone认证任务
(7)配置SQL撤回驱动
openstack手动安装部署(四) --- Keystone认证任务(8)为便于排错,显示详细的日志信息
openstack手动安装部署(四) --- Keystone认证任务
(9)生成PKI认证所需的证书文件
openstack手动安装部署(四) --- Keystone认证任务
openstack手动安装部署(四) --- Keystone认证任务
(10)同步keystone数据库,生成keystone所需的表
openstack手动安装部署(四) --- Keystone认证任务
(11)启动keystone服务和校验服务状态
openstack手动安装部署(四) --- Keystone认证任务
(12)创建一个cron任务,配置定期清理过期的token
openstack手动安装部署(四) --- Keystone认证任务

4.2、keystone创建user,tenant,role,和endpoint

(1)定义token环境变量
openstack手动安装部署(四) --- Keystone认证任务
(2)将token环境变量写入/etc/profile文件
openstack手动安装部署(四) --- Keystone认证任务
(3)创建tenant
openstack手动安装部署(四) --- Keystone认证任务
(4)创建admin用户
openstack手动安装部署(四) --- Keystone认证任务
(5)创建admin角色
openstack手动安装部署(四) --- Keystone认证任务
(6)将用户admin赋予admin角色和admin project内
openstack手动安装部署(四) --- Keystone认证任务
(7)创建_member_角色,并将admin用户加入该角色
openstack手动安装部署(四) --- Keystone认证任务
(8)创建demo用户
openstack手动安装部署(四) --- Keystone认证任务
(9)创建demo租户
openstack手动安装部署(四) --- Keystone认证任务
(10)demo用户和租户、_member_角色关联
openstack手动安装部署(四) --- Keystone认证任务
(11)创建service租户,其他project之间的交互,需要加入到service这个租户里,后续需要使用
openstack手动安装部署(四) --- Keystone认证任务
(12)创建keystone的service类型,其他服务通过该catalog即可访问到keystone服务
openstack手动安装部署(四) --- Keystone认证任务
(13)将keystone服务端口注册到service中,从而通过service访问keystone
openstack手动安装部署(四) --- Keystone认证任务
(14)校验keystone的配置
openstack手动安装部署(四) --- Keystone认证任务
(15)检验admin是否有管理权限
openstack手动安装部署(四) --- Keystone认证任务
(16)校验demo账号获取token情况
openstack手动安装部署(四) --- Keystone认证任务
(17)校验demo账号是否有权限
openstack手动安装部署(四) --- Keystone认证任务
(18)配置admin用户的环境变量
openstack手动安装部署(四) --- Keystone认证任务
(19)配置demo账号的环境变量
openstack手动安装部署(四) --- Keystone认证任务

排错

(1)
错误:在keystone的安装和配置过程中,同步keystone数据库,生成keystone所需的表时,查出来的表是空表,通过查询日志检查出现了1045错误。
问题:在对本地用户和远程用户授权时,操作失败。
解决:重新对本地用户和远程用户进行授权。
(2)
错误:在keystone的安装和配置过程中,在校验keystone的配置时,校验admin用户获取token失败
问题:在创建keystone的service类型时,将命令中的一个字母敲错,从而导致后面检索不到。
解决:重新创建客户服务的服务实体。