【云计算】实验3:Keystone 组件

news/2024/7/18 12:35:13 标签: 云计算, linux, openstack

文章目录

  • 一、实验目的
  • 二、实验环境
  • 三、实验内容
    • 2.0.keystone 认证服务基本概念
    • 2.1.在控制节点创建 keystone 相关数据库
    • 2.2.在控制节点安装 keystone 相关软件包
    • 2.3.初始化同步 keystone 数据库
    • 2.4.初始化 Fernet 令牌库
    • 2.5.配置启动 Apache
    • 2.6.初始化 keystone 认证服务
    • 2.7.创建 keystone 的一般实例
    • 2.8.验证操作 keystone 是否安装成功
    • 2.9.创建 OpenStack 客户端环境脚本
  • 总结


一、实验目的

  1. 熟悉Linux基本服务配置;
  2. 理解OpenStack基本环境中各组件用途。

二、实验环境

  1. 实验资源 云主机Vultr、DigitalOCean等
  2. 软件环境 CentOS 7

三、实验内容

2.0.keystone 认证服务基本概念

1)用户与认证:
User 用户
Tenant 租户
Token 令牌
Role 角色
2)服务目录:提供服务目录,包括所有服务项与相关 API 的端点
Service 服务
Endpoint 端点

2.1.在控制节点创建 keystone 相关数据库

1)创建 keystone 数据库并授权
mysql -p123456

在数据库 MariaDB [(none)]> 提示符后执行如下命令:
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;
exit
在这里插入图片描述

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

1)安装 keystone 软件包
配置Apache服务,使用带有“mod_wsgi”的HTTP服务器来相应认证服务请求,端口为5000。
yum install openstack-keystone httpd mod_wsgi -y
yum install openstack-keystone python-keystoneclient openstack-utils -y
在这里插入图片描述
在这里插入图片描述
2)快速修改 keystone 配置
下面使用的快速配置方法需要安装 Openstack-utils
openstack-config --set /etc/keystone/keystone.conf database connection
mysql+pymysql://keystone:keystone@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
其他方式查看生效配置
grep /etc/keystone/keystone.conf
例:[root@openstack01 tools]# grep/etc/keystone/keystone.conf
connection = mysql+pymysql://keystone:keystone@controller/keystone
provider = fernet
在这里插入图片描述

2.3.初始化同步 keystone 数据库

1)同步 keystone 数据库
su -s /bin/sh -c “keystone-manage db_sync” keystone
在这里插入图片描述
在这里插入图片描述
2)同步后进行测试
确定需要的表已经建立
mysql -h127.0.0.1 -ukeystone -pkeystone -e “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.配置启动 Apache

1)修改 httpd 配置文件
vi /etc/httpd/conf/httpd.conf

ServerName controller
注:controller 是上一部分实验设定的 hostname
在这里插入图片描述
2)配置虚拟主机
创建 keystone 虚拟主机配置文件的快捷方式
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
或者可以手动编辑创建该文件
cat /usr/share/keystone/wsgi-keystone.conf
在这里插入图片描述
3)启动 httpd 并配置开机自启动
systemctl start httpd.service
systemctl status httpd.service
netstat -anptl|grep httpd
systemctl enable httpd.service
systemctl list-unit-files |grep httpd.service
若 http 启动报错,可能需关闭 selinux ;或安装 yum install openstack-selinux
或检查 80 端口占用情况等。
在这里插入图片描述

2.6.初始化 keystone 认证服务

1)创建 keystone 用户, 初始化的服务实体和 API 端点
创建 keystone 服务实体和身份认证服务,以下三种类型分别为公共的、内部的、管理的;
需要创建一个密码 ADMIN_PASS,作为登陆 openstack 的管理员用户,这里创建为 123456
命令如下:
keystone-manage bootstrap --bootstrap-password 123456
–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
该命令,会在 keystone 数据库执增加以下内容:
1)在 endpoint 表增加 3 个服务实体的 API 端点
2)在 local_user 表中创建 admin 用户
3)在 project 表中创建 admin 和 Default 项目(默认域)
4)在 role 表创建 3 种角色,admin,member 和 reader
5)在 service 表中创建 identity 服务
在这里插入图片描述
2)临时配置管理员账户的相关变量进行管理
编写环境变量脚本
vi admin-openrc
admin-openrc 可根据自己需要进行命名,名字无需统一。admin-openrc 添加如下内容:
export OS_USERNAME=admin
export OS_PASSWORD=123456
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
export OS_IMAGE_API_VERSION=2

