OpenStack简介
OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集(IaaS)。其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云提供可扩展的、灵活的云计算。
OpenStack主要包含以下几个组件,各个组件的功能如下,其中Nova,Keyston,Neutron,Glance,DashBoard为必须装的组件,其余可以选择性安装,图为OpenStack生态系统。
- Nova 计算管理服务,支撑虚拟机运行
- Keystone 提供所有组件的认证
- Neutron 提供网络支持
- Glance 提供给镜像服务
- DashBoard 提供WEB管理界面服务
- Swift 提供对象存储
- Cinder 提供扩展硬盘给nova
- Ceilometer 监控cinder,neutron,nova,glance运行并计量
- Heat 支持云平台资源自动部署,集群服务

OpenStack安装配置
由于OpenStack的各个模块都需要通过KeyStone来进行认证,所以在配置安装OpenStack过程中需要主要,安装其他模块之前必须先进行安装KeyStone模块,本次安装步骤如下:
- 配置认证服务KeyStone
- 配置镜像服务Glance
- 配置计算服务Nova
- 配置网络服务Neutron
- 配置Web管理服务DashBoard
配置认证服务KeyStone
主要分为以下几步
- 安装配置认证服务
- 创建用户、租户和角色
安装配置认证服务
KeyStone只需要在controller上面进行配置,执行yum指令即可安装,安装成功后需要进行数据库相关配置,还需要对相关权限进行配置
- 安装KeyStone
yum install -y openstack-keystone python-opnstackclient

- 修改配置文件设置数据库
openstack-config --set /etc/keystone/keystone.conf database connection mysql://keystone:000000@controller/keystone

- 配置数据库用户
[root@controller ~]# mysql -u root -p000000
MariaDB [(none)]> create database keystone;
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by '000000';
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by '000000';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

- 为认证服务创建数据库表
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

