目标

此文件提供了一步一步的指导手动安装trove在一个现有OpenStack的环境为了开发。

该文件将不包括:

OpenStack的设置

trove服务配置

要求

正在运行的OpenStack的环境是必需的,包括以下组件:

计算 (Nova)

镜像服务 (Glance)

身份认证 (Keystone)

一个网络组件 (either Neutron or Nova-Network)

如果你想在块存储卷提供数据存储,还需要块存储(Cinder)

如果你想要做的备份/恢复和复制,你也需要对象存储(Swift)

在刚安装了Ubuntu14.04 LTS的环境中运行trove服务。这将被称为“本地环境”

AMQP服务(RabbitMQ的或QPID)

MySQL(SQLite,PostgreSQL)数据库用来满足trove的内部需求,从当地的环境访问。

某些OpenStack的服务必须是从虚拟机可以访问的:

Swift

虚拟机必须从本地环境访问,用来开发/调试

openstack服务必须直接从本地环境访问,例如:

Nova

Cinder

Swift

Heat

安装

收集信息

以下信息对现有环境要求:

Keystone的主机和端口(S)

OpenStack的管理员的用户名,租户名称和密码

Nova的URL

Cinder的URL

Swift的URL

Heat的URL

AMQP连接凭证(服务器URL,用户密码)

trove的控制器端连接字符串(MySQL的和SQLite的,PostgreSQL的)

安装依赖

对于Trove¶必需的程序包

要安装的软件包列表:

$ sudo apt-get install build-essential libxslt1-dev qemu-utils mysql-client \

git python-dev python-pexpect python-pymysql libmysqlclient-dev

Python的设置

要找出哪个版本setuptools的最新的,请检查setuptools的repo。

要找出哪个pip版本是最新的,请访问pip的repo。

在Ubuntu软件仓库中有些软件包已经过时。请务必更新从适当来源的最新版本。

使用最新的setuptools:

$ cd ~
$ wget https://pypi.python.org/packages/source/s/setuptools/setuptools-{{latest}}.tar.gz
$ tar xfvz setuptools-{{latest}}.tar.gz
$ cd setuptools-{{latest}}
$ python setup.py install --user

使用最新的pip:

$ wget https://pypi.python.org/packages/source/p/pip/pip-{{latest}}.tar.gz
$ tar xfvz pip-{{latest}}.tar.gz
$ cd pip-{{latest}}
$ python setup.py install --user

注意上面的'-user' - 我们在用户的home目录安装的软件包,在$HOME/.local/bin中,所以我们需要将它添加到环境变量:

$ echo PATH="$HOME/.local/bin:$PATH" >> ~/.profile
$ . ~/.profile

安装virtualenv,创建环境,并激活它:

$ pip install virtualenv --user
$ virtualenv --system-site-packages env
$ source env/bin/activate

获取trove

获得OpenStack的资料库中trove源组件:

$ cd ~
$ git clone https://git.openstack.org/openstack/trove.git
$ git clone https://git.openstack.org/openstack/python-troveclient.git

安装Trove¶

首先,安装要求:

$ cd ~/trove
$ pip install -r requirements.txt -r test-requirements.txt

然后安装trove

$ sudo python setup.py develop

最后安装trove client

$ cd ~/python-troveclient
$ sudo python setup.py develop
$ cd ~

其他所需的OpenStack的客户端(python-novaclient,python-keystoneclient等)应该已经被作为trove的一部分安装了。

为OpenStack准备trove:

你首先需要创建一个名为“trove_for_trove_usage'租户。接下来,创建用户名为“regular_trove_user'和'admin_trove_user” - 使用“宝库”作为密码。这些都是用来提供trove服务所使用的帐户。此外,您将需要注册trove作为OpenStack的服务及其端点:

$ keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword> --os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIP>:<KeystonePort>/v2.0 tenant-create --user trove_for_trove_usage
 
$ keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword> --os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIP>:<KeystonePort>/v2.0 user-create --user regular_trove_user --pass trove --tenant trove_for_trove_usage
 
$ keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword> --os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIP>:<KeystonePort>/v2.0 user-create --user admin_trove_user --pass trove --tenant trove_for_trove_usage
 
$ keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword> --os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIP>:<KeystonePort>/v2.0 user-role-add --user admin_trove_user --tenant trove_for_trove_usage --role admin
 
$ keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword> --os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIP>:<KeystonePort>/v2.0 service-create --user trove --type database
 
$ keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword> --os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIP>:<KeystonePort>/v2.0 endpoint-create --service trove --region RegionOne --publicurl 'http://<EnvironmentPublicIP>:<EnvironmentPort>/v1.0/$(tenant_id)s' --adminurl 'http://<EnvironmentPublicIP>:<EnvironmentPort>/v1.0/$(tenant_id)s' --internalurl 'http://<EnvironmentPublicIP>:<EnvironmentPort>/v1.0/$(tenant_id)s'

其中,<EnvironmentPublicIP>和<EnvironmentPort>是指安装了Trove的服务器的IP地址和端口。该IP应该可以访问任何要与trove交流的主机。

准备trove配置文件¶

有几个trove的配置文件:

api-paste.ini and trove.conf - trove-API服务

trove-taskmanager.conf - trove - taskmanager服务

trove-guestagent.conf - trove-guestagent服务

trove - conductor.conf - trove-conductor服务

<datastore_manager>.cloudinit -虚拟机调配期间的用户数据

Cloud-init scripts是用户数据被用于不同的数据存储类型,如MySQL/ Percona的,cassandra,MongoDB的,Redis的,couchbase同时提供新计算实例。

上述例子在:~/trove/etc/trove/ as *.conf.sample files.

如果干净的Ubuntu镜像被用作用于trove实例源镜像,Cloud-init scripts必须安装和在实例中运行guestagent。

作为替代方案,你可以考虑创建一个自定义镜像与预安装和预配置的trove

 

源镜像

至于trove实例源图像,我们将使用trove兼容Ubuntu的镜像:

$ export DATASTORE_TYPE="mysql"
$ wget http://tarballs.openstack.org/trove/images/ubuntu/${DATASTORE_TYPE}.qcow2
$ glance --os-username admin_trove_user --os-password trove --os-tenant-name trove_for_trove_usage --os-auth-url http://<KeystoneIP>:<KeystoneAdminPort>/v2.0 image-create --name trove-image --is-public True --container-format ovf --disk-format qcow2 --owner ${DATASTORE_TYPE}.qcow2

注:http://tarballs.openstack.org/trove/images包括MySQL和Percona的,MongoDB的trove兼容的镜像。

在这一步,请记住镜像ID或存储在一个环境变量(IMAGEID)。

$ glance --os-username trove --os-password trove --os-tenant-name trove --os-auth-url http://<KeystoneIP>:<KeystoneAdminPort>/v2.0
    image-create --name trove-image --is-public true --container-format ovf --disk-format qcow2 --owner trove < precise.qcow2
 
$ export IMAGEID=<glance_image_id>

Cloud-init scripts

Cloud-init location

默认情况下,trove-taskmanager将着眼于为/etc/trove/cloudinit for <datastore_manager>.cloudinit.

Cloud-init content

对于trove兼容镜像的每个cloud-init script应包含:

Trove的安装

与trove代码在内的自定义镜像

等待被加入

准备数据库

创建trove数据库模式:

连接到存储后端(MySQL,PostgreSQL)

创建数据库,名字为trove(这个数据库将被用于存储trove的ORM)

撰写的连接字符串。例如:MYSQL + pymysql://<用户>:<密码>@ <backend_host>:<backend_port>/<数据库>

初始化数据库

一旦创建了trove数据库,其结构需要填充。

$ trove-manage db_sync

设置trove数据存储

数据存储

数据存储是一种数据结构,描述一组数据存储版本,其中包含的:

- ID -- simple auto-generated UUID
- Name -- user-defined attribute, actual name of a datastore
- Datastore Versions

例如:

- mysql, cassandra, redis, etc.

数据存储版本

