OpenStack之keystone(身份认证服务)

安装部署openstack

一、准备基础环境
1、环境:
CPU处理器要支持虚拟化
内存2GB
磁盘空间50GB
网络两块网卡,一块外网,一块内网
3台虚拟机:
192.168.80.103 controller(控制节点)
192.168.80.104 compute01(计算节点)
192.168.80.102 客户端

2、域名解析和关闭防火墙(所有机器上都做)
关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service

关闭SElinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
setenforce 0

vi /etc/hosts //配置域名解析
192.168.80.100 controller
192.168.80.101 compute01

hostnamectl set-hostname controller
hostnamectl set-hostname compute01

3、控制节点服务器:
(1)安装软件包:
yum install chrony -y
(2)编辑 /etc/chrony.conf 文件,按照你环境的要求,对下面的键进行添加,末尾新增:
server NTP_SERVER iburst
注:使用NTP服务器的主机名或者IP地址替换 NTP_SERVER 。配置支持设置多个 server 值。
allow 192.168.80.0/24
为了允许其他节点可以连接到控制节点的 chrony 后台进程
systemctl enable chronyd.service
systemctl start chronyd.service
(3)其它节点服务器
yum install chrony -y
vi /etc/chrony.conf
server controller iburst

systemctl enable chronyd.service
systemctl start chronyd.service

验证:
在控制节点上执行以下命令:
chronyc sources
注:在 Name/IP address 列的内容应显示NTP服务器的主机名或者IP地址。在 S 列的内容应该在NTP服务目前同步的上游服务器前显示 *。

在所有其他节点执行相同命令:chronyc sources

二、安装openstack库
在CentOS中, extras仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用extras仓库,因此可以直接安装用于启用OpenStack仓库的包。

yum install -y centos-release-openstack-queens.noarch //安装和openstack对应版本相关的仓库
yum -y upgrade //进行系统整体升级,升级完成后要重新启动操作系统

安装 OpenStack 客户端:
yum install python-openstackclient
init 6 //重启系统

1、安装数据库
大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。
安装软件包:
yum install mariadb mariadb-server python2-PyMySQL -y

vi /etc/my.cnf.d/openstack.cnf //创建并编辑该/etc/my.cnf.d/openstack.cnf文件,添加以下内容:
[mysqld]
bind-address = 192.168.80.100 //设置监听地址
default-storage-engine = innodb //设置默认存储引擎
innodb_file_per_table = on //设置独享表空间
max_connections = 4096 //设置最大连接数
collation-server = utf8_general_ci //设置校对规则
character-set-server = utf8 //设置创建数据库时的默认字符集

systemctl enable mariadb
systemctl start mariadb
netstat -anpt | grep 3306

mysql_secure_installation 对数据库进行安全加固,操作如下:
回车——y——123——123——y——n——y——y

2、消息队列
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务。

安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。

安装包:
yum install rabbitmq-server -y

启动消息队列服务并将其配置为随系统启动:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

rabbitmq-plugins enable rabbitmq_management
//使用此插件实现web管理,如下图
OpenStack之keystone(身份认证服务)_第1张图片
netstat -anpt | grep 5672 //当开启rabbitmq_management,15672端口才会工作
注:15672:管理端口 ;25672:server间内部通信口 ;5672: client端通信口
在这里插入图片描述
测试:在浏览器中http://192.168.80.103:15672/
OpenStack之keystone(身份认证服务)_第2张图片
用户和密码都是:guest

在字符端中:
rabbitmqctl add_user openstack abc123 //创建并添加openstack用户,密码abc123
rabbitmqctl set_permissions openstack “." ".” “.*” //给openstack用户配置写和读权限
在这里插入图片描述
OpenStack之keystone(身份认证服务)_第3张图片
3、安装Memcached服务
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。

安装软件包:
yum install memcached python-memcached -y

vi /etc/sysconfig/memcached //修改成以下内容:
OPTIONS="-l 127.0.0.1,::1,controller"

启动Memcached服务,并且配置它随机启动。
systemctl enable memcached.service
systemctl start memcached.service

netstat -anpt | grep 11211 查看11211是否在工作
在这里插入图片描述
4、安装etcd服务
OpenStack服务可以使用Etcd,这是一种分布式的可靠键值存储,用于分布式键锁定、存储配置、跟踪服务生命周期和其他场景。
yum install etcd -y

vi /etc/etcd/etcd.conf //修改内容如下:
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS=“http://192.168.80.103:2380”
ETCD_LISTEN_CLIENT_URLS=“http://192.168.80.103:2379”
ETCD_NAME=“controller”
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS=“192.168.80.103:2380”
ETCD_ADVERTISE_CLIENT_URLS=“http://192.168.80.103:2379”
ETCD_INITIAL_CLUSTER=“controller=http://192.168.80.103:2380”
ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster-01”
ETCD_INITIAL_CLUSTER_STATE=“new”

systemctl enable etcd
systemctl start etcd

三、安装和配置openstack身份认证服务(代码名称keystone)
1.身份认证服务:为认证管理,授权管理和服务目录服务管理提供单点整合。其它OpenStack服务将身份认证服务当做通用统一API来使用。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求并使用Memcached存储tokens而不用SQL数据库。
注: Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。
先决条件:在配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。

