Openstack Trove研究文档.docx
- 文档编号:3884394
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:11
- 大小:247.31KB
Openstack Trove研究文档.docx
《Openstack Trove研究文档.docx》由会员分享,可在线阅读,更多相关《Openstack Trove研究文档.docx(11页珍藏版)》请在冰点文库上搜索。
OpenstackTrove研究文档
文件状态:
【√】草稿
【】正式发布
【】正在修改中
类别
云计算
项目名称
OpenstackHeat组件研究
版本
日期
作者
备注说明
1.0
2015/09/06
程成
初稿
审核
密级
秘密
应用范围
陕西省信息化工程研究院软件研发部
版权所有
陕西省信息化工程研究院
OpenstackTrove组件研究
目录
OpenstackHeat研究3
1.Heat简介3
2.Heat架构4
2.1Heat-engine5
2.2HeatClient5
2.3Heat-api6
2.4HeatClient6
2.5Heat-cfntools6
3.Heat模板6
3.1*formatversion字段介绍7
3.2heat_template_version字段介绍8
4.Heat应用16
4.1命令行使用16
4.2界面Dashboard使用16
OpenstackTrove研究
1.Trove简介
Trove是一种面向OpenStack的DBaaS框架,它既支持关系数据库,又支持非关系数据库,让用户可以通过基于Web的用户界面(Horizon)、命令行接口或RESTAPI,迅速配置和运行数据库。
通过配置Trove,可提供一系列广泛的数据库配置,具体表现为预先配置的“来宾映像”(guestimage)。
来宾映像封装了数据库管理方面的最佳实践,有助于确保系统正常运行和管理,不需要IT人员是每一项数据库技术方面的专家。
来宾映像可以由操作人员配置,也可以从诸多公开来源下载。
然后,用户可以请求单个数据库实例、复制的成对实例或者是提高可扩展性的集群。
之后,Trove统一编排配置过程,以满足这些请求,为此它会调用底层的OpenStack服务,比如Nova(计算服务)和Cinder(存储服务)。
除了基本的配置外,Trove还能使它配置的数据库实例的生命周期管理实现自动化。
等到进行备份时,Trove启动这个过程,将备份内容存储在Swift对象存储区上。
用户然后可以启动新的数据库实例(该实例基于之前执行的备份)。
如果用户希望重新调整数据库大小――为此可以改变分配给它的存储资源或计算资源,Trove就会统一编排整个过程(包括迁移数据)。
2.Trove架构
2.1Trove主要组件
2.1.1Trove主要组件
Trove分为三个组件:
trove-api,trove-taskmanager,trove-guestagent。
Øtask-api:
主要提供RESTfulAPI并且支持JSON和XML,用来管理和掌控Trove实例。
它是一个WSGI组件负责监听服务外部的请求。
Øtask-taskmanager:
主要完成具体的管理命令,如创建实例,管理实例的生命周期,完成对数据库的操作等等。
它主要监听RabbitMQtopic来得到请求。
Øtask-guestagent:
主要提供具体数据库的运行和管理,并且对数据库本身进行操作。
guestagent同样监听RabbitMQtopic来得到请求,并且运行在每一个数据库实例上。
每一种数据库都需要一个自己的guestagent实现,目前只有MySQLagent。
trove整个服务由四大部分构成,虚拟机服务、trove-api、trove-taskmanager、trove-guestagent,其中虚拟机服务包括compute和volume服务,至于compute服务具体是由kvm、lxc、xen等哪个来提供,trove并不关心,当用户请求创建一个数据库实例时,虚拟机只要能提供运行数据库服务的环境即可。
trove-api接收用户的各种请求(数据库实例创建、删除、备份、重启等),通过rpc消息队列与trove-taskmanager服务通信(这一点与OpenStack的其它系统一样)。
trove-taskmanager是实际的服务管理器,负责管理一个请求任务整个过程,主要是与nova-compute通信创建compute、与cinder-volume通信创建volume、与trove-guestagent通信在虚拟机内完成包括启动数据库服务/创建用户/初始化数据库/备份数据库服务/重启数据库服务等等操作。
trove-guestagent是运行与虚拟机内完成数据库操作的“机器人”(具体任务由trove-taskmanager下达)。
2.2Trove流程
目前Trove支持用户创建一个数据库服务实例,在实例里可以创建多个数据库并进行管理。
数据库服务实例目前通过NovaAPI来创建,然后同样通过NovaAPI创建一个Volume(未来通过CinderAPI)作为存储,然后在NovaInstance里加载预定义的带有MySQL的Image来启动MySQL。
此时用户在得到一个创建好的数据库服务实例以后可以通过API创建数据库并且指定参数,Trove通过在数据库服务实例里的guestagent来完成相应的命令。
下图是Trove处理请求的最主要流程。
3.Trove组件部署
3.1Trove组件源码安装
3.1.1下载、安装包
安装troveclient:
gitclone/opt/python-troveclient
cd/opt/python-troveclient
gitcheckoutstable/kilo
pythonsetup.pyegg_info
pipinstall-rpython_troveclient.egg-info/requires.txt
pythonsetup.pydevelop
安装Trove(K版本):
gitclone/opt/trove
cd/opt/trove
gitcheckoutstable/kilo
pythonsetup.pyegg_info
pipinstall-rtrove.egg-info/requires.txt
pythonsetup.pydevelop
3.1.2创建Trove用户
Ø创建trove用户:
openstack user create --password=password -email=trove@ trove
Øtrove用户添加admin角色:
openstack role add --project services --user trove admin
Ø创建trove服务,类型为databases:
openstack service create --name trove --description "OpenStackDatabaseService"Database
Øtrove服务添加api访问地址
openstack endpoint create
--publicurl https:
//public.fuel.local:
8779/v1.0/%\(tenant_id\)s
--internalurl http:
//192.168.0.4:
8779/v1.0/%\(tenant_id\)s
--adminurl http:
//192.168.0.4:
8779/v1.0/%\(tenant_id\)s
--region RegionOne Database
3.1.3配置Trove
创建trove需要的目录:
mkdir/etc/trove/var/log/trove/var/lib/trove
配置/etc/trove/api-paste.init、/etc/trove/trove.conf、etc/trove/trove-conductor.conf、/etc/trove/trove-taskmanager.conf
指定trove使用的neutron网络:
trove在horizon上还不支持选择网络,只能在配置文件中指定一个网络ID
default_neutron_networks=9cbae051-78c7-4574-968e-2cb9b0f410ad
3.1.4同步数据库
使用mysql作为trove后端db,创建trove数据库:
mysql-uroot-p
>createdatabasetrovedefaultcharactersetutf8;
>grantallontrove.*to'trove'@'localhost'identifiedby'trove';
同步数据库:
trove-manage--config-file=/etc/trove/trove.confdb_sync
3.1.5制作系统服务
Ø将trove三个服务做成系统服务:
/etc/init/trove-api.conf:
description"TroveAPIServer"
author"Longgeek
starton(local-filesystemsandnet-device-upIFACE!
=lo)
stoponrunlevel[016]
respawn
execsu-s/bin/sh-c"exectrove-api--config-file=/etc/trove/trove.conf"root
/etc/init/trove-conductor.conf:
description"TroveConductorServer"
author"Longgeek
starton(local-filesystemsandnet-device-upIFACE!
=lo)
stoponrunlevel[016]
respawn
execsu-s/bin/sh-c"exectrove-conductor--config-file=/etc/trove/trove-conductor.conf--log-file/var/log/trove/trove-conductor.log"root
/etc/init/trove-taskmanager.conf:
description"TroveTaskManagerServer"
author"Longgeek
starton(local-filesystemsandnet-device-upIFACE!
=lo)
stoponrunlevel[016]
respawn
execsu-s/bin/sh-c"exectrove-taskmanager--config-file=/etc/trove/trove-taskmanager.conf--log-file/var/log/trove/trove-taskmanager.log"root
Øupstart脚本链接:
ln-s/lib/init/upstart-job/etc/init.d/trove-api
ln-s/lib/init/upstart-job/etc/init.d/trove-conductor
ln-s/lib/init/upstart-job/etc/init.d/trove-taskmanager
Ø加入到开启启动:
update-rc.dtrove-apidefaults
update-rc.dtrove-conductordefaults
update-rc.dtrove-taskmanagerdefaults
Ø启动服务
forservinapiconductortaskmanager;do/etc/init.d/trove-$servrestart;done
3.2Trove-integration项目安装
Trove有一个项目专门负责安装Trove-integration,这个项目会自动把devstack安装一遍,然后安装trove,build一个镜像,上传到glance镜像库中。
3.2.1下载环境
Ø由于trove-inergration需要非root用户操作,故创建ubuntu用户
#apt-getupdate
#apt-getinstallgit-core-y
#adduserubuntu
#visudo(退出:
:
x!
)
ubuntuALL=(ALL:
ALL)ALL
**ORusethisifyoudontwanttotypeyourpasswordtosudoacommand**
ubuntuALL=(ALL)NOPASSWD:
ALL
Ø切换ubuntu用户
#suubuntu
$cd~
$gitclone
Ø进行安装
$cdtrove-integration/scripts/
$./redstackinstall
Ø创建mysql镜像并上传到glance
$./redstackkick-startmysql
$./redstackbuild-imagemysql
3.2.2恢复环境
$./redstackstart-deps
$./redstackstart
3.2.3重置环境
$RECLONE=yes./redstackinstall
$./redstacktest-init
$./redstackbuild-imagemysql
参考文献:
1OpenstackTrove探究
(1)-从API认识trove
2OpenStackTrove专用镜像制作
3源码安装trove
4OpenstackTrove官方文档
https:
//wiki.openstack.org/wiki/Trove#trove-taskmanager
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Openstack Trove研究文档 Trove 研究 文档