数据存储版本是一个数据结构,它描述了一个版本,固定到数据存储特定的数据库,其中包括的:

- ID — Simple auto-generated UUID
- Datastore ID — Reference to Datastore
- Name — User-defined attribute, actual name of a database version
- Datastore manager — trove-guestagent manager that is used for datastore management
- Image ID — Reference to a specific Glance image ID
- Packages — Operating system specific packages that would be deployed onto datastore VM
- Active — Boolean flag that defines if version can be used for instance deployment or not

例如:

- ID - edb1d22a-b66d-4e86-be60-756240439272
- Datastore ID - 9c3d890b-a2f2-4ba5-91b2-2997d0791502
- Name - mysql-5.6
- Datastore manager - mysql
- Image ID - d73a402-3953-4721-8c99-86fc72e1cb51
- Packages - mysql-server=5.5, percona-xtrabackup=2.1
- Active - True

数据存储和数据存储版本注册

要注册的数据存储,你必须执行

$ export DATASTORE_TYPE="mysql" # available options: mysql, mongodb, postgresql, redis, cassandra, couchbase, couchdb, db2, vertica, etc.
 
$ export DATASTORE_VERSION="5.6" # available options: for cassandra 2.0.x, for mysql: 5.x, for mongodb: 2.x.x, etc.
 
$ export PACKAGES="mysql-server-5.6" # available options: cassandra=2.0.9, mongodb=2.0.4, etc
 
$ export IMAGEID="9910350b-77e3-4790-86be-b971d0cf9175" # Glance image ID of the relevant Datastore version (see Source images section)
 
$ trove-manage datastore_update ${DATASTORE_TYPE} ""
 
$ trove-manage datastore_version_update ${DATASTORE_TYPE} ${DATASTORE_VERSION} ${DATASTORE_TYPE} ${IMAGEID} ${PACKAGES} 1
 
$ trove-manage datastore_update ${DATASTORE_TYPE} ${DATASTORE_VERSION}

运行trove

trove服务配置和tuning¶

等待被加入

开始trove服务

运行trove的API:

$ trove-api --config-file=${TROVE_CONF_DIR}/trove-api.conf &

运行 trove-taskmanager:

$ trove-taskmanager --config-file=${TROVE_CONF_DIR}/trove-taskamanger.conf &

运行 trove-conductor:

$ trove-conductor --config-file=${TROVE_CONF_DIR}/trove-conductor.conf &

trove互动

Keystonerc

你需要构建一个kenstonerc文件,包含数据用来简化在使用客户端的时候的认证过程:

export OS_TENANT_NAME=trove
 
export OS_USERNAME=regular_trove_user
 
export OS_PASSWORD=trove
 
export OS_AUTH_URL="http://<KeystoneIP>:<KeystonePort>/v2.0/"
 
export OS_AUTH_STRATEGY=keystone

trove部署验证

首先,你需要执行:

$ . keystonerc

要查看某个特定命令的帮助:

$ trove help <command>

创建一个用例:

$ trove create <name> <flavor_id>
                [--size <size>]
                [--databases <databases> [<databases> ...]]
                [--users <users> [<users> ...]] [--backup <backup>]
                [--availability_zone <availability_zone>]
                [--datastore <datastore>]
                [--datastore_version <datastore_version>]
                [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,port-id=port-uuid>]
                [--configuration <configuration>]
                [--replica_of <source_id>]

故障排除

在‘trove show <instance_id>’命令输出中没有实例的Ips

如果trove实例创建成功,则显示活动状态和工作,但没有IP地址的显示,在命令‘trove show <instance_id>‘的输出中,然后确认确认以下行添加到了trove.conf

network_label_regex = ^NETWORK_NAME$

NETWORK_NAME应该替换为真实姓名的实例连接到网络。

决定你要哪个网络附加一个trove实例,运行以下命令:

$ nova net-list

或者

$ neutron net-list

一种可能的方法来查找网络名称是执行“nova list”命令。输出将为租户列出所有OpenStack的实例,包括网络信息。

比如:

