安装openstack验证keystone时出现错误怎么处理,求大神处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装openstack验证keystone时出现错误怎么处理,求大神处理相关的知识,希望对你有一定的参考价值。

[root@linux-node1 ~]# openstack --os-auth-url http://192.168.1.11:35357/v3 --os-project-domain-id default --os-user-domain-id default --os-project-name admin --os-username admin --os-auth-type password token issue
Password:
An unexpected error prevented the server from fulfilling your request. (HTTP 500) (Request-ID: req-897ea566-23d7-4436-8394-2fabf00de7f9)

参考技术A 我的环境:CentOS7 + OpenStack Liberty
这个问题可能是因为我把controller的localhost改成controller了,在/etc/hostname中
那么这个问题出现之后,我在每个服务中都需要使用两个database的认证
vi /etc/keystone/keystone.conf
connection = mysql://keystone:pass@controller/keystone
connection = mysql://keystone:pass@localhost/keystone # new line added to suppress HTTP 500 error
After that run these commands again to reflect keystone.conf changes made,
Populate the database tables for the Identity Service:
su -s /bin/sh -c "keystone-manage db_sync" keystone
Restart the Identity Service: sudo systemctl enable openstack-keystone.service sudo systemctl start openstack-keystone.service
这样就可以了。OpenStack中还有有很多坑的。记录一下。
参考技术B 缺少哪个 对应下载哪个的rpm包
rpm -ivh xxx安装即可

Openstack 云计算:openstack rocky 二: keystone 部署与验证

Openstack 云计算(二): Openstack Rocky部署二 keystone 部署与验证

标签(空格分隔):openstack系列


  • 一: keystone认证服务
  • 二: keystone的部署

一: keystone 认证服务

Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获得目标服务的Endpoint来找到目标服务。

1)用户与认证:用户权限与用户行为跟踪

User          用户
Tenant        租户
Token         令牌
Role          角色

2)服务目录:提供一个服务目录,包括所有服务项与相关API的端点

Service       服务
Endpoint      端点

二: keystone的部署

2.1 在控制节点创建keystone相关数据库并授权

mysql -uroot -pflyfish225

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘localhost‘ IDENTIFIED BY  ‘keystone‘;

GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘%‘ IDENTIFIED BY  ‘keystone‘;

flush privileges;

show databases;

select user,host from mysql.user;

技术图片

2.2.在控制节点安装keystone相关软件包

yum install openstack-keystone httpd mod_wsgi -y
yum install openstack-keystone python-keystoneclient openstack-utils -y

技术图片

技术图片

2.3 keystone 文件配置

openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:[email protected]/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet

grep ‘^[a-z]‘ /etc/keystone/keystone.conf

技术图片

su -s /bin/sh -c "keystone-manage db_sync" keystone

mysql -uroot -pflyfish225

use keystone; 

show tables;

技术图片

2.4 初始化Fernet令牌库

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

技术图片

2.5 定义访问端点

keystone-manage bootstrap --bootstrap-password admin   --bootstrap-admin-url http://controller:5000/v3/   --bootstrap-internal-url http://controller:5000/v3/   --bootstrap-public-url http://controller:5000/v3/   --bootstrap-region-id RegionOne

技术图片

2.6 配置httpd 服务

vim /etc/httpd/conf/httpd.conf

---
ServerName controller
---

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

service httpd start 

chkconfig httpd on 

技术图片

技术图片

技术图片

临时配置管理员账户的相关变量进行管理

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:5000/v3
export OS_IDENTITY_API_VERSION=3

技术图片

env |grep OS_

技术图片

查看命令

openstack endpoint list
openstack project list
openstack user list

技术图片

2.7 创建keystone的一般实例

# 以下命令会在project表中创建名为example的项目

openstack domain create --description "An Example Domain" example

技术图片

为keystone系统环境创建名为service的项目提供服务

用于常规(非管理)任务,需要使用无特权用户

以下命令会在project表中创建名为service的项目

openstack project create --domain default --description "Service Project" service

技术图片

创建myproject项目和对应的用户及角色
# 作为一般用户(非管理员)的项目,为普通用户提供服务

# 以下命令会在project表中创建名为myproject项目

openstack project create --domain default --description "Demo Project" myproject

技术图片

在默认域创建myuser用户
openstack user create --domain default  --password-prompt myuser

在role表创建myrole角色

openstack role create myrole

技术图片

技术图片

将myrole角色添加到myproject项目中和myuser用户组中

openstack role add --project myproject --user myuser myrole

技术图片

2.8 验证keystone

去除环境变量

unset OS_AUTH_URL OS_PASSWORD
env |grep OS_

技术图片

作为管理员用户去请求一个认证的token测试是否可
以使用admin账户进行登陆认证,请求认证令牌

openstack --os-auth-url http://controller:5000/v3   --os-project-domain-name Default --os-user-domain-name Default   --os-project-name admin --os-username admin token issue

技术图片

使用普通用户获取认证token

openstack --os-auth-url http://controller:5000/v3   --os-project-domain-name Default --os-user-domain-name Default   --os-project-name myproject --os-username myuser token issue

技术图片

2.9 创建OpenStack客户端环境脚本

创建admin用户的环境管理脚本

mkdir /openstack

cd /openstack

vim keystone-admin-pass.sh
---
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
---
source keystone-admin-pass.sh

创建普通用户myuser的客户端环境变量脚本

cd /openstack

vim keystone-myuser-pass.sh
---
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
---

source keystone-myuser-pass.sh

请求认证令牌:
   openstack token issue 

# 可以看到user_id和上面用命令获取到的是一样的,说明配置成功

# 至此,keystone安装完毕

技术图片

以上是关于安装openstack验证keystone时出现错误怎么处理,求大神处理的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack---M版---双节点搭建---Keystone安装和配置

Openstack 云计算:openstack rocky 二: keystone 部署与验证

OpenStack核心组件-keystone

openstack-keystone身份认证服务

OpenStack之四: keystone验证服务(端口5000)

Openstack之二:服务认证keystone