Openstack Trove研究文档.doc_第1页
Openstack Trove研究文档.doc_第2页
Openstack Trove研究文档.doc_第3页
Openstack Trove研究文档.doc_第4页
Openstack Trove研究文档.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件状态:【】 草稿【 】 正式发布【】 正在修改中类 别云计算项目名称Openstack Heat组件研究版 本日期作者备注说明1.02015/09/06程成初稿审 核密 级秘密应用范围陕西省信息化工程研究院软件研发部版权所有陕西省信息化工程研究院Openstack Trove组件研究目 录OPENSTACK HEAT研究31.Heat简介32.Heat架构42.1Heat-engine52.2Heat Client52.3Heat-api62.4Heat Client62.5Heat-cfntools63.Heat模板63.1*formatversion字段介绍73.2heat_template_version字段介绍84.Heat应用164.1命令行使用164.2 界面Dashboard使用16 Openstack Trove研究1. Trove简介Trove是一种面向OpenStack的DBaaS框架,它既支持关系数据库,又支持非关系数据库,让用户可以通过基于Web的用户界面(Horizon)、命令行接口或REST API,迅速配置和运行数据库。通过配置Trove,可提供一系列广泛的数据库配置,具体表现为预先配置的“来宾映像”(guest image)。来宾映像封装了数据库管理方面的最佳实践,有助于确保系统正常运行和管理,不需要IT人员是每一项数据库技术方面的专家。来宾映像可以由操作人员配置,也可以从诸多公开来源下载。然后,用户可以请求单个数据库实例、复制的成对实例或者是提高可扩展性的集群。之后,Trove统一编排配置过程,以满足这些请求,为此它会调用底层的OpenStack服务,比如Nova(计算服务)和Cinder(存储服务)。除了基本的配置外,Trove还能使它配置的数据库实例的生命周期管理实现自动化。等到进行备份时,Trove启动这个过程,将备份内容存储在Swift对象存储区上。用户然后可以启动新的数据库实例(该实例基于之前执行的备份)。如果用户希望重新调整数据库大小为此可以改变分配给它的存储资源或计算资源,Trove就会统一编排整个过程(包括迁移数据)。2. Trove架构2.1 Trove 主要组件2.1.1 Trove 主要组件Trove分为三个组件: trove-api, trove-taskmanager, trove-guestagent。 task-api: 主要提供RESTful API并且支持JSON和XML,用来管理和掌控Trove实例。它是一个WSGI组件负责监听服务外部的请求。 task-taskmanager: 主要完成具体的管理命令,如创建实例,管理实例的生命周期,完成对数据库的操作等等。它主要监听RabbitMQ topic来得到请求。 task-guestagent: 主要提供具体数据库的运行和管理,并且对数据库本身进行操作。guestagent同样监听RabbitMQ topic来得到请求,并且运行在每一个数据库实例上。每一种数据库都需要一个自己的guestagent实现,目前只有MySQL agent。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.2 Trove 流程目前Trove支持用户创建一个数据库服务实例,在实例里可以创建多个数据库并进行管理。数据库服务实例目前通过Nova API来创建,然后同样通过Nova API创建一个Volume(未来通过Cinder API)作为存储,然后在Nova Instance里加载预定义的带有MySQL的Image来启动MySQL。此时用户在得到一个创建好的数据库服务实例以后可以通过API创建数据库并且指定参数,Trove通过在数据库服务实例里的guest agent来完成相应的命令。下图是Trove处理请求的最主要流程。3. Trove组件部署3.1 Trove 组件源码安装3.1.1 下载、安装包安装 troveclient: git clone /openstack/python-troveclient.git /opt/python-troveclientcd /opt/python-troveclientgit checkout stable/kilopython setup.py egg_infopip install -r python_troveclient.egg-info/requires.txtpython setup.py develop安装 Trove(K版本):git clone /openstack/trove.git /opt/trovecd /opt/trovegit checkout stable/kilopython setup.py egg_infopip install -r trove.egg-info/requires.txtpython setup.py develop3.1.2 创建 Trove 用户 创建 trove 用户:openstackusercreate-password=password-email=trove trove 用户添加 admin 角色:openstackroleadd-projectservices-usertroveadmin 创建 trove 服务,类型为 databases:openstackservicecreate-nametrove-descriptionOpenStack Database Service Database trove 服务添加 api 访问地址openstackendpointcreate-publicurlhttps:/public.fuel.local:8779/v1.0/%(tenant_id)s-internalurl:8779/v1.0/%(tenant_id)s-adminurl:8779/v1.0/%(tenant_id)s-regionRegionOneDatabase3.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 create database trove default character set utf8; grant all on trove.* to trovelocalhost identified by trove; 同步数据库: trove-manage -config-file=/etc/trove/trove.conf db_sync3.1.5 制作系统服务 将trove 三个服务做成系统服务:/etc/init/trove-api.conf:description Trove API Serverauthor Longgeek start on (local-filesystems and net-device-up IFACE!=lo)stop on runlevel 016respawnexec su -s /bin/sh -c exec trove-api -config-file=/etc/trove/trove.conf root/etc/init/trove-conductor.conf:description Trove Conductor Serverauthor Longgeek start on (local-filesystems and net-device-up IFACE!=lo)stop on runlevel 016respawnexec su -s /bin/sh -c exec trove-conductor -config-file=/etc/trove/trove-conductor.conf -log-file /var/log/trove/trove-conductor.log root/etc/init/trove-taskmanager.conf:description Trove TaskManager Serverauthor Longgeek start on (local-filesystems and net-device-up IFACE!=lo)stop on runlevel 016respawnexec su -s /bin/sh -c exec trove-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-apiln -s /lib/init/upstart-job /etc/init.d/trove-conductorln -s /lib/init/upstart-job /etc/init.d/trove-taskmanager 加入到开启启动:update-rc.d trove-api defaultsupdate-rc.d trove-conductor defaultsupdate-rc.d trove-taskmanager defaults 启动服务for serv in api conductor taskmanager; do /etc/init.d/trove-$serv restart; done3.2 Trove-integration项目安装Trove 有一个项目专门负责安装 Trove-integration,这个项目会自动把 devstack 安装一遍,然后安装 trove,build 一个镜像,上传到 glance 镜像库中。3.2.1 下载环境 由于trove-inergration需要非root用户操作,故创建ubuntu用户# apt-get update# apt-get install git-core -y# adduser ubuntu# visudo(退出::x!)ubuntu ALL=(ALL:ALL) ALL*OR use this if you dont want to type your password to sudo a command*ubuntu ALL=(ALL) NOPASSWD: ALL 切换ubuntu用户# su ubuntu$ cd $ git clone /openstack/trove-integration.git 进行安装$ cd trove-integration/scripts/$ ./redstack install 创建mysql镜像并上传到glance$ ./redstack kick-start mysql$ ./redstack build-image mysql3.2.2 恢复环境$./redstack start-deps$./redstack start3.2.3 重置环境$ RECLONE=yes ./redstack install$ ./redstack test-init$ ./redstack build-image mysql参考文献:1 Openstack Trove探究(1)- 从API认识trove/cloudresearch/article/details/230074

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论