目标

此文件提供了一步一步的指导手动安装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. 登陆页面改为SSO验证

    登陆页面改为SSO验证 单点登录(SSO,single sign-on)是一个会话或用户身份验证过程,用户只需要登录一次就可以访问所有相互信任的应用系统,二次登录时无需重新输入用户名和密码.简化账号登 ...

  2. Printk 标志优先级别

    #define KERN_EMERG                  "<0>"       /* 致命级:紧急事件消息,系统崩溃之前提示,表示系统不可用   */# ...

  3. Vijos:P1001谁拿了最多奖学金

    描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以 ...

  4. DNN简介以及安装

    开源框架DNN简介以及安装 donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dn ...

  5. python 开发利器

    UliPad 初体验----python 开发利器 Posted on 2013-10-28 22:36 虫师 阅读(436) 评论(3) 编辑 收藏 学习python 有段时间,最近博客更新比较慢了 ...

  6. 不容易理解的 lock 和 merge

    Hibernate:不容易理解的 lock 和 merge 目录 背景Lock官方的注释LockMode.NONELockMode.READLockMode.UPGRADEMerge官方注释detac ...

  7. Linux 中 crontab 详解及示例

    cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: /sbin/service c ...

  8. Lambda应用模式

    Lambda应用模式 前言 在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式.这些模式可能不全是新的模式,有的参考自 JavaScri ...

  9. Java笔记:与系统交互、系统相关的类,Object类

    1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名public static void main(String[] args);pu ...

  10. .net分页控件简单实现

    .net分页控件简单实现 好久好久没写博客了.....最近写了一个.net的分页控件,放到园子里...你觉得好,就点个赞,不好呢,就告诉我为啥吧.... 是使用Request.QueryString的 ...