云计算openstack核心组件——keystone身份认证服务
一、Keystone介绍:
- 管理用户及其权限
- 维护 OpenStack Services 的 Endpoint
- Authentication(认证)和 Authorization(鉴权)

User


除了 admin 和 demo,OpenStack 也为 nova、cinder、glance、neutron 服务创建了相应的 User。 admin 也可以管理这些 User。

Credentials(资格证明)

Authentication(身份认证)

Token

- Token 用做访问 Service 的 Credential
- Service 会通过 Keystone 验证 Token 的有效性
- Token 的有效期默认是 24 小时
Project

- 资源的所有权是属于 Project 的,而不是 User。
- 在 OpenStack 的界面和文档中,Tenant / Project / Account 这几个术语是通用的,但长期看会倾向使用 Project
- 每个 User(包括 admin)必须挂在 Project 里才能访问该 Project 的资源。 一个User可以属于多个 Project。
- admin 相当于 root 用户,具有最高权限


Service

Endpoint

# source devstack/openrc admin admin# openstack catalog list

Role
- Keystone定义Role

- 可以为 User 分配一个或多个 Role,Horizon 的菜单为:Identity->Project->ManageMembers

- Service 决定每个 Role 能做什么事情 Service 通过各自的 policy.json 文件对 Role 进行访问控制。 下面是 Nova 服务 /etc/nova/policy.json 中的示例:

一个是租户_member_
二、Keystone基本架构:

三、通过例子认识Keystone:
我们通过“查询可用 image”这个实际操作让大家对这些概念建立更加感性的认识。User admin 要查看 Project 中的 image

时,OpenStack 内部发生了哪些事情?请看下面




Glance 向 Keystone 询问 admin 身份是否有效



keystone环境部署

