首页 > 其他分享 >安装OpenStack认证服务组件KeyStone--笔记

安装OpenStack认证服务组件KeyStone--笔记

时间:2024-03-23 21:24:47浏览次数:21  
标签:-- 数据库 token memcache keystone KeyStone conf OpenStack

     以下笔记根据腾讯专家讲解的《云计算与OpenStack》网络课程,地址:1 KeyStone 简介_哔哩哔哩_bilibili,整理并亲手操作,特此感谢。

 

OpenStack框架图

 

KeyStone简介

    早期的OpenStack版本,并没有KeyStone身份认证模块。用户、消息、API调用的认证都是放在Nova模块中的。随着OpenStack中加入了各种各样的模块,安全认证涉及的面越来越广泛,如用户登录、用户消息传递、服务注册等。处理这些不同的安全认证变得越来越复杂,所以就需要一个专门的模块来负责安全认证,于是KeyStone就产生了。

    KeyStone为整个OpenStack提供了安全认证服务,是必须首先安装也是OpenStack最关键的组件之一。

    其安装过程大致包括:

    1)安装和配置KeyStone数据库

    2)安装KeyStone

    3)通过配置文件配置KeyStone

    4)创建服务实体和API端点

    5)创建项目、用户和角色

 

安装和配置KeyStone数据库

(1)安装MySQL,使用以下命令:

 

sudo apt-get install mysql-server

 

安装过程中,需要设置root密码,例如设置为123456,安装完成可使用 

sudo service mysql status

查看MySQL服务器状态。

查看mysql服务状态

(2)使用数据库客户端以root用户连接到数据库中,命令如下:

mysql -u root -p

 此时需要输入root用户的密码。

root登陆mysql

 

(3)然后,创建KeyStone数据库,命令如下:

CREATE DATABASE keystone;
创建keystone数据库

 

(4)接着,为root用户授权,使其在keystone数据库中拥有全部的权限,.*表示全部权限,'username'@'localhost'中的username表示创建的数据库的用户名。KEYSTONE_DBPASS是需要指定的密码,要换成自己设置的密码,dtc123。命令如下:

GRANT ALL PRIVILEGES ON keystone.* TO 'username'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
 

对用户control授予keystone数据库的全部权限

(5)接着,希望用户control能够从任何主机连接到本机的keystone数据库的全部权限,命令如下,其中%表示主机部分:

GRANT ALL PRIVILEGES ON keyston.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

最后,执行FLUSH PRIVILEGES;使更改的权限生效。

 

以上步骤完成了keystone数据库的安装和授权,接下来就可以安装keystone了。

 

安装KeyStone

KeyStone服务的监听端口是5000和35357,配置Apache Http服务监听这两个端口。为避免端口冲突,在Ubuntu上禁止KeyStone开机自动启动。

首先切换到root用户, sudo su root,然后,命令如下:

echo "manual" > /etc/init/keystone.override 
 

安装与KeyStone相关的软件包,命令如下:

sudo apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache

这里,python-openstackclient是使用Python开发的openstack的客户端工具,可以用这个工具连接和测试keystone的服务。apache2是安装apache的http服务器。libapache2-mod-wsgi 指的是,而 wsgi指的是 Web Server Gateway Interface,是Python应用程序与Web服务器之间的一种接口,定义了一套接口来实现服务器与应用端的通信规范。
     此外,memcached是高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。通过在内存中缓存数据和对象来减少读取数据库的次数,提高动态、数据库驱动网站的速度。memcached是基于存储键值对的Hashmap。其守护进程daemon是用C语言写的,但是客户端可用任何语言来写,并通过memcached协议与守护进程通信。      python-memcache是使用Python语言开发的memcached内存守护进程通信的接口程序。 安装keystone和apache及memcache

 

修改KeyStone的配置keystone.conf

原始的keystone.conf的部分内容,带有很多注释的行

由于keystone.conf中有大量的注释,不方便查找和修改配置。

因此,先将以 # 开头的注释的行删掉。