- 定义配置授权令牌
[root@controller ~]# ADMIN_TOKEN=$(openssl rand -hex 10)
[root@controller ~]# echo $ADMIN_TOKEN
3a4756d6a595a5d6794c
[root@controller ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

- 相关权限配置
[root@controller ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
[root@controller ~]# chown -R keystone:keystone /etc/keystone/ssl
[root@controller ~]# chmod -R o-rwx /etc/keystone/ssl

-
启动KeyStone服务并设置自启动
[root@controller ~]# systemctl restart openstack-keystone
[root@controller ~]# systemctl enable openstack-keystone -
创建计划任务并定期执行
[root@controller ~]# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone
[root@controller ~]# crontab -l -u keystone
@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1
创建用户、租户和角色
- 配置环境变量,编辑admin-openrc.sh文件,并写入以下几句,保存后执行
[root@controller ~]# vi admin-openrc.sh
export OS_TOKEN=3a4756d6a595a5d6794c
export OS_URL=http://controller:35357/v3
export OS_USERNAME=admin
export OS_PASSWORD=000000
export OS_AUTH_URL=http://controller:35357/v3
export OS_PROJECT_NAME=admin
export OS_IDENTITY_API_VERSION=3
[root@controller ~]# source admin-openrc.sh

- 通过openstackclient创建服务及对应的endpoint
[root@controller ~]# openstack
(openstack) service create --name keystone --description "Openstack Identity" identity
(openstack) endpoint create --region RegionOne identity public http://controller:5000/v3
(openstack) endpoint create --region RegionOne identity admin http://controller:35357/v3
(openstack) endpoint create --region RegionOne identity internal http://controller:35357/v3

- 创建admin相关项目、用户、角色
(openstack) project create --domain default --description "Admin Project" admin
(openstack) user create --domain default --password 000000 --email admin@localhost admin
(openstack) role create admin
(openstack) role add --project admin --user admin admin

- 创建demo相关项目、用户、角色
(openstack) project create --domain default --description "Demo Project" demo
(openstack) user create --domain default --password 000000 demo
(openstack) role create demo
(openstack) role add --project demo --user demo user


- 创建service相关项目、用户、角色
(openstack) project create --domain default --description="Service Project" service

验证认证服务
- 重置环境变量并获取token
[root@controller ~]# unset OS_TOKEN
[root@controller ~]# unset OS_URL
[root@controller ~]# openstack token issue

配置镜像服务Glance
Glance镜像服务实现发现、注册、获取虚拟机镜像和镜像元数据,镜像数据支持存储多种的存储系统,可以是简单文件系统、对象存储系统等。
Glance镜像服务是典型的C/S架构,Glance架构包括glance-CLIent、Glance、Glance Store。Glance包括主要包括REST API、数据库抽闲层(DAL)、域控制器(Glance Domain controller)、注册层(Registry Layer),Glance 使用集中数据库(Glance DB)在Glance各组件直接共享数据。
该过程仅需在controller节点布置。
- 下载安装Glance
[root@controller ~]# yum install openstack-glance -y - 修改相关配置文件,设置数据库连接以及keystone相关设置
openstack-config --set /etc/glance/glance-api.conf database connection mysql://glance:000000@controller/glance
openstack-config --set /etc/glance/glance-registry.conf database connection mysql://glance:000000@controller/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_plugin password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_id default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_id default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 000000
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_plugin password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_id default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_id default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password 000000
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
配置成功后两个文件均会多出以下几行


- 配置数据库相关权限及表
[root@controller ~]# mysql -u root -p000000
create database glance;
grant all privileges on glance.* to 'glance'@'localhost' identified by '000000';
grant all privileges on glance.* to 'glance'@'%' identified by '000000';
flush privileges;
exit
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance

-
建立相关用户
[root@controller ~]# openstack
(openstack) user create --password 000000 --email glance@localhost glance
(openstack) role add --project service --user glance admin
成功
-
建立endpoint
(openstack) service create --name glance --description="Openstack Image Service" image
(openstack) endpoint create --region RegionOne image public http://controller:9292
(openstack) endpoint create --region RegionOne image internal http://controller:9292
(openstack) endpoint create --region RegionOne image admin http://controller:9292

- 启动服务并设置自启动
[root@controller ~]# systemctl restart openstack-glance-api
[root@controller ~]# systemctl restart openstack-glance-registry
[root@controller ~]# systemctl enable openstack-glance-api
[root@controller ~]# systemctl enable openstack-glance-registry
-
上传镜像
[root@controller images]# openstack image create --disk-format qcow2 --container-format bare --public --file /opt/images/centos_65_x86_6420140327.qcow2 centos
上传成功
遇见问题
- 安装openstack-keystone的时候会报错,提示缺少python-zope-interface这个包,在阿里云、网易云镜像站均找不到这个包,最后通过关键字搜索python-zope-interface rpm找到了对应的包,放入epel文件夹并更新repodate文件,再次安装成功。




- 由于k版本后keystone client被openstack client所代替,所以如果yum的是python-keystoneclient,执行命令时候会出现如图所示告警,下载

- 在配置账户的时候出现很多问题,例如试验指导书里面给的环境变量是 OS_SERVICE_ENDPOINT和OS_SERVICE_TOKEN,但是帮助里面没有这个环境变量的用法,当我修改为OS_URL和OS_TOKEN的时候可以正常使用,可能是因为版本变更的问题吧。并且这里如果没有配置OS_URL和OS_TOKEN环境变量的话,报错的很多问题可能都不会指向OS_URL,可能会提示其他诸如
openstack could not determine a suitable url for the plugin
openstack The request you have made requires authentication,
还有一些其他的报错没有一一记录,总之,这两个环境变量很重要。

-
在配置环境变量的时候各参数一定要一致,如果地址末尾给的是v3,那么一定要将export OS_IDENTITY_API_VERSION的值设置成3,如果给的是v2.0,则这一项可以不填,因为默认的是2,不然会因为版本问题无法继续配置。
-
注意这里对于环境变量OS_URL和OS_TOKEN一定要重置,否则会提示404未找到等

网友评论