目标

此文件提供了一步一步的指导手动安装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. ASP.NET MVC IOC 之Ninject攻略

    ASP.NET MVC IOC 之Ninject攻略 一.为什么要使用Ninject? 很多其它类型的IOC容器过于依赖配置文件,老是配置,总感觉有点不爽,而且要使用assembly-qualifie ...

  2. 开启apache服务

    安装后如果需要手动添加Sevice,可以按照如下方法: Apache版本:httpd-2.2.15_win32 Apache Service Monitor 提示:“No services insta ...

  3. NET开发面向对象2

    面向对象 (2) 继续上一篇<ASP.NET开发,从二层至三层,至面向对象>http://www.cnblogs.com/insus/p/3822624.html .我们了解到怎样把自己的 ...

  4. VS2013全攻略(安装,技巧,快捷键,插件)!

    工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)! 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥>承蒙大家喜爱和编辑推荐,在此 ...

  5. java UDP网路编程

    大家都知道java中的socket网络编程,而其采用的协议分别有tcp和udp协议两种. 通常的理解tcp协议类似于打电话,udp类似于发短信.前者是线程安全的,但是效率比较低.后者则刚好相反. 今天 ...

  6. storm安装(2)ZeroMQ、JZMQ、Python、Java环境的安装

    2.ZeroMQ安装 把安装本件zeromq-2.1.7.tar.gz拷贝到home文件路径下, 给文件加入权限 chmod +x /home/zeromq-2.1.7.tar.gz 解压文件 tar ...

  7. Moq的使用心得

    Moq的使用心得 1.Moq中Mock Repository时最好是Mock Repository的接口,这样会避免不知名的错误. var mockClubRepository = new Mock& ...

  8. boke

    云/n 计算/v 代表/n IT/x 领域/n 向/p 集约化/v ./w 规模化/v 与/c 专业化/v 道路/n 发展/v 的/u 趋势/n ,/w 是/v IT/x 领域/n 正在/d 发生/v ...

  9. s​s​h​配​置​公​钥​和​私​钥​登​陆​S​e​c​u​r​e​C​R​T

    在用windows时管理linux服务器时,常会用到SecureCRT.Xshell以及开源的putty.在我工作环境大多都是采用密码认证的方式进行登录.今天对学习了些SecureCRT的密钥登录方式 ...

  10. 使用VS2010命令提示窗口操作程序集强命名

    说明:文中示例均以将文件置于D盘根目录(D:\)下为例. 一.查看程序集是否具有强命名 sn -T d:\LicBase.dll 若有则会显示PublicKeyToken值,反之不会. 二.给无强命名 ...