首先做一个文件备份。然后,打开备份文件,再过滤掉#开头的行,把内容写入 keystone.conf文件。

sudo su root
mv keystone.conf keystone.conf.bak cat keystone.conf.bak | grep -v "^#" > keystone.conf

 

 

(1)随机生成一个16进制的token,Token(令牌)是文本形式的字母-数字字符串,一种用户身份验证机制,用户在访问受保护的服务资源时,仅仅需要提供token,不需要提供用户名和密码。OpenSSL是一个强大的套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议。

openssl rand -hex 10
 用openssl生成16进制token

 此处生成的token为 40159ae1ca859cc7c9a8,下一步要用到。

 

(2)修改default部分,配置初始的令牌管理,ADMIN_TOKEN就是上一步生成的16进制的token。

admin_token=ADMIN_TOKEN 
设置admin_token

(3)修改 database 部分,配置数据库的连接

connection=mysql://keystone:KEYSTONE_DBPASS@hostname/keystone

这里,第一个keystone是前面创建的数据库的用户名,KEYSTONE_DBPASS是keystone数据库的root密码,本文密码是dtc123,hostname指的是主机名称,这里将虚拟机命名为localhost,即控制节点的意思。最后一个keystone是数据库名称。

测试本机能否ping通

配置数据库连接

(4) 修改 memcache 部分,配置memcache 服务。11211是memcache服务器的默认端口

servers=localhost:11211

server 运行在控制节点上,也就是本地节点上。 本文所有的操作都是在控制节点上进行的。

设置memcache服务端口

如果想查看memcache是否启动,可以通过查看端口11211是否处于监听的状态。

查看memcache的端口11211是否处于监听状态

 

(5)修改token部分。配置UUID令牌的提供者和memcached的持久化驱动

provider=keystone.token.providers.uuid.Provider
driver=keystone.token.persistence.backends.memcache.Token

keystone支持UUID和PKI的令牌提供者。UUID是通用唯一识别码,让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来辨别咨询的指定。每个人都可以建立与其他人不冲突与的UUID。

keystone.token.persistence.backends.memcache_pool.Token 基于memcached池进行令牌的持久化存储,如果使用eventlet(用Python编写的为高并发的网络编程而涉及的库)来部署keystone建议选此值。

keystone.token.persistence.backends.sql.Token:默认配置,使用基于SQL的信息持久化引擎。

keystone.token.persistence.backends.memcache.Token 使用memcached服务器作为后端驱动的持久化存储,使用apachemod_wsgi选此值(本文安装的方式是apache2 libapache2-mod-wsgi)。

配置token部分UUID和持久化驱动

(6)在  revoke 部分,配置SQL的撤回驱动

driver=keystone.contrib.revoke.backends.sql.Revoke
在revoke部分配置数据库撤回驱动

(7)为了方便做问题诊断,在 DEFAULT 部分,配置详细的日志输出。

verbose=True
verbose=True详细日志

(8)以root的身份为keystone数据库填充数据,最后一个 keystone 表示使用数据库。

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

 

配置Apache HTTP Server

(1)编辑 /etc/apache2/apache2.conf,配置 ServerName 为控制节点

ServerName control

 

(2)创建 /etc/apache2/sites-available/wsgi-keystone.conf,并添加如下内容:

Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /var/www/cgi-bin/keystone/main
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    <IfVersion >= 2.4>
        ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    LogLevel info
    ErrorLog /var/log/apache2/keystone-error.log
    CustomLog /var/log/apache2/keystone-access.log combined
</VirtualHost>

 

 (3)启用认证服务的虚拟主机

ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled

 

(4)为WSGI组件创建目录结构

mkdir -p /var/www/cgi-bin/keystone

 

(5)拷贝WSGI组件到创建好的目录下

curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/keystone.py?h=stable/kilo | tee /var/www/cgi-bin/keystone/main /var/www/cgi-bin/keystone/admin

 

(6)设置目录和文件的权限

