3.2 KeyStone服务部署

系列 - OpenStack云平台部署
目录
摘要
在 OpenStack 的各个服务中,KeyStone 扮演着核心的身份认证角色。本节我们将部署 KeyStone 服务,为整个云平台建立起统一的“通行证”机制。
实验架构

- 虚拟机1:控制节点
- 操作系统: CentOS 7.9
- 配置: 4 CPU,40GB+ 硬盘,8GB 内存
- 角色: 控制节点、网络节点和对象存储节点
- 虚拟机2:计算节点
- 操作系统: CentOS 7.9
- 配置: 2 CPU,40GB+ 硬盘,4GB 内存
- 角色: 计算节点、网络节点、对象存储和块存储节点
KeyStone 组件简介

假如名为 Alice 的用户想要在 OpenStack 平台上创建虚拟机,她需要先向 KeyStone 发送账号和密码进行 身份验证。KeyStone 通过验证后,会给用户 Alice 返回 证书(令牌/Token) 和访问具体服务的 端点(Endpoint),接下来用户携带证书通过端点去访问目标服务……
提示:什么是 Endpoint?
端点(Endpoint)本质上就是一个网络访问地址(URL)。在 OpenStack 中,不同的服务(如计算、镜像等)都会在 KeyStone 中注册自己的 Endpoint,方便其他组件或用户找到并调用它们。

实验过程
1. 数据库创建和授权
在安装配置 KeyStone 前,需要先在 MariaDB 中为其创建专属数据库,并进行相应的权限配置。
连接到数据库服务器:
以 root 用户身份连接,输入在环境准备阶段设置的 MariaDB 密码。
mysql -u root -p

创建 keystone 数据库:
CREATE DATABASE keystone;

为 keystone 数据库授权:
执行以下命令,授予 keystone 用户相关权限:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';

命令解释
-
GRANT ALL PRIVILEGES- 意思是:授予所有权限。
- 也就是赋予增、删、改、查、建表、删表等几乎所有的操作能力。
-
ON keystone.*- 意思是:把权限作用在哪个地方?
- 第一个
keystone:代表是名为keystone的数据库。 .*:代表这个数据库里的所有表。
-
TO 'keystone'@'%'- 意思是:把权限给谁?
- 第二个
'keystone':代表数据库系统的用户名。 @'%':这是一个安全限制,意思是“该用户能从所有网络位置访问”。
-
IDENTIFIED BY 'keystone'- 意思是:验证身份的密码是什么?
- 第三个
'keystone':代表这个用户的密码。(在实验环境中,为了好记,通常把密码设置得和组件名字一样;在企业生产环境,这里会是一串复杂的乱码密码)。 - 特殊动作:在 MariaDB 中,如果这个用户之前不存在,加上这条
IDENTIFIED BY语句,系统会自动创建这个用户并同时设置好密码。
退出数据库:
exit

2. 安装并配置 KeyStone 组件
安装 keystone 相关软件包:
yum install openstack-keystone httpd mod_wsgi -y
修改配置文件 /etc/keystone/keystone.conf:
编辑配置文件,在相应的段落中添加或修改内容以完成配置。
在 [database] 标签下,配置数据库访问路径:
[database]
# ...
connection = mysql+pymysql://keystone:keystone@controller/keystone
在 [token] 标签下,配置 Fernet 认证的令牌提供者:
[token]
# ...
provider = fernet
同步认证服务数据库:
初始化 KeyStone 数据库表结构:
su -s /bin/sh -c "keystone-manage db_sync" keystone
验证数据库表:
检查同步是否成功,如果在返回的结果中看到了相应的表,则说明同步完成。
mysql -u keystone -p keystone -e "use keystone; show tables;"
