云计算部署实战Part3 - 安装Keystone认证服务
【实验目的】
掌握搭建计算节点软件和环境
熟练掌握Linux命令(vi、tar、mv等等)的使用
掌握VMWare、XShell等客户端的使用
【实验环境】
内存:至少4G
硬盘:至少空余40G
操作系统: 64位 Windows系统。
【实验资源】
XShell
CentOS 7.4系统镜像
VMWare WorkStation Pro
Openstack源
【实验资源】
链接:https://pan.baidu.com/s/1nIUP6MelSyKt0P8dsYVjNQ
提取码:1234
【实验步骤】
1.使用Root用户登录控制节点(Controller)。以下步骤都是在控制节点执行。
2.连接 Mariadb,进入数据库命令行,输入密码123456。
mysql -u root –p
结果:
3.【数据库命令行】创建一个名为keystone的库。
命令:create database keystone;
结果:
4.【数据库命令行】创建名为 keystone,密码为KEYSTONE_DBPASS 的数据库用户,并授权访问 keystone 库。
命令:GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@‘localhost’
IDENTIFIED BY ‘KEYSTONE_DBPASS’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’
IDENTIFIED BY ‘KEYSTONE_DBPASS’;
结果:
5.查看keystone库,此时库中没有任何表(Table)。
命令:use keystone;
Show tables;
结果:
6.【数据库命令行】输入 exit; 退出数据库命令行。
命令:Exit;
结果:
-
安装keystone相关软件包。
命令:yum install openstack-keystone httpd mod_wsgi –y
结果:
-
备份 Keystone 的配置文件keystone.conf 为 keystone.conf.bak。
命令:cp /etc/keystone/keystone.conf{,.bak}
结果:
-
清除 Keystone 配置文件的注释
命令:grep -Ev ‘^$|#’ /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf
结果:
-
安装openstack-utils
命令:yum install openstack-utils –y
结果:
11.配置 Keystone 的admin_token,数据库连接,token provider。注意替换你的学号。
命令:openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller0415 /keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
结果:
-
使用 MD5 来校验配置文件,看输出是否与下面代码吻合。
命令:md5sum /etc/keystone/keystone.conf
结果:
-
执行同步数据库
命令:mysql –uroot-p;
Use keystone;
Show tables;
结果:
-
初始化 fernet。
命令:cd /etc/keystone/
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
结果:
-
追加 Apache (httpd)的配置,注意替换你的学号。这里主要是增加ServerName的配置。
命令:echo “ServerName controller0415” >>/etc/httpd/conf/httpd.conf
结果: echo “ServerName controller0415” >>/etc/httpd/conf/httpd.conf
-
增加一个Apache的虚拟主机(VirtualHost)配置,keystone-public运行在5000端口,keystone-admin运行在35357端口。
命令:vi /etc/httpd/conf.d/wsgi-keystone.conf
结果:
输入:Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
结果: ![在这里插入图片描述](https://img-blog.csdnimg.cn/08a0f29b7dda440188733a14b2c87683.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAZmx5YmlyZDEyNTgx,size_13,color_FFFFFF,t_70,g_se,x_16)
-
校验wsgi-keystone.conf是否和以下校验码一致
命令:md5sum /etc/httpd/conf.d/wsgi-keystone.conf
结果:
-
启动Apache(httpd),并设置为开机启动。
命令:systemctl enable httpd.service
systemctl start httpd.service
结果:
-
设置 Keystone 的相关环境变量。注意替换为你的学号
命令:
export OS_TOKEN=ADMIN_TOKEN
export OS_URL=http://controller0415:35357/v3
export OS_IDENTITY_API_VERSION=3
结果:
-
创建1个 Keystone 的服务。命令正常创建会展示以下类似代码。
命令:openstack service create --name keystone --description “OpenStack Identity” identity
结果:
-
创建3个端点(endpoint)。注意替换为你的学号。每行命令正常创建会展示以下类似代码
命令:openstack endpoint create --region RegionOne
identity public http://controller+你的学号:5000/v3
openstack endpoint create --region RegionOne
identity internal http://controller+你的学号:5000/v3
openstack endpoint create --region RegionOne
identity admin http://controller+你的学号:35357/v3
结果:
openstack endpoint create --region RegionOne
identity public http://controller0415:5000/v3
openstack endpoint create --region RegionOne
identity internal http://controller0415:5000/v3
openstack endpoint create --region RegionOne
identity admin http://controller0415:35357/v3
- 运行以下命令分别创建域default、项目admin、用户admin、角色admin。
命令:openstack domain create --description “Default Domain” default
openstack project create --domain default --description “Admin Project” admin
openstack user create --domain default --password ADMIN_PASS admin
openstack role create admin
结果:
-
查询刚创建的用户的ID
命令:openstack user list
结果:
-
复制上文的ID,关联项目admin,用户admin,角色admin。
命令:openstack role add --project admin --user <替换为用户ID> admin
结果:
-
移除步骤19设置的环境变量。
命令:unset OS_TOKEN
unset OS_URL
unset OS_IDENTITY_API_VERSION
结果:
-
创建一个设置环境变量的脚本,输入以下内容,注意替换为你的学号。
命令:vim /etc/keystone/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=ADMIN_PASS
export OS_AUTH_URL=http://controller+你的学号:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
保存退出。
- 查看token,可以多运行几次,查看 token id 是否更新。
命令:openstack token issue
结果:
问题1:增加一个Apache的虚拟主机(VirtualHost)配置,keystone-public运行在5000端口,keystone-admin运行在35357端口。
vi /etc/httpd/conf.d/wsgi-keystone.conf
配置文件不能用VMware会有格式问题
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
openstack endpoint create --region RegionOne
identity public http://controller0415:5000/v3
问题2
弄配置文件不当时,或者关机后报错401问题?
再一次配置了环境变量
问题3
发生系统报错时500?一直找不到错误步骤,经过老师的操作后,通过查询日志,发现是初始化 fernet的问题,就再一次初始化了fernet
执行下面代码
cd /etc/keystone/
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
问题4
以为409是个报错?
结果只是一个警告,有冲突但是我看并没有叫我改,就执行下一步了。暂时忽略。