OpenStack安装部署之keystone&&Glance
2015-11-13 08:04
543 查看
一、基础准备工作
部署环境:CentOS 7 64
1、关闭本地iptables防火墙并设置开机不自启动
2、关闭本地selinux;设置主机计算机名称;本地主机名称和IP的解析
3、与时间服务器保持时间同步
4、安装第三方yum源
部署环境:CentOS 7 64
1、关闭本地iptables防火墙并设置开机不自启动
2、关闭本地selinux;设置主机计算机名称;本地主机名称和IP的解析
3、与时间服务器保持时间同步
[root@controller ~]# ntpdate 10.33.1.129 [root@controller ~]# crontab -e */2 * * * * /usr/sbin/ntpdate 10.33.1.129 &> /dev/null
4、安装第三方yum源
[root@controller ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm [root@controller ~]# rpm -ivh epel-release-7-5.noarch.rpm [root@controller ~]# yum -y install http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm[/code]
5、升级系统软件包并重新系统[root@controller ~]# yum upgrade [root@controller ~]# reboot
二、安装配置mariadb数据库
Openstack默认使用mysql,这里尝试使用MariaDB,它是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用Percona的XtraDB,MariaDB基于事务的Maria存储引擎,替换了MySQL的InnoDB储引擎。
1、安装并配置mariadb数据库[root@controller ~]# yum -y install mariadb mariadb-server MySQL-python [root@controller ~]# cp /etc/my.cnf /etc/my.cnf.bak [root@controller ~]# vim /etc/my.cnf.d/server.cnf
2、启动mariadb数据库
三、安装keyston用户认证组件
OpenStack的Identify服务(即Keystone)有两个主要功能
用户管理:实现用户认证及授权;
服务目录(Service catalog):所有可用服务的信息库,包含所有可用服务及其API endpoint路径;
1、安装配置Identity服务[root@controller ~]# yum -y install openstack-utils openstack-keystone python-keystoneclient
2、创建keystone数据库和授权用户,为keystone服务创建访问数据库的用户
也可以执行以下命令创建keystone数据库,其默认会创建一个keystone用户以访问此同名数据库,密码可以使用–pass选项指定。命令执行能自动检测本机是否安装mysql-server,并且会提醒用户选择,为root用户设定密码。
3、编辑keystone的主配置文件
使用MySQL做为数据存储池,并配置其使用正确的参数。[root@controller ~]# cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak [root@controller ~]# vim /etc/keystone/keystone.conf
在[database]段中,确保与mysql相关的内容类似如下,注意其中的密码为keystone用户访问MySQL服务器所使用的密码:connection=mysql://keystone:ksuser@controller/kspass # 语法格式为 mysql://[user]:[pass]@[primary IP]/[db name]
4、配置keystone的管理token
为了使用admin用户管理keystone,可以通过配置keystone的客户端使用SERVICE_TOKEN和SERVICE_ENDPOINT环境变量来连接至Keystone,建议使用openssl命令生成一串随机数据
接着启动keystone服务;查看进程启动的相关信息:
检查日志文件中有无错误提示:[root@controller ~]# grep Error /var/log/keystone/keystone.log
5、以管理员的身份初始化新生成的keystone数据库
6、设定Keystone为API endpoint
在Openstack中,服务(service)指的是计算(nova)、对象存储(Swift)或映像(image)等,而Horizon(web dashboard)依赖于Keystone registry中的API endpoint(某网络资源或服务的访问路径,通常表现为URL)来访问这些服务,包括Keystone自身。因此,这里需要将Keystone服务自身及访问路径(API endpoint)先加入到Keystone的registry中。
为上面新建的service添加endpoint。注意,其中的service_id的内容为上面service-create命令创建的service的id。
如果在前面没有关闭防火墙,还需要确保对tcp的5000和35357端口的请求能正常通过。例如,为iptables添加如下规则,记得测试完成后要保存规则至配置文件中。# iptables -A INPUT -p tcp -m multiport --dports 5000,35357 -j ACCEPT
7、 user、role及tenant
tenant是OpenStack的Keystone中的一个重要的术语,它相当于一个特定项目(project)或一个特定的组织(origaniztion)等,它实现了资源或identity对象的隔离。用户(user)在认证通过后即能访问资源,其通常会被直接关联至某tenant,因此看起来就像用户是包含于tenant中的。角色(role)是权限的窗口,其可用于快速为一组用户完成相同的授权操作。
keystone可通过两种方式完成用户认证,一种为token认证,一种为credential(如用户名和密码等信息)认证。前面的配置中,为Keystone的管理用户admin提供了token的认证方式,并以之完成了如前所述的服务创建等工作。事实上,Keystone的重要功能之一便是提供用户认证,但为了便于认证信息的管理,其通常基于credential的方式进行。风格统一起见,这里让admin用户基于后一种认证方式完成认证并执行管理工作,事实上,这也是Keystone服务配置的基本要求。
8、keystone子命令
keystone有许多子命令,分别用于实现keystone的各种对象管理,如用户创建、删除等。获取其帮助信息及子命令列表,可以使用-h选项,获取某子命令的使用帮助,则可以使用如下格式:# keystone help SUB_COMMAND
例如,要获取创建租客的使用tenant-create的使用帮助,可以使用如下命令:# keystone help tenant-create usage: keystone tenant-create --name <tenant-name> [--description <tenant-description>] [--enabled <true|false>] Create new tenant Optional arguments: --name <tenant-name> New tenant name (must be unique) --description <tenant-description> Description of new tenant (default is none) --enabled <true|false> Initial tenant enabled status (default true)
9、创建用于keystone管理的tenant、角色和用户
创建管理tenant,其名称为admin,描述信息为“Admin Tenant”。
创建admin角色
创建admin用户,并将其直接关联至前面创建的Admin Tenant。事实上,这里的关联操作也可以不执行,而在为admin赋予角色时进行,如后面所示。
而后,将admin角色赋予admin用户,正常执行时,此命令没有信息输出。
10、为admin用户启用基于credential的认证机制
取消基于token认证时创建的环境变量从而禁止admin用户使用token认证;定义如下环境变量,启用基于credential的用户认证。
为了使用方便,将上面的环境变量导出命令保存至一个配置文件中,如~/.ksrcadmin.sh
如果注销环境变量,执行keystone命令仍然能够认证通过说明keystone配置成功
11、创建服务tenant
上面创建的admin用户用于Keystone的管理工作,而OpenStack的各服务(如swift等)通常需要定义在一个服务tenant中,而且各服务也都需要一个具有管理权限的用户。
为服务Tenant创建用户nova,以用于后文中的nova服务,密码同用户名。
而后,把admin角色赋予nova用户,正常执行时,此命令没有信息输出。
由于后面配置swift,glance服务时也需要相应用户,因此继续为Service Tenant创建用户swift,glance,密码同用户名;把admin角色赋予swift,glance用户,同上正常执行此命令没有信息输出。[root@controller ~]# keystone user-create --tenant-id 12103bb8d1b84bd4906a685a429dc53e --name swift --pass swift --email swift@DQ.com [root@controller ~]# keystone user-role-add --tenant service --user swift --role admin # 说明这里的用户名与密码在实际使用中应该按需修改 [root@controller ~]# keystone user-create --tenant-id 12103bb8d1b84bd4906a685a429dc53e --name glance --pass glance --email glance@DQ.com [root@controller ~]# keystone user-role-add --tenant service --user glance --role admin
三、Openstack Image Service
Openstack Image服务可用于发现、注册及检索虚拟机映像(image),它提供了一个RESTful的API,能够让用户查询VM映像的元数据及通过HTTP请求获取映像,并可以让python程序员通过客户端类在python代码中完成类似的所有任务。VM映像文件可以存储在各类存储中,如普通的文件系统、对象存储系统(如Openstack Object Storage)、S3存储及HTTP(仅作为获取映像文件之用,而不能写于此中创建映像文件)等。
1、安装配置Glance服务相关软件包[root@controller ~]# yum -y install openstack-glance python-glanceclient
使用下面的命令为glance创建数据库及相关的授权用户。MariaDB [(none)]> create database glance; MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'%' identified by 'glance'; MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'localhost' identified by 'glance';
也可以通过下命令默认初始化glance数据库,同时创建其服务同名的用户,并为其指定密码# openstack-db --init --service glance --password glance
2、创建glance管理用户(前面的步骤已经实现)
3、配置glance-api
编辑/etc/glance/glance-api.conf,配置glance相关属性。[root@controller ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak [root@controller ~]# vim /etc/glance/glance-api.conf # glance默认使用“File”做为其存储类型 [DEFAULT] default_store=file # glance-api服务实现了第一版(v1)和第二版(v2)的OpenStack Images API,如果想启用它们,请启用如下两项。 enable_v1_api = True enable_v2_api = True # 将glance-api.conf文件最后两段的内容按需修改为类似如下的内容。这些设定也可以使用“openstack-config”的“--set”选项来逐个修改。 [keystone_authtoken] identity_uri=http://controller:35357 admin_tenant_name=service admin_user=glance admin_password=glance [paste_deploy] # Name of the paste configuration file that defines the available pipelines config_file=/usr/share/glance/glance-api-dist-paste.ini flavor=keystone #确保connection参数的值配置使用了正确的用户名和密码 [database] connection=mysql://glance:glance@localhost/glance [glance_store] filesystem_store_datadir=/var/lib/glance/images/
如果可使用后文安装配置的swift服务来替代这里的“File”类型,还需要修改类似如下选项的值为实际需要的值。这里先采用默认的File类型。default_store = swift swift_store_auth_address = http://172.16.200.6:5000/v2.0/ swift_store_user = service:swift # servcie_name:user_name swift_store_key = a86850deb2742ec3cb41518e26aa2d89
4、配置glance-registry
编辑/etc/glance/glance-registry.conf内容类似如下所示:[database] connection=mysql://glance:glance@localhost/glance [keystone_authtoken] identity_uri=http://controller:35357 admin_tenant_name=glance admin_user=glance admin_password=glance [paste_deploy] # Name of the paste configuration file that defines the available pipelines config_file=/usr/share/glance/glance-registry-dist-paste.ini flavor=keystone
确保glance-registry-paste.ini文件中启用了如下行:
此外还需要添加凭证到下面两个文件中去
/usr/share/glance/glance-registry-dist-paste.ini
/usr/share/glance/glance-api-dist-paste.ini
5、启动服务
启动glance-api服务:[root@controller ~]# systemctl start openstack-glance-api.service [root@controller ~]# systemctl enable openstack-glance-api.service
启动glance-registry服务:[root@controller ~]# systemctl start openstack-glance-registry.service [root@controller ~]# systemctl enable openstack-glance-registry.service
6、填充或迁移数据库[root@controller ~]# glance-manage db_sync
重启glance-api及glance-registry服务:[root@controller ~]# systemctl restart openstack-glance-registry.service [root@controller ~]# systemctl restart openstack-glance-api.service
7、 在keystone注册glance服务
测试,默认情况下,glance中没有任何映像文件,因此下面的命令将没有任何返回值。如果其不能返回为空,原因可能是配置有问题,请自行检查前面的配置过程。
8、Image服务管理
glance image-create命令
glance image-create命令用于添加新的虚拟机映像至glance中,glance image-update命令用于修改已经完成更新的映像的属性信息。
image-create命令至少要接受三个参数:
–name
–container_format
用于标明映像文件是否包含了虚拟机的元数据信息,然而,目前Compute服务并未使用此信息,因此,在不确定的情况可以将其指定为bare,而合用的格式主要有bare(没有container或元数据信息)、ovf、aki、ari或ami几种。
–disk_format
用于指明磁盘映像文件的格式,包括raw、qcow2、vhd、vmdk、iso、vdi、aki(amazon kernel image)、ari(amazon ramdisk image)及ami(amazon machine image)等。
映像元数据
glance image-create或glance image-update命令的–property key=value参数能够为映像文件附加元数据信息。而常用的属性主要有:
architecture:hypervisor必须支持的CPU架构,如x86_64、arm等;
hypervisor_type:hypervisor类型,其能够使用的值包括xen、qemu、kvm、lxc、uml、vmware、hyperv及powervm;
vm_mode:定义虚拟机模式,即应用于虚拟机的host/guest ABI;例如hvm、xen、uml、exe等;
xenAPI还有其专用的两个属性可以定义:
auto_disk_config:布尔型属性值,true表示在虚拟机实例启动前磁盘的根分区将被自动调整;
os_type:image中安装的操作系统类型,如linux、windows等,XenAPI能够根据此属性值来执行不同的操作,如为windows创建fat32格式的交换分区、限制其主机名称少于16个字符等;
VMware API也有如下三个专用属性可以定义:
vmware_adaptertype:定义hypervisor使用的虚拟SCSI或IDE接口类型,其有效值为lsiLogic、busLogic及ide;
vmware_ostype:VMware GuestID,用于描述映像文件中的操作系统类型;vmware所支持的类型较多,可以参照thinkvirt.com获取详细信息;默认值为otherGuest;
vmware_image_version:目前未使用,默认值为1;
创建映像文件
为了使用方便,这里采用CirrOS项目制作的映像文件,其也经常被拿来测试Openstack的部署。其地址为https://launchpad.net/cirros,可以按需下载所想尝试使用的版本。这里以cirros-0.3.0-i386-disk.img和cirros-0.3.0-x86_64-disk.img为例。
准备映像文件[root@controller ~]# mkdir img [root@controller ~]# cd img [root@controller ~]# wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-i386-disk.img [root@controller ~]# wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
使用qemu-img命令分别查看两个映像文件的格式信息
接下上传cirros两个映像文件。
列出上传的映像文件。
相关文章推荐
- 什么是OpenStack 开源的云计算管理平台项目
- CentOS 7中安装mysql server的步骤分享
- centos 7安装mysql5.5的方法
- centos 7安装mysql5.5和安装 mariadb使用的命令
- openstack(juno版)使用rsyslog转发日志
- OpenStack Murano Dashboard(Kilo)安装
- Openstack Murano(Kilo) 网络排错
- Openstack Murano(kilo)二次开发之添加Volume
- Openstack Horizon(kilo)二次开发之匿名访问View
- 仿OpenStack开发云计算管理软件”--第1周:熟悉开发环境
- 【原创】OpenStack Swift源码分析(二)ring文件的生成
- 【原创】Swift服务启动架构分析
- 【原创】OpenStack Swift源码分析(三)proxy服务启动
- 【原创】OpenStack Swift源码分析(四)proxy服务响应
- 【原创】OpenStack Swift源码分析(五)keystone鉴权
- Swift中的一致性哈希算法分析
- 【原创】OpenStack Swift源码分析(六)object服务
- 【原创】OpenStack Swift源码分析(七)Replication服务
- 【原创】OpenStack Swift源码分析(八)Updater && Auditor服务
- Swift中映射与冗余