您的位置:首页 > 运维架构

OpenStack安装部署之keystone&&Glance

2015-11-13 08:04 543 查看
一、基础准备工作

部署环境: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 CentOS7