Trove安装
一、数据库配置
Controller节点
# mysql -u root -p123456
MariaDB [(none)]> CREATE DATABASE trove;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON trove.* TO 'trove'@'localhost' IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON trove.* TO 'trove'@'%' IDENTIFIED BY '123456';
MariaDB [(none)]> exit
二、创建服务凭证和API端点
Controller节点
1.创建服务凭证
# . /root/admin-openrc
# openstack user create --domain default --password-prompt trove
User Password:
Repeat User Password:
# openstack role add --project service --user trove admin
# openstack service create --name trove --description "Database" database
2.创建API端点
# openstack endpoint create --region RegionOne database public http://controller:8779/v1.0/%\(tenant_id\)s
# openstack endpoint create --region RegionOne database internal http://controller:8779/v1.0/%\(tenant_id\)s
# openstack endpoint create --region RegionOne database admin http://controller:8779/v1.0/%\(tenant_id\)s
三、安装并配置trove服务
1.安装Trove相关包
# yum install -y openstack-trove python-troveclient
由于缺少包,因此我们需要修改一下yum源,此时需要联网
1)添加[mitaka-hang]
# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[mitaka]
name=mitaka
baseurl=file:///opt/mitaka/Openstack-Mitaka
gpgcheck=0
enabled=1
[mitaka-hang]
name=mitaka-hang
baseurl=http://mirror.fuel-infra.org/pkgs/centos-7-mos9.2mu1/cloud/x86_64/openstack-mitaka/
gpgcheck=0
enabled=1
2)清除yum源缓存
# yum clean all
# yum makecache
3)安装Trove相关包
# yum install -y openstack-trove python-troveclient
2.修改相关配置文件
注:修改配置文件时,找到相应选项进行修改,没有该选项时再选择适当位置添加,随意添加选项容易造成服务启动失败
1)编辑trove.conf、trove-taskmanager.conf、trove-conductor.conf文件,内容相同
# vi /etc/trove/trove.conf
# vi /etc/trove/trove-taskmanager.conf
# vi /etc/trove/trove-conductor.conf
[DEFAULT]
rpc_backend=rabbit
log_dir = /var/log/trove
trove_auth_url = http://controller:5000/v2.0
nova_compute_url = http://controller:8774/v2
cinder_url = http://controller:8776/v1
swift_url = http://controller:8080/v1/AUTH_
neutron_url = http://controller:9696/
notifier_queue_hostname = controller
[database]
connection = mysql+pymysql://trove:123456@controller/trove
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 123456
rabbit_port = 5672
2)校对api-paste.ini文件(可以先把该文件备份,然后将内容复制、粘贴进去)
# mv /etc/trove/api-paste.ini /etc/trove/api-paste-backup.ini
# vi /etc/trove/api-paste.ini
[composite:trove]
use = call:trove.common.wsgi:versioned_urlmap
/: versions
/v1.0: troveapi
[app:versions]
paste.app_factory = trove.versions:app_factory
[pipeline:troveapi]
pipeline = cors faultwrapper osprofiler authtoken authorization contextwrapper ratelimit extensions troveapp
#pipeline = debug extensions troveapp
[filter:extensions]
paste.filter_factory = trove.common.extensions:factory
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
[filter:authorization]
paste.filter_factory = trove.common.auth:AuthorizationMiddleware.factory
[filter:cors]
paste.filter_factory = oslo_middleware.cors:filter_factory
oslo_config_project = trove
[filter:contextwrapper]
paste.filter_factory = trove.common.wsgi:ContextMiddleware.factory
[filter:faultwrapper]
paste.filter_factory = trove.common.wsgi:FaultWrapper.factory
[filter:ratelimit]
paste.filter_factory = trove.common.limits:RateLimitingMiddleware.factory
[filter:osprofiler]
paste.filter_factory = osprofiler.web:WsgiMiddleware.factory
[app:troveapp]
paste.app_factory = trove.common.api:app_factory
#Add this filter to log request and response for debugging
[filter:debug]
paste.filter_factory = trove.common.wsgi:Debug
3)编辑trove.conf文件
# vi /etc/trove/trove.conf
auth_strategy = keystone
# Config option for showing the IP address that nova doles out
add_addresses = True
network_label_regex = .*
api_paste_config = /etc/trove/api-paste.ini
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = trove
password = 123456
4)编辑trove-taskmanager.conf文件
# vi /etc/trove/trove-taskmanager.conf
[DEFAULT]
# Configuration options for talking to nova via the novaclient.
# These options are for an admin user in your keystone config.
# It proxy's the token received from the user to send to nova
# via this admin users creds,
# basically acting like the client via that proxy token.
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 123456
nova_proxy_admin_tenant_name = service
taskmanager_manager = trove.taskmanager.manager.Manager
5)编辑trove-guestagent.conf文件
# vi /etc/trove/trove-guestagent.conf
rabbit_host = controller
rabbit_password = 123456
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 123456
nova_proxy_admin_tenant_name = service
trove_auth_url = http://controller:35357/v2.0
3.同步数据库
# su -s /bin/sh -c "trove-manage db_sync" trove
4.启动trove服务并设置开机自启
# systemctl enable openstack-trove-api.service \
openstack-trove-taskmanager.service \
openstack-trove-conductor.service
# systemctl start openstack-trove-api.service \
openstack-trove-taskmanager.service \
openstack-trove-conductor.service
三、验证操作,并创建数据库实例
1.上传mysql镜像
# . /root/admin-openrc
# trove list
# glance image-create --name "mysqlTest" --disk-format qcow2 --container-format bare --file MySQL_5.6_XD.qcow2
# su -s /bin/sh -c "trove-manage --config-file /etc/trove/trove.conf datastore_update mysql ''" trove
# su -s /bin/sh -c "trove-manage --config-file /etc/trove/trove.conf \
datastore_version_update \
mysql mysql-5.6 bd06bfb8-0018-4c9a-84c5-3c6308ddfbc6 '' 1" trove
2.创建MySQL数据库
各种数据库实例的最低需求
Database RAM (MB) Disk (GB) VCPUs
MySQL 512 5 1
Cassandra 2048 5 1
MongoDB 1024 5 1
Redis 512 5 1
1)查看实例类型
# openstack flavor list
2)创建一个适合mysql的运行实例
实例名:mysql_minimum
实例ID:必须使用尚未使用的ID,在本例中,ID使用的是1到5,因此使用ID 6
RAM: 512MB
Disk:5GB
VCPU:1
# openstack flavor create mysql-minimum --id 6 --ram 512 --disk 5 --vcpus 1
3)使用trove创建一个mysql数据库
数据库名:mysql_instance_1
数据库实例:6
卷大小:1GB
myDB数据库
数据库基于mysql数据存储和mysql-5.6 datastore_version
用户为userA,密码为password
# trove create mysql_instance_2 6 --size 1 --databases myDB_2 \
--users userA:password --datastore_version mysql-5.6 \
--datastore mysql
# trove show 585bbf26-4343-4b0b-8330-b82bf27eb291