openstack认证服务

部署条件:
在安装openstack服务前,需要安装数据库mysql、消息队列、缓存memcached、etcd服务

一、安装并配置数据库
大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。

1)安装软件包

yum install mariadb mariadb-server python2-PyMySQL -y

2)创建并编辑 /etc/my.cnf.d/openstack.cnf
vi /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 //设置创建数据库时的默认字符集

在这里插入图片描述

(3) 设置开机自启并开启

systemctl start mariadb && systemctl enable mariadb

(4)验证有没有开启成功

netstat -anpt | grep 3306
在这里插入图片描述

(5)对数据库进行安全加固

mysql_secure_installation

操作如下:
回车键——y——密码——密码——y——n——y——y

二、安装并配置消息队列
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。
OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。
不过,大多数发行版本的OpenStack包支持特定的消息队列服务。
本实验安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。

1)安装软件包

yum install rabbitmq-server  -y

2)启动消息队列服务并将其配置为随系统启动

systemctl start rabbitmq-server && systemctl enable rabbitmq-server

3)使用此插件实现web管理

rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述

4)验证是否开启成功
netstat -anpt | grep 5672
在这里插入图片描述

注:当开启rabbitmq_management,15672端口才会工作
15672:管理端口
25672:server间内部通信口
5672: client端通信口

6)测试web页面
在浏览器中输入http://192.168.80.100:15672/
在这里插入图片描述

在这里插入图片描述

7)创建并添加openstack用户,其密码为abc123

rabbitmqctl add_user openstack abc123

8)给openstack用户配置写和读权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

在这里插入图片描述
9)验证
在这里插入图片描述

三、安装并配置memcached

认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。

1)安装软件包:

    yum install memcached python-memcached  -y

2)修改memcached配置文件

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

在这里插入图片描述

3)启动Memcached服务,并且配置它随机启动。

systemctl start memcached && systemctl enable memcached

4)查看memcached服务是否在工作

netstat -anpt | grep 11211

在这里插入图片描述

四、Etcd服务
OpenStack服务可以使用Etcd,这是一种分布式可靠的键值存储,用于分布式键锁定、存储配置、跟踪服务实时性和其他场景。

1)安装软件包

yum install etcd -y

2)修改etcd配置文件
vi /etc/etcd/etcd.conf
修改以下内容:

#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.80.100:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.80.100:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.80.100:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.80.100:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.80.100:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"

:%s /localhost/192.168.80.100/g    将里面的localhost替换成192.168.80.100

grep -v “^#” /etc/etcd/etcd.conf
在这里插入图片描述

3)开机自启并启动
systemctl start etcd && systemctl enable etcd

五、安装和配置openstack身份认证服务(代码名称keystone)
认证服务为其他openstack服务提供验证和授权服务,为所有服务提供终端目录。
其他openstack服务降身份认证服务当作通用统一API来使用。

出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求并使用Memcached存储tokens而不用SQL数据库。

注: Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。

部署条件:
在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌。

1、创建数据库
1)用数据库连接客户端以 root 用户连接到数据库服务器
mysql -u root -pabc123 //进入数据库

2)创建 keystone 数据库

CREATE DATABASE keystone;

3)对keystone数据库授予恰当的权限

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'abc123'; 
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'abc123';

4)刷新权限

flush  privileges;

5)退出

quit

2、安装并配置keystone组件
1)安装软件包

yum install openstack-keystone httpd mod_wsgi  -y

注:mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。缺省情况下,Kestone服务仍然监听这些端口。然而,可以手动禁用keystone服务。

2)修改keystore配置文件

cd /etc/keystone/

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

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

vi keystone.conf
[database]
connection = mysql+pymysql://keystone:abc123@controller/keystone 
//配置数据库访问
 
[token]
provider = fernet    //配置Fernet UUID令牌的提供者
 
保存退出
 
3)初始化身份认证服务的数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone

在这里插入图片描述

4)初始化Fernet keys:

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

5)引导身份服务:

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

3、配置Apache HTTP服务器
1)修改httpd配置文件
vi /etc/httpd/conf/httpd.conf
修改以下内容:
ServerName controller

2)创建到/usr/share/keystone/wsgi-keystone的链接配置文件

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

3)开机自启并启动

systemctl start httpd && systemctl enable httpd

4)查看开启情况

netstat -anpt | grep http 

在这里插入图片描述

注:
35357:用于管理,只有admin_role可以使用
5000:用于业务,普通用户使用

5)配置管理帐户

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 版本

6)查看全局变量是否生效

env|grep ^OS

在这里插入图片描述

4、创建域、项目、用户和角色
身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合

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

1)创建service项目

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

在这里插入图片描述

常规(非管理)任务应该使用非特权项目和用户。作为示例,本实验创建演示项目和用户
2)创建demo项目

openstack project create --domain default \
--description "Demo Project" demo

在这里插入图片描述

3)创建demo用户

openstack user create --domain default \
--password-prompt demo

在这里插入图片描述

4)创建user角色

openstack role create user

在这里插入图片描述

5)将user角色添加到demo项目和demo用户中

openstack role add --project demo --user demo user

注:此命令不提供输出。

5、验证操作
在安装其他服务之前,验证身份服务的操作。
在控制节点上执行以下操作:
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
密码:abc123

在这里插入图片描述

3)作为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

密码:abc123
在这里插入图片描述

6、创建OpenStack客户端环境脚本
为admin和demo项目及用户创建客户端环境脚本。本实验的未来部分将引用这些脚本,以加载用于客户端操作的适当凭证。
1)创建并编辑admin-openrc文件

cd     //到/root目下创建
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

3)加载admin-openrc文件,用标识服务的位置、管理项目和用户凭据填充环境变量

. admin-openrc

4)请求认证令牌

openstack token issue

在这里插入图片描述
到此,认证服务完成。

猜你喜欢

转载自blog.csdn.net/qeeezz11224/article/details/85629484