用数据库连接客户端以 root 用户连接到数据库服务器
mysql -u root -p

创建 keystone 数据库
CREATE DATABASE keystone;

keystone数据库授予恰当的权限
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘localhost’ IDENTIFIED BY ‘abc123’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘abc123’;
flush privileges;
退出数据库

运行以下命令来安装包。
yum install openstack-keystone httpd mod_wsgi -y
注:mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。缺省情况下,Kestone服务仍然监听这些端口。然而,可以手动禁用keystone服务。

cd /etc/keystone/
cp keystone.conf keystone.conf.bak //备份一下,以免之后步骤出错,无法还原

egrep -v “#|$” keystone.conf.bak > keystone.conf 去掉以#开头的和空行

vi keystone.conf 修改keystore配置文件,修改以下内容:
[DEFAULT]
[database]
connection = mysql+pymysql://keystone:abc123@controller/keystone //定义初始管理令牌的值,使用刚生成的令牌值
[token]
provider = fernet //配置Fernet UUID令牌的提供者

初始化身份认证服务的数据库: su -s /bin/sh -c “keystone-manage db_sync” keystone
注:忽略输出中任何不推荐使用的信息。
OpenStack之keystone(身份认证服务)_第4张图片
初始化Fernet keys:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

引导身份服务:
keystone-manage bootstrap --bootstrap-password abc123
–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

2.配置 Apache HTTP 服务器
vi /etc/httpd/conf/httpd.conf
修改以下内容:
ServerName controller

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
//创建 /usr/share/keystone/wsgi-keystone.conf链接文件

systemctl enable httpd.service //设置为开机启动
systemctl start httpd.service //启动httpd服务
netstat -anpt | grep http //80 35357 5000 端口监听
注:35357:用于管理,只有admin_role可以使用
5000:用于业务,普通用户使用
在这里插入图片描述
3.创建服务实体和API端点
身份认证服务提供服务的目录和他们的位置。每个你添加到OpenStack环境中的服务在目录中需要一个 service 实体和一些 API 端点 。
先决条件:默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。必须使用为身份认证服务创建的临时身份验证令牌用来初始化的服务实体和API端点。
使用环境变量以缩短命令行的长度。

export OS_USERNAME=admin
export OS_PASSWORD=abc123 //管理员密码,之前设置的
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 //配置端点URL
export OS_IDENTITY_API_VERSION=3 // 配置认证 API 版本
env|grep ^OS //查看全局变量是否生效
OpenStack之keystone(身份认证服务)_第5张图片
4、创建域、项目、用户和角色
身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合

本实验使用一个service项目,该项目为添加到环境中的每个服务包含一个惟一的用户。

(1)创建service项目
openstack project create --domain default
–description “Service Project” service
OpenStack之keystone(身份认证服务)_第6张图片
(2)常规(非管理)任务应该使用无特权的项目和用户。
此处创建一个demo项目和用户
1)创建demo项目
openstack project create
–domain default
–description “Demo Project” demo
OpenStack之keystone(身份认证服务)_第7张图片
2)创建demo用户
openstack user create
–domain default
–password-prompt demo
OpenStack之keystone(身份认证服务)_第8张图片
3)创建user角色:
openstack role create user
OpenStack之keystone(身份认证服务)_第9张图片
4)添加 user角色到demo项目和用户:
openstack role add --project demo --user demo user
注:可以重复此过程来创建额外的项目和用户

(3)验证操作
在安装其他服务之前确认身份认证服务的操作。
注:在控制节点上执行以下操作。
1)取消临时OS_AUTH_URL和OS_PASSWORD环境变量
unset OS_AUTH_URL OS_PASSWORD

2)作为 admin 用户,请求认证令牌:
openstack --os-auth-url
http://controller:35357/v3
–os-project-domain-name default
–os-user-domain-name default
–os-project-name admin
–os-username admin token issue
OpenStack之keystone(身份认证服务)_第10张图片
(4)作为demo 用户,请求认证令牌:
openstack --os-auth-url http://controller:5000/v3
–os-project-domain-name default --os-user-domain-name default
–os-project-name demo --os-username demo token issue
OpenStack之keystone(身份认证服务)_第11张图片
注:这个命令使用demo 用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。

五、创建OpenStack客户端环境脚本
前面使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。

1、创建脚本
创建 admin 和 demo项目和用户创建客户端环境变量脚本。接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。
(1)创建openstack客户端环境脚本,编辑文件 admin-openrc 并添加如下内容:
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=abc123
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

(2)编辑文件 demo-openrc 并添加如下内容
vi demo-openrc //添加下面内容:
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=abc123
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

2、使用脚本
使用特定租户和用户运行客户端,可以在运行之前简单地加载相关客户端脚本。
(1)加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书:
. admin-openrc
(2)请求认证令牌:
openstack token issue
OpenStack之keystone(身份认证服务)_第12张图片
(3)加载demo-openrc文件来身份认证服务的环境变量位置和demo项目和用户证书:
. demo-openrc
(4)验证配置,请求认证令牌信息
openstack token issue
OpenStack之keystone(身份认证服务)_第13张图片
到此,身份认证服务keystone完成

你可能感兴趣的:(OpenStack之keystone(身份认证服务))