chown -R keystone:keystone /var/www/cgi-bin/keystone
chmod 755  /var/www/cgi-bin/keystone

 

(7)重启 apache http server

service apache2 restart

 

(8)删除 Ubuntu 默认创建的SQLite 数据库

rm -f /var/lib/keystone/keystone.db

 

 

配置服务实体和API端点

配置项目、用户和角色

校验安装

创建OpenStack客户端脚本

 

标签:--,数据库,token,memcache,keystone,KeyStone,conf,OpenStack
From: https://www.cnblogs.com/heubj/p/18087828

相关文章

  • P10268 符卡对决 题解
    题目链接:符卡对决视频讲解待上传经典的题目,对于这个\([l,r]\)询问,我们先关注期望怎么算。考虑方案总数和有效的和,方案总数显然有\(\dfrac{n\times(n-1)}{2}\),现在还需要关注有效和,我们关注对于若干个有效的关系用一个比较形象的数据结构表示-----并查集,那么两个卡牌之间有......
  • 算法模板 v1.10.3.20240323
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......
  • leetcode684冗余连接(模板题,理解背过就行)
    leetcode684冗余连接(模板题,理解背过就行)考了图的连通,笔试碰见了还好老底没忘,不然就尬住了,总结一下。一、题目树可以看成是一个连通且无环的无向图。给定往一棵n个节点(节点值1~n)的树中添加一条边后的图。添加的边的两个顶点包含在1到n中间,且这条附加的边不属......
  • python中sort的key关键字解释
    在Python中,sort() 方法是用于对列表进行排序的函数。sort() 方法可以接受一个关键字参数 key,该参数允许你指定一个函数,用于在排序过程中生成排序的依据。这个关键字参数的作用是告诉 sort() 方法如何理解列表中的元素应该被排序。下面是对 sort() 方法的 key 参数的讲......
  • 在pycharm中运行程序时总是以tests方式运行
    ##问题描述前两天在使用python写机器学习的算法时,有一个程序一直以Pythontests的方式运行,并且一直运行失败,截图如下:解决方法到设置中:File->Settings->Tools->PythonintegratedTools文件->设置->工具->python集成工具->默认测试运行程序......
  • 设备驱动-15.内核kmalloc/vmalloc及CMA内存介绍
    1kmalloc/vmalloc区别函数位置特性大小限制kmalloc物理内存映射区域物理地址虚拟地址均连续不能超过128Kkzalloc物理内存映射区域物理地址虚拟地址均连续不能超过128Kvmalloc虚拟内存映射区域虚拟地址连续,物理地址不一定连续无限制vzalloc虚拟内......
  • 基于Python代码的相关性热力图,VIF共线性诊断图及残差四图的使用及解释
    注:热力图和共线性诊断图易看易解释,这里不再阐述残差四图(ResidualsvsFittedPlot,NormalQ-QPlot,Scale-LocationPlot,Cook'sDistancePlot)各种现象的相关解释如下:ResidualsvsFittedPlot(残差与拟合值散点图):这个图用于帮助检验回归模型的线性关系假设。在这个图中,我......
  • 3.23
    写白银和螺纹钢的数据展示表 和价格可视化   ......
  • Win10彻底永久关闭自动更新
        win10系统的自动更新可能给我们带来很多困扰,尤其是对于安装了虚拟机的用户,可能导致原来用得很好的两个系统突然之间问题百出,例如虚拟机卡顿或网络不能连通,软件不能兼容,等等。有些问题比较明显,有些问题很隐晦,时有时无,降低用户使用效率。而仅仅通过windows设置来暂停或......
  • P3592 [POI2015] MYJ
    P3592[POI2015]MYJ要求总和最大,有两张思路:贪心和dp。稍微想一下,发现贪心思考量太大,考虑dp观察n的数据范围,以及转移方式,可以想到区间dp发现转移跟区间最小值有关,设\(f_{l,r,k}\)为区间\([l,r]\)中最小值不小于\(x\)的答案。转移枚举最小值的位置\(p\),\(f_{l,r,k}......