接上一篇博客内容,本篇需要完成分别在控制、计算节点上安装openstack各组件软件包,并在控制节点的数据库中完成keystone、glance、nova、placement、neutron等组件数据库、组件用户的初始化创建,最终完成keystone组件的完全安装。
一、安装各组件软件包
因为这些软件包的安装需要从网上下载,所以建议搭建时先行统一下载安装,在后面再进行分别配置部署,当然也可以选择需要安装配置对应组件时再下载安装。
1、控制节点上安装软件包
#install keystone
yum install openstack-keystone httpd mod_wsgi -y
#install glance
yum install -y openstack-glance
#install nova
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
#install neutron
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
#install dashboard
yum install -y openstack-dashboard
2、计算节点上安装软件包
#install nova
yum install openstack-nova-compute -y
#install neutron
yum install openstack-neutron-linuxbridge ebtables ipset -y
二、控制节点数据库中统一配置所需组件的数据库信息
创建keystone、glance、nova、placement、neutron组件所需的数据库及组件用户
根据前面约定,组件数据库用户名与密码一致。
#keystone database
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
#glance database
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
#nova database
CREATE DATABASE nova_api;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova';
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'placement';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'placement';
#neutron database
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';
三、完成keystone组件安装
1、流程一:配置keystone组件的数据库及token信息
vi /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:keystone@controller/keystone
[token]
provider = fernet
2、流程二:同步数据库
使用keystone用户将用户表结构信息写入mysql的keystone数据库中
su -s /bin/sh -c "keystone-manage db_sync" keystone
验证数据库同步效果
mysql -u keystone -pkeystone -e "use keystone;show tables;"
3、初始化Fernet密钥存储库及配置引导身份服务
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
#随机生成admin的密码
openssl rand -hex 10
516fd5f1ccfd675c50e0
因为keystone是认证服务完成用户认证与服务鉴权功能是其关键功能,但是目前keystone并没有创建用户,可是下面的步骤却需要使用keystone认证后才能使用,所以需要为keystone默认的admin用户生成一个随机的安全密码,这个功能可以通过openssl解决。
在Queens发布之前,keystone需要在两个独立的端口上运行,以适应Identity v2 API,它通常在端口35357上运行单独的仅管理服务。通过删除v2 API,keystone可以在同一端口上运行所有接口。
引导身份服务就相当于同时创建keystone服务实体与endpoint服务端点,以前的openstack安装过程中需要四步才能完成,现在合并为一条语句即可。
keystone-manage bootstrap --bootstrap-password 516fd5f1ccfd675c50e0 \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上。对实例而言,公共API网络为了让顾客管理他们自己的云在互联网上是可见的。管理API网络在管理云基础设施的组织中操作也是有所限制的。内部API网络可能会被限制在包含OpenStack服务的主机上。此外,OpenStack支持可伸缩性的多区域。为了简单起见,本指南为所有端点变种和默认``RegionOne``区域都使用管理网络。
4、配置Apache HTTP服务器
编辑/etc/httpd/conf/httpd.conf
文件并配置ServerName
引用控制器节点的 选项:
ServerName controller
创建/usr/share/keystone/wsgi-keystone.conf
文件的链接:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
/usr/share/keystone/wsgi-keystone.conf
文件内容Listen 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
LimitRequestBody 114688
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone.log
CustomLog /var/log/httpd/keystone_access.log combined
Require all granted
Order allow,deny
Allow from all
Alias /identity /usr/bin/keystone-wsgi-public
SetHandler wsgi-script
Options +ExecCGI
WSGIProcessGroup keystone-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
systemctl enable httpd.service
systemctl start httpd.service
5、配置环境变量
默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。你必须使用:doc:keystone-install 章节中为身份认证服务创建的临时身份验证令牌用来初始化的服务实体和API端点。
你必须使用``–os-token``参数将认证令牌的值传递给:command:openstack 命令。类似的,你必须使用``–os-url`` 参数将身份认证服务的 URL传递给 openstack 命令或者设置OS_URL环境变量。本指南使用环境变量以缩短命令行的长度。
export OS_USERNAME=admin
export OS_PASSWORD=516fd5f1ccfd675c50e0
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
6、验证keystone安装
openstack token issue
只要能够生成tokey就说明keystone已经安装成功了。
7、配置域、项目、用户及角色
Identity服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。
keystone的默认域为default,我们可以创建一个新的域来保存用户项目及用户。
首先openstack其它的服务组件都需要注册在default域的service项目中,所以先创建一个管理员service项目
openstack project create --domain default --description "Service Project" service
新建其它域
openstack domain create --description "An Example Domain" example
#非管理员项目
openstack project create --domain default --description "Demo Project" myproject
#创建非管理员用户
openstack user create --domain default --password-prompt myuser
#创建角色
openstack role create myrole
#引用角色
openstack role add --project myproject --user myuser myrole
8、生成用户环境文件
vi myuser.rc
export OS_USERNAME=myuser
export OS_PASSWORD='myuser'
export PS1='[\u@\h \W(keystone_myuser)]\$ '
export OS_AUTH_URL=http://controller:5000/v3
export OS_PROJECT_NAME=myproject
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
验证通过myuser获取token
openstack token issue
生成admin用户的环境变量文件
[root@controller ~(keystone_admin)]# cat admin.openrc
export OS_USERNAME=admin
export OS_PASSWORD='516fd5f1ccfd675c50e0'
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_AUTH_URL=http://controller:5000/v3
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
source admin.openrc
三、安装keystone总结
从keystone的v3版开始管理与业务端口都合并为5000,并且无需单独注册keystone业务与单独创建服务端点,通过引导身份服务一条命令即可完成注册业务及创建public、internal、admin三个服务端点,每个组件安装均需要在keystone注册自己并创建public、internal、admin服务端点。
总结后面的服务组件安装如下流程,由于前面把软件包、数据库创建基础操作都做完了,后面安装时直接配置组件的配置文件即可,在配置文件中首先完成1、数据库连接的配置修改,让组件可以连接数据库;2、同步组件数据库信息,将表结构信息写入空库3、完成组件在keystone上的注册配置,每个组件都要在keystone上注册服务与服务端点4、完成组件与其它配置比如与rabbitmq的交互等。