1. 程式人生 > >OpenStack雙節點部署—M Trove(資料庫服務)

OpenStack雙節點部署—M Trove(資料庫服務)

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

在這裡插入圖片描述