NETWORK_NAME=IP_ADDRESS

更多信息:http://www.cnblogs.com/S-tec-songjian/

此文章属博客园用户S-tec原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

trove manual installation 翻译的更多相关文章

  1. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  2. trove 开发者阅读翻译

    介绍 Trove为OpenStack提供数据库的服务.它的设计运行完全符合OpenStack,目标是让用户能快速.轻松地利用关系数据库的特点,没有负担的处理复杂的管理任务.云用户和数据库管理员可以根据 ...

  3. 【socket编程】select manual page翻译

    原文: select manual page 依赖的头文件 /* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select. ...

  4. Setting up a Hadoop cluster - Part 1: Manual Installation

    http://gbif.blogspot.com/2011/01/setting-up-hadoop-cluster-part-1-manual.html

  5. 开始进行lammps手册的学习啦,跟着Manual一边翻译一边做吧!(转载)

    转载自:http://blog.sina.com.cn/s/blog_64813e370100ngsz.html 注明:黄色部分基本上为不懂的部分,红色字体为所做注释 一.各种文件的介绍: 1 in ...

  6. Installation and Upgrading

    Cumulative Feature Overview Identifies product features available to you when upgrading. This tool r ...

  7. 『翻译』Access USB Devices on the Web

    https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web Access USB Devices o ...

  8. Apache Tomcat 9 Installation on Linux (RHEL and clones)

    Apache Tomcat 9 is not available from the standard RHEL distributions, so this article provides info ...

  9. [翻译] EAIntroView

    EAIntroView https://github.com/ealeksandrov/EAIntroView   This is highly customizable drop-in soluti ...

随机推荐

  1. oledb快速导入Excel案例

    DataTable dtImportExcel = null; string pathFile = Server.MapPath("~/ErrorCatory.xlsx"); // ...

  2. MVC之Ajax

    MVC之Ajax如影随行 2014-07-04 10:34 by 书洞里的猫, 15 阅读, 0 评论, 收藏, 编辑 一.Ajax的前世今生 我一直觉得google是一家牛逼的公司,为什么这样说呢? ...

  3. .Net组件程序设计

    .Net组件程序设计之上下文 在后续篇幅的远程调用的文章里有说到应用程序域,那是大粒度的控制程序集的逻辑存在,那么想对对象的控制又由谁来做主呢?没错了,就是上下文.CLR把应用程序域更细化了,在应用程 ...

  4. vue.js源码精析

    MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多 ...

  5. 如何在ubuntu 12.04下搭建Python Django环境

    1. 检查python是否安装:直接在shell里输入python,如果已经安装了python,即可进入python bash,并看到版本号(如Python 2.7.3) ——在ubuntu中pyth ...

  6. 利用Matlab生成一个网格化的三维球面(生成直角坐标)

    利用Matlab生成一个网格化的三维球面,分别对径向方向.经度方向和纬度方向进行网格化,代码如下: %生成一个笛卡尔坐标系下球面网格的x,y,z坐标 %r为球面距离 %nJingdu,nWeidu分别 ...

  7. logistic回归 c++ 实现

    logistic回归是统计学习中经典的分类方法,他属于对数线性模型.本博文主要给出logistic的c++实现,具体理论请读者自行google. 本文用到的数据集来自于一个医学网站,具体出处不记得了( ...

  8. Winform系列

    小菜学习编程-Winform系列(初学者)   前言 记得上次写<小菜的程序员道路(二)>,这篇文章的时候说过,要把工作以来整理的编程知识分享给大家,因为这半年来的工作实在是忙,现在也在忙 ...

  9. IOS7学习之路九(ios7自定义UIAlertView)

    IOS7的UIAlertView 不支持自定义,无法添加subview . 不过可以用第三方库git上的下载链接    https://github.com/wimagguc/ios-custom-a ...

  10. “git push”后返回“Error 403”解决方法

    问题描述: 1,mac ox系统,terminal上运行命令git push出现403错误: 2,代码是在别人的github(暂且叫origin branch吧)上克隆的,修改和添加了部分代码后欲提交 ...