trove manual installation 翻譯

目標python

此文件提供了一步一步的指導手動安裝trove在一個現有OpenStack的環境爲了開發。mysql

 

該文件將不包括:git

OpenStack的設置redis

trove服務配置sql

 

要求mongodb

正在運行的OpenStack的環境是必需的,包括如下組件:數據庫

計算 (Nova)ubuntu

鏡像服務 (Glance)後端

身份認證 (Keystone)api

一個網絡組件 (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原創做品,受國家《著做權法》保護,未經許可,任何單位及我的不得作營利性使用;若僅作我的學習、交流等非營利性使用,應當指明做者姓名、做品名稱,原文地址,而且不得侵犯做者依法享有的其餘權利。

相關文章
相關標籤/搜索