查看系统变量
env |grep OS_
查看 keystone 实例信息
openstack endpoint list
openstack project list
openstack user list
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7.创建 keystone 的一般实例

1)创建一个名为 example 的 keystone 域
以下命令会在 project 表中创建名为 example 的项目
openstack domain create --description “An Example Domain” example
在这里插入图片描述
2)为 keystone 系统环境创建名为 service 的项目提供服务
以下命令会在 project 表中创建名为 service 的项目
openstack project create --domain default --description “Service Project”
service
在这里插入图片描述
3)创建 myproject 项目和对应的用户及角色
以下命令会在 project 表中创建名为 myproject 项目
openstack project create --domain default --description “Demo Project”
myproject
在这里插入图片描述
4)在默认域创建 myuser 用户
使用–password 选项为直接配置密码,使用–password-prompt 选项为交互式输入密码
直接创建用户和密码
openstack user create --domain default --password=myuser myuser
在这里插入图片描述
5)在 role 表创建 myrole 角色
openstack role create myrole
在这里插入图片描述
6)将 myrole 角色添加到 myproject 项目中和 myuser 用户组中
openstack role add --project myproject --user myuser myrole
在这里插入图片描述

2.8.验证操作 keystone 是否安装成功

1)作为管理员用户去请求一个认证的 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
在这里插入图片描述
2)使用普通用户获取认证 token
以下命令使用”myuser“用户的密码和 API 端口 5000,只允许对身份认证服务 API 的常规(非
管理)访问。
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 客户端环境脚本

为了提升客户端操作的效率,OpenStack 支持简单的客户端环境变量脚本即 OpenRC 文
件,我这里使用自定义的文件名
1)创建 admin 用户的环境管理脚本
vi admin-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

env |grep OS_
在这里插入图片描述
2)测试环境管理脚本
使用脚本加载相关客户端配置,以便快速使用特定租户和用户运行客户端
source admin-openrc
3)请求认证令牌
openstack token issue
在这里插入图片描述
keystone 配置完毕


总结

  Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获得目标服务的Endpoint来找到目标服务。
  Openstack是一个SOA架构,各个项目独立提供先关的服务,且互不依赖,如nova提供计算服务,glance提供镜像服务等。防止耦合性,且扩展性不高实际上所有的组件都依赖keystone,
  它有两个功能:
(1)用户管理:验证用户身份信息合法性
(2)服务目录管理:提供各个服务目录的(Service Catalog:包括service和endpoint)服务,无论任何服务或者客户访问openstack都要访问keystone获取服务列表,以及每个服务的endpoint
在这里插入图片描述
Keystone基本概念介绍
  1.user:User即用户,指的是使用openstack service的用户,可以是人,服务,系统,就是说只要是访问openstack service 的对象都可以称为User
  2.Credentials:是用于确认用户身份的凭证。说白了就是“信物”,可以是:
    (1):用户名和密码
    (2):用户名跟API Kye(秘钥)#(1)(2)用户第一次确认身份的方法
    (3):一个keystone分配的身份的token #(3)用户已经确认身份后的方法 (token是有时间限制的)
  3.Authentication:
    (1):用户身份验证的过程。keystone服务通过检查用户的Credentials来确定用户的身份
    (2):第一次验证身份是使用用户名与密码或者用户名与API Key的形式。当用户的Credentials被验证后,keystone会给用户分配一个Authentication token 供该用户的后续请求操作(返回的token中就包含User的Role列表)
  4.Token
    (1):是一串数字字符串,当用户访问资源时需要使用的东西,在keystone中主要是引入令牌机制来保护用户对资源的访问,同时引入PKI、PKIZ、fernet、UUID其中一个随机加密产生一串数字,对令牌加以保护
    (2):token并不是长久有效的,是有时效性的,在有效的时间内可以访问资源。
  5.Role:
    (1):本身是一堆ACL集合,主要用于权限的划分。
    (2):可以给User指定Role,是user获得role对应的操作权限。
    (3):系统默认使用管理Role的角色 管理员用户:admin 普通用户:member(老版本) user(新版本)
    (4):user验证的时候必须带有Project。老版本叫(Tenant)
