zoukankan      html  css  js  c++  java
  • trove manual installation 翻译

    目标

    此文件提供了一步一步的指导手动安装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原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

  • 相关阅读:
    COJ 0981 WZJ的数据结构(负十九)树综合
    BZOJ 3153 Sone1
    点分治模板
    thinkphp或thinkcmf 《文章编辑,文章添加》 访问另一个表的分类,添加入另一个表时将id值以(,)逗号分隔储存,编辑时以(,)逗号分隔并且相等的id值被选中
    《手机端》让多出的导航变水平拖动,不让他 float 撑下去
    favicon.ico 网站小图标标识
    CSS3实战开发: 折角效果实战开发
    jquery怎么在点击li标签之后添加一个在class,点击下一个li时删除上一个class?
    position 有五个值:static、relative、absolute、fixed、inherit。
    CSS3 transition 属性过渡效果 详解
  • 原文地址:https://www.cnblogs.com/S-tec-songjian/p/5845496.html
Copyright © 2011-2022 走看看