机器:3台
1:controller:3块网卡(集群网,租户网,外网)
2:compute:2块网卡(集群网,租户网)
3:storage:1块网卡(集群网)
1)设置主机名,彼此域名解析,无密钥登陆
vim /etc/hosts
192.168.253.135 controller
192.168.253.194 compute
192.168.253.15 storage
ssh-keygen
ssh-copy-id
2)点进openstack packages
在controller节点上:
安装openstack客户端软件包
yum -y install python-openstackclient
安装openstack-selinux软件包
yum -y install openstack-selinux
3)点进SQL database
安装数据库
yum -y install mariadb mariadb-server python2-pymysql
并创建openstack的配置文件(注意连接数)
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.253.135(主节点集群ip)
default-storage-engine = innodb
innodb_file_per_table = on
max_connections =
collation-server = utf8_general_ci
character-set-server = utf8
重启自启mariadb.server
systemctl restart(enable) mariadb.service
初始化mysql
mysql_secure_installation
4)点进Message queue
安装rabbitmq并启动自启,创建openstack的用户
yum -y install rabbitmq-server
rabbitmqctl add_user openstack admin(密码) #添加openstack用户
rabbitmqctl set_permissions openstack ".*" ".*" ".*" #给予所有虚拟机的所有交换机的所有消息队列的权限
rabbitmqctl set_user_tags mama administrator #设为管理员
systemctl restart rabbitmq-server.service
systemctl enable rabbitmq-server.service #开机自启
5)点进Memcached
安装memcache
yum -y install memcached python-memcached
修改配置文件写入主机名
vim /etc/sysconfig/memecached
[root@controller ~]# cat /etc/sysconfig/memcached
PORT=""
USER="memcached"
MAXCONN=""
CACHESIZE=""
OPTIONS="-l 127.0.0.1,::1,controller"
重启自启memcached.service
systenctl restart memcached.service
systemctl enable memcached.service
6)点击identity service——install and configure
登陆数据库,创建keystone的用户和数据库以及密码
create database keystone;
grant all on keystone.* to keystone@'localhost' identified by 'KEYSTONE_DBPASS';
grant all on keystone.* to keystone@'%' identified by 'KEYSTONE_DBPASS';
安装keystone服务,清空配置文件并导入
yum -y install openstack-keystone httpd mod_wsgi
Vim /etc/keystone/keystone.conf
数据库的参数
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
Token的参数
[token]
provider = fernet
导入keystone数据库中的表
su -s /bin/sh -c "keystone-manage db_sync" keystone
创建keystone用户和keystone组
# 创建keystone用户与组
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# 身份信息认证
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
创建admin用户的密码,并宣告keystone服务端点(密码,三个服务端点)
keystone-manage bootstrap --bootstrap-password admin \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
修改apache服务的配置文件
ServerName controller
创建keystone服务调用httpd的模块配置文件的软连接
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动httpd(注意apache端口不要被占用)
systemctl restart httpd
编辑环境变量的配置文件
vim openrc
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=
7)点击identity Create a domain, projects, users, and roles
宣告环境变量
source openrc
创建service 、 demo 的项目
在domain区域内创建一个名为server的服务项目
openstack project create --domain default \
--description "Service Project" service
openstack project create --domain default \
--description "Demo Project" demo
创建demo的用户
openstack user create --domain default \
--password-prompt demo
创建user的角色
openstack role create user
2.18、把demo用户设置为user角色
openstack role add --project demo --user demo user
查看项目 user 角色等
openstack project list
openstack user list
openstack role list
openstack endpoint list
openstack catalog list
一些报错:
1、
[root@controller conf.d]# openstack project create --domain default \
> --description "Service Project" service
Failed to discover available identity versions when contacting http://controller:35357/v3. Attempting to parse version from URL.
Unable to establish connection to http://controller:35357/v3/auth/tokens: HTTPConnectionPool(host='controller', port=35357): Max retries exceeded with url: /v3/auth/tokens (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x4ff8250>: Failed to establish a new connection: [Errno 111] \xe6\x8b\x92\xe7\xbb\x9d\xe8\xbf\x9e\xe6\x8e\xa5',))
原因:35357端口无法启动
而造成35357端口无法启动的原因有两方面:
1)apache服务出现问题
解决方法:查看80端口是否有其他服务占用
[root@controller ~]# lsof -i:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd root 4u IPv6 0t0 TCP *:http (LISTEN)
httpd apache 4u IPv6 0t0 TCP *:http (LISTEN)
httpd apache 4u IPv6 0t0 TCP *:http (LISTEN)
httpd apache 4u IPv6 0t0 TCP *:http (LISTEN)
httpd apache 4u IPv6 0t0 TCP *:http (LISTEN)
httpd apache 4u IPv6 0t0 TCP *:http (LISTEN)
httpd apache 4u IPv6 0t0 TCP *:http (LISTEN)
如果有就停掉其他服务或kill掉
2)wsgi配置文件出错或者软连接没起作用
[root@controller ~]# cd /etc/httpd/conf.d/
[root@controller conf.d]# ls
autoindex.conf README userdir.conf welcome.conf wsgi-keystone.conf
[root@controller conf.d]# vim wsgi-keystone.conf
[root@controller conf.d]# cat wsgi-keystone.conf
Listen
Listen
2、
[root@controller ~]# openstack project create --domain default --description "Service Project" service
-bash: openstack: 未找到命令
这是因为keystoneclient客户端安装出了问题,尝试重新安装。
OpenStack排错常用步骤和命令
1.查看日志
OpenStack的日志系统设计的非常棒。大多数的问题都能从日志中找到原因。
日志路径通常在/var/log/下。
哪里有问题就去哪里找:去相应的日志文件夹查看日志。
比如上传镜像报错,就去/var/log/glance/
如果实例启动失败,就去/var/log/nova下查看。注意nova的日志分布于controller节点和compute节点
Devstack 环境中的日志,不同版本是不一样的。P版本之前采用screen命令查看, 而P版本开始用jounalctl 命令查看
2.端口被占用
比如keystone集成到apache里了,使用80端口。如果80端口被其他服务占用,那就完蛋了。
3.查看租户/工程
租户tenant和工程project在openstack中本质是一样的。新版本已经不再区分这2个概念
openstack project list
4.检查服务状态
ps -aux | grep keystone 或者ps -ef | grep keystone
5.查看openstack发行版本
nova-manage --version
14.0.
对应着N版本
查看所有的组件状态:
openstack-status
云计算openstack核心组件——keystone身份认证服务的更多相关文章
- 云计算OpenStack核心组件---keystone身份认证服务(5)
一.Keystone介绍: keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等 ...
- 云计算openstack核心组件——keystone身份认证服务(5)
一.Keystone介绍: keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户 ...
- openstack核心组件——keystone身份认证服务(5)
云计算openstack核心组件——keystone身份认证服务(5) 部署公共环境 ntp openstack mariadb-server rabbitmq-server memcache 1.w ...
- 003-官网安装openstack之-keystone身份认证服务
以下操作均在控制节点进行 1.控制节点安装keystone服务 概念理解: Keystone是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, 它实现了OpenStack的Ident ...
- openstack核心组件——keystone身份认证部署服务(5)
node1主机执行 1.mysql -u root -p 2.create database keystone; 创建数据库 MariaDB [(none)]> show databases; ...
- 云计算核心组件--keystone身份认证服务(5)
一.Keystone介绍: keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等 ...
- keystone身份认证服务
Keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等.云 ...
- OpenStack核心组件-keystone
1. Keystone介绍 keystone是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...
- OpenStack Train版-2.安装keystone身份认证服务
安装 keystone 认证 mysql -uroot create database keystone; grant all privileges on keystone.* to 'keyston ...
随机推荐
- Java-集合第五篇Map集合
1.什么是Map集合. Map用于保存具有映射关系的数据.key和value都可以是任意引用类型,但key不允许重复,即同一个Map的任何两个key通过equals方法比较总是返回false. 从Ja ...
- ubuntu 虚拟机配置 IP、子网掩码、网关、DNS
ubuntu 虚拟机配置 IP.子网掩码.网关.DNS 执行 sudo vim /etc/network/interfaces 添加如下配置: auto eth0 iface eth0 inet st ...
- CodeForce 855B 暴力or线段树
CodeForce 855B 暴力or线段树 题意 给你一串数,然后找出三个数,他们的前后关系和原来一样,可以相同,然后分别乘p,q,r,求他们积的和最大,并且输出这个数. 解题思路 这个可以使用线段 ...
- [BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化)
[BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化) 题面 马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街.商店街有n个商店,并且它们之间的道路构成了一颗树 ...
- 进程通信(multiprocessing.Queue)
from multiprocessing import Queue Queue([maxsize]) 创建共享的进程队列.maxsize是队列中允许的最大项数.如果省略此参数,则无大小限制.底层队列使 ...
- Python笔记(读取txt文件中的数据)
在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 40920 8.326976 0.953952 3 1448 ...
- [TabControl] TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来
看下效果吧<ignore_js_op> 下面是一个公共的添加方法看代码 [C#] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 1 ...
- 攻防世界--The_Maya_Society
测试文件:https://adworld.xctf.org.cn/media/task/attachments/17574fc423474b93a0e6e6a6e583e003.zip 我们直接将Li ...
- 模拟.net post请求属性
这两天在做一个nodejs的爬虫项目,需要模拟post请求获得网站数据.遇到2个asp.net的网站,掉到坑里面,调试了好几天.总结一下过程. 一般我们模拟post请求的时候最重要的就是post请求里 ...
- Linux性能优化从入门到实战:17 网络篇:网络基础
网络模型 为了解决网络互联中异构设备的兼容性问题,并解耦复杂的网络包处理流程,国际标准化组织制定了开放式系统互联通信参考模型(Open System Interconnection Reference ...