在这里插入图片描述
在这里插入图片描述
此图为虚拟机创建过程图
  组件组件包括:user、keystone、nova、glance、neutron虚拟机创建必备组件,keystone全局认证完后,nova获取资源,nova通过调度算法将资源调度到裸金属上(调度算法:资源集合,根据算法或者打分机制,根据权重分配到后端最高的节点)

  用户通过命令行或者horizon控制面板的方式登录openstack,凭借自己的证书(credentials)给keystone验证。
  Keystone对用户的证书验证,验证通过则会发布一个令牌(token)和用户所需服务的位置点(endpoint)给用户。用户得到了位置点(endpoint)之后,携带自己的令牌,向nova发起请求,请求创建虚拟机。nova会拿着用户的token向keystone进行认证,看是否允许用户执行这样的操作。
  keystone认证通过之后,返回给nova,nova即开始执行创建虚拟机的请求。首先需要镜像资源,nova带着令牌(token)和所需要的镜像名向glance提出镜像资源的请求。
  glance会拿着token去向keystone进行认证,看是否允许提供镜像服务。keystone认证成功后,返回给glance。glance向nova提供镜像服务。
  创建虚拟机还需要网络服务,nova携带token向neutron发送网络服务的请求
  neutron拿着nova给的token向keystone进行认证,看是否允许向其提供网络服务。keystone认证成功后,返回给nuetron。nuetron则给nova提供网络规划服务。
  网络服务。keystone认证成功后,返回给nuetron。nuetron则给nova提供网络规划服务。
  nova获取了镜像和网络之后,开始创建虚拟机,通过hypervisior可调用底层硬件资源进行创建。创建完成返回给用户,成功执行了用户的请求。


http://www.niftyadmin.cn/n/1771236.html

相关文章

autoloadreal.php_自动加载函数流程之composer autoload_real.php

我们探索了 从1 app/public/index.php 开始2 加载 bootstrap /autoload.php 文件3 然后加载到 vendor / autoload.php文件4 然后终于找到了 /vendor/composer/autoload_real.php 文件终于开始了 真正的自动加载,在这里 他封装了一个类。而且这个类,也是十…

【通信协议及编码】实验3:MFC框架下聊天室客户机与服务器程序

文章目录一、实验目的二、实验环境三、实验内容一、实验目的 掌握MFC套接字编程方法借助VS2016的MFC应用程序向导创建程序框架;从CSocket类派生用户自定义的套接字类;通过CArchive类、CSocketFile类、CSocket类实现网络数据交换。 二、实验环境 操作系…

pytorch标签onehot编码_pytorch标签转onehot形式实例

代码:import torchclass_num 10batch_size 4label torch.LongTensor(batch_size, 1).random_() % class_numprint(label.size())one_hot torch.zeros(batch_size, class_num).scatter_(1, label, 1)print(one_hot)输出:torch.Size([4, 1])tensor([[0…

flutter 九宫格菜单_flutter GridView 九宫格

题记—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。重要消息1 引言GridView是常用可滚动组件之一,在Flutter中通常使用GridView构建二维网格列表,GridView创建方法有五种&#xf…

【云计算】实验4:Glance 组件

文章目录一、实验目的二、实验环境三、实验内容3.0.glance 概述3.1.在控制端安装镜像服务 glance3.2.在 keystone 上面注册 glance3.3.安装 glance 相关软件3.4.同步 glance 数据库3.5.启动 glance 镜像服务3.6.检查确认 glance 安装正确总结一、实验目的 熟悉Linux基本服务配…

pandas 保存csv_数据分析--Part 5:Python-Pandas数据分析库

(接上篇)八、pandas数据分析库Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些。pandas帮助填补了这⼀空⽩,使您能够在Python中执⾏整个数据分析⼯作流程,⽽不必切换到更特定于领域的语⾔&…

【通信协议及编码】实验4:MFC框架创建一个FTP和一个通用浏览器

文章目录一、实验目的二、实验环境三、实验内容一、实验目的 掌握MFC Win32项目的创建方法创建一个Internet会话以及建立与FTP服务器的连接;用MFC应用程序向导创建文档/视图结构的框架程序;掌握CHtmlView类、CToolBarCtrl类、CReBar类等的用法。 二、实…

usb 进入suspend_USB的挂起和唤醒 (Suspend and Resume)

USB协议的第9章讲到USB可见设备状态[Universal Serial Bus Specification, Section 9.1.1, Pg 239],分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可…