Created
June 15, 2015 22:08
-
-
Save vkmc/ce887f437f1d37aa237f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Trove on RHEL OSP 7.0 | |
********************* | |
Deployment details | |
================== | |
PackStack all-in-one using Kilo packages on CentOS 7. | |
Precisely, we followed the instructions here https://www.rdoproject.org/Quickstart with | |
current sudo yum install -y https://rdoproject.org/repos/rdo-release.rpm. | |
packstack --allinone | |
Trove configuration files | |
========================= | |
/etc/trove/trove.conf | |
[DEFAULT] | |
# Show more verbose log output (sets INFO log level output) | |
#verbose=True | |
verbose=True | |
# Show debugging output in logs (sets DEBUG log level output) | |
#debug=True | |
debug=False | |
# Address to bind the API server | |
#bind_host=0.0.0.0 | |
bind_host=0.0.0.0 | |
# Port the bind the API server to | |
#bind_port=8779 | |
bind_port=8779 | |
# Number of workers for the API service. The default will | |
# be the number of CPUs available. (integer value) | |
#trove_api_workers=None | |
trove_api_workers=24 | |
#===================== RPC Configuration ================================= | |
# URL representing the messaging driver to use and its full configuration. | |
# If not set, we fall back to the 'rpc_backend' option and driver specific | |
# configuration. | |
#transport_url=<None> | |
# The messaging driver to use. Options include rabbit, qpid and zmq. | |
# Default is rabbit. (string value) | |
#rpc_backend=rabbit | |
# The default exchange under which topics are scoped. May be | |
# overridden by an exchange name specified in the 'transport_url option. | |
#control_exchange=trove | |
control_exchange=trove | |
# ==================== RabbitMQ Configuration ======================= | |
# The RabbitMQ broker address where a single node is used. | |
# (string value) | |
#rabbit_host=localhost | |
# The RabbitMQ broker port where a single node is used. | |
# (integer value) | |
#rabbit_port=5672 | |
# RabbitMQ HA cluster host:port pairs. (list value) | |
#rabbit_hosts=$rabbit_host:$rabbit_port | |
# Connect over SSL for RabbitMQ. (boolean value) | |
#rabbit_use_ssl=false | |
# The RabbitMQ userid. (string value) | |
#rabbit_userid=guest | |
# The RabbitMQ password. (string value) | |
#rabbit_password=f7999d1955c5014aa32c | |
# The RabbitMQ virtual host. (string value) | |
#rabbit_virtual_host=/ | |
# Maximum line size of message headers to be accepted. | |
# max_header_line may need to be increased when using large tokens | |
# (typically those generated by the Keystone v3 API with big service | |
# catalogs) | |
# max_header_line = 16384 | |
#DB Api Implementation | |
#db_api_implementation="trove.db.sqlalchemy.api" | |
# Configuration options for talking to nova via the novaclient. | |
#trove_auth_url=http://0.0.0.0:5000/v2.0 | |
trove_auth_url=http://10.16.44.116:5000/v2.0 | |
#nova_compute_url=http://localhost:8774/v2 | |
nova_compute_url=http://10.16.44.116:8774/v2 | |
#cinder_url=http://localhost:8776/v1 | |
cinder_url=http://10.16.44.116:8776/v1 | |
#swift_url=http://localhost:8080/v1/AUTH_ | |
swift_url=http://10.16.44.116:8080/v1/AUTH_ | |
#neutron_url=http://localhost:9696/ | |
# nova_compute_url, cinder_url, swift_url, and heat_url can all be fetched | |
# from Keystone. To fetch from Keystone, comment out nova_compute_url, | |
# cinder_url, swift_url, and heat_url and optionally uncomment the lines below. | |
# Region name of this node. Used when searching catalog. Default value is None. | |
#os_region_name=RegionOne | |
# Service type to use when searching catalog. | |
#nova_compute_service_type=compute | |
# Service type to use when searching catalog. | |
#cinder_service_type=volumev2 | |
# Service type to use when searching catalog. | |
#swift_service_type=object-store | |
# Service type to use when searching catalog. | |
#heat_service_type=orchestration | |
# Service type to use when searching catalog. | |
#neutron_service_type=network | |
# Config option for showing the IP address that nova doles out | |
# For nova-network, set this to the appropriate network label defined in nova | |
# For neutron, set this to .* since users can specify custom network labels | |
# You can also optionally specify regex'es to match the actual IP addresses | |
# ip_regex (white-list) is applied before black_list_regex in the filter chain | |
#network_label_regex=^private$ | |
network_label_regex=.* | |
#network_label_regex=.* //with neutron enabled | |
#ip_regex=^(15.|123.) | |
#black_list_regex=^10.0.0. | |
# Config options for enabling volume service | |
#trove_volume_support=True | |
#block_device_mapping=vdb | |
#device_path=/dev/vdb | |
# Maximum volume size for an instance | |
#max_accepted_volume_size=10 | |
#max_instances_per_user=5 | |
# Maximum volume capacity (in GB) spanning across all trove volumes per tenant | |
#max_volumes_per_user=100 | |
#max_backups_per_user=5 | |
#volume_time_out=30 | |
# Config options for rate limits | |
#http_get_rate=200 | |
#http_post_rate=200 | |
#http_put_rate=200 | |
#http_delete_rate=200 | |
#http_mgmt_post_rate=200 | |
# Trove DNS | |
#trove_dns_support=False | |
#dns_account_id=123456 | |
#dns_auth_url=http://127.0.0.1:5000/v2.0 | |
#dns_username=user | |
#dns_passkey=password | |
#dns_ttl=3600 | |
#dns_domain_name='trove.com.' | |
#dns_domain_id=11111111-1111-1111-1111-111111111111 | |
#dns_driver=trove.dns.designate.driver.DesignateDriver | |
#dns_instance_entry_factory=trove.dns.designate.driver.DesignateInstanceEntryFactory | |
#dns_endpoint_url=http://127.0.0.1/v1/ | |
#dns_service_type=dns | |
# Neutron | |
network_driver=trove.network.nova.NovaNetwork | |
#network_driver=trove.network.neutron.NeutronDriver | |
#default_neutron_networks= | |
# Taskmanager queue name | |
#taskmanager_queue=taskmanager | |
taskmanager_queue=taskmanager | |
# Auth | |
#admin_roles=admin | |
# Users to ignore for user create/list/delete operations | |
#ignore_users=os_admin,root | |
#ignore_dbs=lost+found,mysql,information_schema | |
# Guest related conf | |
#agent_heartbeat_time=10 | |
#agent_call_low_timeout=5 | |
#agent_call_high_timeout=150 | |
# Reboot time out for instances | |
#reboot_time_out=60 | |
# Trove api-paste file name | |
#api_paste_config=/usr/share/trove/trove-dist-paste.ini | |
# ============ Notification System configuration =========================== | |
# Sets the notification driver used by oslo.messaging. Options include | |
# messaging, messagingv2, log and routing. Default is 'noop' | |
# notification_driver=noop | |
# Topics used for OpenStack notifications, list value. Default is 'notifications'. | |
# notification_topics=['notifications', ] | |
# ============ Logging information ============================= | |
#log_dir=/integration/report | |
log_dir=/var/log/trove | |
#log_file=/var/log/trove/trove.log | |
log_file=/var/log/trove/trove-api.log | |
backlog=4096 | |
nova_proxy_admin_pass=admin | |
nova_proxy_admin_tenant_name=services | |
use_syslog=False | |
nova_proxy_admin_user=admin | |
[database] | |
# SQLAlchemy connection string for the reference implementation | |
# registry server. Any valid SQLAlchemy connection string is fine. | |
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine | |
# connection = sqlite:///trove_test.sqlite | |
connection = mysql://trove:[email protected]/trove | |
#connection=mysql://root:e1a2c042c828d3566d0a@localhost/trove | |
#connection=postgresql://trove:trove@localhost/trove | |
# Period in seconds after which SQLAlchemy should reestablish its connection | |
# to the database. | |
# | |
# MySQL uses a default `wait_timeout` of 8 hours, after which it will drop | |
# idle connections. This can result in 'MySQL Gone Away' exceptions. If you | |
# notice this, you can lower this value to ensure that SQLAlchemy reconnects | |
# before MySQL can drop the connection. | |
#idle_timeout=3600 | |
# ============ SSL configuration (and enablement) ============================= | |
# In order to enable SSL for the trove api server, uncomment | |
# the cert_file and key_file - and of course have those files | |
# accessible. The existence of those setting and files will | |
# enable SSL. | |
[profiler] | |
# If False fully disable profiling feature. | |
#enabled=False | |
# If False doesn't trace SQL requests. | |
#trace_sqlalchemy=True | |
[ssl] | |
#cert_file=/path/to/server.crt | |
#key_file=/path/to/server.key | |
#optional: | |
#ca_file=/path/to/ca_file | |
[mysql] | |
#root_on_create=False | |
# Format (single port or port range): A, B-C | |
# where C greater than B | |
#tcp_ports=3306 | |
#volume_support=True | |
#device_path=/dev/vdb | |
cluster_support=True | |
[redis] | |
#tcp_ports=6379 | |
#redis uses local storage | |
#volume_support=False | |
# default device_path = None | |
[cassandra] | |
#tcp_ports=7000,7001,9042,9160 | |
#volume_support=True | |
#device_path=/dev/vdb | |
[couchbase] | |
#tcp_ports=8091,8092,4369,11209-11211,21100-21199 | |
#volume_support=True | |
#device_path=/dev/vdb | |
[mongodb] | |
#tcp_ports=2500,27017 | |
#volume_support=True | |
#device_path=/dev/vdb | |
#num_config_servers_per_cluster=1 | |
#num_query_routers_per_cluster=1 | |
[vertica] | |
#tcp_ports=5433,5434,22,5444,5450,4803 | |
#udp_ports=5433,4803,4804,6453 | |
#volume_support=True | |
#device_path=/dev/vdb | |
#cluster_support=True | |
#cluster_member_count=3 | |
#api_strategy=trove.common.strategies.cluster.experimental.vertica.api.VerticaAPIStrategy | |
[keystone_authtoken] | |
admin_password=cdba8cccb40c4d18 | |
admin_user=trove | |
auth_protocol=http | |
admin_tenant_name=services | |
auth_host=10.16.44.116 | |
auth_port=35357 | |
[oslo_messaging_rabbit] | |
rabbit_virtual_host=/ | |
rabbit_hosts=10.16.44.116:5672 | |
rabbit_password=guest | |
rabbit_port=5672 | |
rabbit_use_ssl=False | |
rabbit_host=10.16.44.116 | |
rabbit_ha_queues=False | |
/etc/trove/trove-conductor.conf | |
[DEFAULT] | |
verbose = True | |
debug = False | |
trove_auth_url = http://10.16.44.116:5000/v2.0 | |
#===================== RPC Configuration ================================= | |
# URL representing the messaging driver to use and its full configuration. | |
# If not set, we fall back to the 'rpc_backend' option and driver specific | |
# configuration. | |
#transport_url=<None> | |
# The messaging driver to use. Options include rabbit, qpid and zmq. | |
# Default is rabbit. (string value) | |
#rpc_backend=rabbit | |
# The default exchange under which topics are scoped. May be | |
# overridden by an exchange name specified in the 'transport_url option. | |
control_exchange = trove | |
# ================ RabbitMQ Configuration =============================== | |
# The RabbitMQ broker address where a single node is used. | |
# (string value) | |
#rabbit_host=localhost | |
# The RabbitMQ broker port where a single node is used. | |
# (integer value) | |
#rabbit_port=5672 | |
# RabbitMQ HA cluster host:port pairs. (list value) | |
#rabbit_hosts=$rabbit_host:$rabbit_port | |
# Connect over SSL for RabbitMQ. (boolean value) | |
#rabbit_use_ssl=false | |
# The RabbitMQ userid. (string value) | |
#rabbit_userid=guest | |
# The RabbitMQ password. (string value) | |
rabbit_password=f7999d1955c5014aa32c | |
# The RabbitMQ virtual host. (string value) | |
#rabbit_virtual_host=/ | |
# The manager class to use for conductor. (string value) | |
conductor_manager = trove.conductor.manager.Manager | |
nova_proxy_admin_user=admin | |
log_dir=/var/log/trove | |
log_file=/var/log/trove/trove-conductor.log | |
nova_proxy_admin_tenant_name=services | |
use_syslog=False | |
nova_proxy_admin_pass=admin | |
[profiler] | |
# If False fully disable profiling feature. | |
#enabled = False | |
# If False doesn't trace SQL requests. | |
#trace_sqlalchemy = True | |
[database] | |
connection = mysql://trove:[email protected]/trove | |
[oslo_messaging_rabbit] | |
rabbit_host=10.16.44.116 | |
rabbit_virtual_host=/ | |
rabbit_password=guest | |
rabbit_port=5672 | |
rabbit_ha_queues=False | |
rabbit_hosts=10.16.44.116:5672 | |
rabbit_use_ssl=False | |
/etc/trove/trove-taskmanager.conf | |
[DEFAULT] | |
# Show more verbose log output (sets INFO log level output) | |
verbose = True | |
# Show debugging output in logs (sets DEBUG log level output) | |
debug = False | |
# Update the service and instance statuses if the instances fails to become | |
# active within the configured usage_timeout. | |
# usage_timeout = 600 | |
# restore_usage_timeout = 36000 | |
update_status_on_fail = True | |
#================= RPC Configuration ================================ | |
# URL representing the messaging driver to use and its full configuration. | |
# If not set, we fall back to the 'rpc_backend' option and driver specific | |
# configuration. | |
#transport_url=<None> | |
# The messaging driver to use. Options include rabbit, qpid and zmq. | |
# Default is rabbit. (string value) | |
#rpc_backend=rabbit | |
# The default exchange under which topics are scoped. May be | |
# overridden by an exchange name specified in the 'transport_url option. | |
control_exchange = trove | |
# ================ RabbitMQ Configuration =========================== | |
# The RabbitMQ broker address where a single node is used. | |
# (string value) | |
#rabbit_host=localhost | |
# The RabbitMQ broker port where a single node is used. | |
# (integer value) | |
#rabbit_port=5672 | |
# RabbitMQ HA cluster host:port pairs. (list value) | |
#rabbit_hosts=$rabbit_host:$rabbit_port | |
# Connect over SSL for RabbitMQ. (boolean value) | |
#rabbit_use_ssl=false | |
# The RabbitMQ userid. (string value) | |
#rabbit_userid=guest | |
# The RabbitMQ password. (string value) | |
rabbit_password=f7999d1955c5014aa32c | |
# The RabbitMQ virtual host. (string value) | |
#rabbit_virtual_host=/ | |
#DB Api Implementation | |
db_api_implementation = trove.db.sqlalchemy.api | |
# Configuration options for talking to nova via the novaclient. | |
trove_auth_url = http://10.16.44.116:5000/v2.0 | |
#nova_compute_url = http://localhost:8774/v2 | |
#cinder_url = http://localhost:8776/v1 | |
#swift_url = http://localhost:8080/v1/AUTH_ | |
#neutron_url = http://localhost:9696/ | |
# nova_compute_url, cinder_url, swift_url, and heat_url can all be fetched | |
# from Keystone. To fetch from Keystone, comment out nova_compute_url, | |
# cinder_url, swift_url, and heat_url and optionally uncomment the lines below. | |
# Region name of this node. Used when searching catalog. Default value is None. | |
#os_region_name = RegionOne | |
# Service type to use when searching catalog. | |
#nova_compute_service_type = compute | |
# Service type to use when searching catalog. | |
#cinder_service_type = volumev2 | |
# Service type to use when searching catalog. | |
#swift_service_type = object-store | |
# Service type to use when searching catalog. | |
#heat_service_type = orchestration | |
# Service type to use when searching catalog. | |
#neutron_service_type = network | |
# Config options for enabling volume service | |
trove_volume_support = True | |
block_device_mapping = vdb | |
device_path = /dev/vdb | |
mount_point = /var/lib/mysql | |
volume_time_out=30 | |
server_delete_time_out=480 | |
# Nova server boot options | |
# sets the --config-drive argument when doing a nova boot | |
# (controls how file injection is handled by nova) | |
use_nova_server_config_drive = False | |
# 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 = admin | |
nova_proxy_admin_tenant_name = services | |
# Manager impl for the taskmanager | |
taskmanager_manager=trove.taskmanager.manager.Manager | |
# Manager sends Exists Notifications | |
exists_notification_transformer = trove.extensions.mgmt.instances.models.NovaNotificationTransformer | |
exists_notification_ticks = 30 | |
notification_service_id = mysql:2f3ff068-2bfb-4f70-9a9d-a6bb65bc084b | |
# Trove DNS | |
trove_dns_support = False | |
dns_account_id = 123456 | |
dns_auth_url = http://127.0.0.1:5000/v2.0 | |
dns_username = user | |
dns_passkey = password | |
dns_ttl = 3600 | |
dns_domain_name = 'trove.com.' | |
dns_domain_id = 11111111-1111-1111-1111-111111111111 | |
dns_driver = trove.dns.designate.driver.DesignateDriver | |
dns_instance_entry_factory = trove.dns.designate.driver.DesignateInstanceEntryFactory | |
dns_endpoint_url = http://127.0.0.1/v1/ | |
dns_service_type = dns | |
# Neutron | |
#network_driver = trove.network.neutron.NeutronDriver | |
network_driver = trove.network.nova.NovaNetwork | |
default_neutron_networks = | |
# Trove Security Groups for Instances | |
trove_security_groups_support = True | |
trove_security_group_rule_cidr = 0.0.0.0/0 | |
# Guest related conf | |
agent_heartbeat_time = 10 | |
agent_call_low_timeout = 5 | |
agent_call_high_timeout = 150 | |
agent_replication_snapshot_timeout = 36000 | |
# Whether to use nova's contrib api for create server with volume | |
use_nova_server_volume = False | |
# Config option for filtering the IP address that DNS uses | |
# For nova-network, set this to the appropriate network label defined in nova | |
# For neutron, set this to .* since users can specify custom network labels | |
# You can also optionally specify regex'es to match the actual IP addresses | |
# ip_regex (white-list) is applied before black_list_regex in the filter chain | |
network_label_regex = .* | |
#ip_regex = ^(15.|123.) | |
#black_list_regex = ^(10.0.0.) | |
# Datastore templates | |
template_path = /etc/trove/templates/ | |
# ============ Notification System configuration =========================== | |
# Sets the notification driver used by oslo.messaging. Options include | |
# messaging, messagingv2, log and routing. Default is 'noop' | |
# notification_driver=noop | |
# Topics used for OpenStack notifications, list value. Default is 'notifications'. | |
# notification_topics=['notifications', ] | |
# ============ Logging information ============================= | |
#log_dir = /integration/report | |
log_dir = /var/log/trove | |
#log_file = trove-taskmanager.log | |
log_file = /var/log/trove/trove-taskmanager.log | |
# ============ PyDev remote dubugging ============================= | |
# Enable or disable pydev remote debugging. | |
# There are three values allowed: 'disabled', 'enabled' and 'auto' | |
# If value is 'auto' tries to connect to remote debugger server, | |
# but in case of error continue running with disabled debugging | |
pydev_debug = disabled | |
# remote debug server host and port options | |
#pydev_debug_host = localhost | |
#pydev_debug_port = 5678 | |
# path to pydevd library. It will be used if pydevd is absent in sys.path | |
#pydev_path = <path> | |
use_syslog=False | |
guest_config=/etc/trove/trove-guestmanager.conf | |
[database] | |
# SQLAlchemy connection string for the reference implementation | |
# registry server. Any valid SQLAlchemy connection string is fine. | |
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine | |
connection = mysql://trove:[email protected]/trove | |
# connection = mysql://root:root@localhost/trove | |
# Period in seconds after which SQLAlchemy should reestablish its connection | |
# to the database. | |
# | |
# MySQL uses a default `wait_timeout` of 8 hours, after which it will drop | |
# idle connections. This can result in 'MySQL Gone Away' exceptions. If you | |
# notice this, you can lower this value to ensure that SQLAlchemy reconnects | |
# before MySQL can drop the connection. | |
idle_timeout = 3600 | |
# ================= Guestagent related ======================== | |
# guest_config = /etc/trove/trove-guestagent.conf | |
# Use 'guest_info = /etc/guest_info' for pre-Kilo compatibility | |
# guest_info = guest_info.conf | |
guest_info = /etc/guest_info | |
# Use 'injected_config_location = /etc/trove' for pre-Kilo compatibility | |
# injected_config_location = /etc/trove/conf.d | |
injected_config_location = /etc/trove | |
#cloudinit_location = /etc/trove/cloudinit | |
# ================= Security groups related ======================== | |
# Each future datastore implementation should implement | |
# its own oslo group with defined in it: | |
# - tcp_ports; upd_ports; | |
[profiler] | |
# If False fully disable profiling feature. | |
#enabled = False | |
# If False doesn't trace SQL requests. | |
#trace_sqlalchemy = True | |
[mysql] | |
# Format (single port or port range): A, B-C | |
# where C greater than B | |
tcp_ports = 3306 | |
volume_support = True | |
device_path = /dev/vdb | |
[redis] | |
# Format (single port or port range): A, B-C | |
# where C greater than B | |
tcp_ports = 6379 | |
# redis uses local storage | |
volume_support = False | |
# default device_path = None | |
[cassandra] | |
tcp_ports = 7000, 7001, 9042, 9160 | |
volume_support = True | |
device_path = /dev/vdb | |
[couchbase] | |
tcp_ports = 8091, 8092, 4369, 11209-11211, 21100-21199 | |
volume_support = True | |
device_path = /dev/vdb | |
[mongodb] | |
volume_support = True | |
device_path = /dev/vdb | |
[vertica] | |
tcp_ports = 5433, 5434, 22, 5444, 5450, 4803 | |
udp_ports = 5433, 4803, 4804, 6453 | |
volume_support = True | |
device_path = /dev/vdb | |
mount_point = /var/lib/vertica | |
taskmanager_strategy = trove.common.strategies.cluster.experimental.vertica.taskmanager.VerticaTaskManagerStrategy | |
[oslo_messaging_rabbit] | |
rabbit_use_ssl=False | |
rabbit_host=10.16.44.116 | |
rabbit_virtual_host=/ | |
rabbit_port=5672 | |
rabbit_password=guest | |
rabbit_hosts=10.16.44.116:5672 | |
rabbit_ha_queues=False | |
/etc/trove/trove-guestmanager.conf | |
[DEFAULT] | |
# Show more verbose log output (sets INFO log level output) | |
verbose = true | |
# Show debugging output in logs (sets DEBUG log level output) | |
debug = true | |
# Address to bind the API server | |
bind_host = 0.0.0.0 | |
# Port the bind the API server to | |
bind_port = 8778 | |
# AMQP Connection info | |
rabbit_user=guest | |
rabbit_password=guest | |
# Path to the extensions | |
api_extensions_path = trove/extensions/routes | |
# Configuration options for talking to nova via the novaclient. | |
# These options are for an admin user in your keystone config. | |
# It proxies 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 = admin | |
nova_proxy_admin_tenant_name = services | |
trove_auth_url = http://10.16.44.116:5000/v2.0 | |
swift_url = http://10.16.44.116:8080/v1/AUTH_ | |
# Datastore management implementations. Format datastore:manager.impl | |
# datastore_registry_ext = mysql:trove.guestagent.datastore.mysql.manager.Manager, percona:trove.guestagent.datastore.mysql.manager.Manager | |
# Root configuration | |
root_grant = ALL | |
root_grant_option = True | |
#root_grant = ALTER ROUTINE, CREATE, ALTER, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, CREATE USER, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE, USAGE | |
#root_grant_option = False | |
# used by passlib to generate root password | |
#default_password_length = 36 | |
# For communicating with trove-conductor | |
control_exchange = trove | |
# ============ kombu connection options ======================== | |
rabbit_host=10.16.44.116 | |
# ============ Logging information ============================= | |
log_dir = /var/log/trove | |
log_file = trove-guestagent.log | |
storage_strategy = SwiftStorage | |
storage_namespace = trove.guestagent.strategies.storage.swift | |
# ========== Default Storage Options for backup ========== | |
backup_swift_container = database_backups | |
backup_use_gzip_compression = True | |
backup_use_openssl_encryption = True | |
backup_aes_cbc_key = "default_aes_cbc_key" | |
backup_use_snet = False | |
backup_chunk_size = 65536 | |
backup_segment_max_size = 2147483648 | |
# ========== Datastore Specific Configuration Options ========== | |
[mysql] | |
# Users to ignore for user create/list/delete operations | |
ignore_users = os_admin | |
ignore_dbs = lost+found, mysql, information_schema | |
# Strategy information for backups | |
backup_namespace = trove.guestagent.strategies.backup.mysql_impl | |
backup_strategy = InnoBackupEx | |
# Additional commandline options to be passed to the backup runner (by strategy). For example: | |
# backup_runner_options = InnoBackupEx:--no-lock, MySQLDump:--events --routines --triggers | |
restore_namespace = trove.guestagent.strategies.restore.mysql_impl | |
# Strategy information for replication | |
replication_strategy = MysqlBinlogReplication | |
replication_namespace = trove.guestagent.strategies.replication.mysql_binlog | |
replication_user = slave_user | |
replication_password = slave_password | |
IMPORTANT NOTES | |
- trove-taskmanager.conf: Make sure that the guestagent related configuration options, precisely this set of configuration options | |
# ================= Guestagent related ======================== | |
# guest_config = /etc/trove/trove-guestagent.conf | |
# Use 'guest_info = /etc/guest_info' for pre-Kilo compatibility | |
# guest_info = guest_info.conf | |
guest_info = /etc/guest_info | |
# Use 'injected_config_location = /etc/trove' for pre-Kilo compatibility | |
# injected_config_location = /etc/trove/conf.d | |
injected_config_location = /etc/trove | |
#cloudinit_location = /etc/trove/cloudinit | |
are located under the [DEFAULT] configuration group. Otherwise, IT WON'T WORK. | |
In prior versions (< Kilo) the injected configuration location was not configurable, making it harder to use Trove in different distributions. | |
- trove-taskmanager.conf: Make sure that the backup and replication configuration options, precisely this set of configuration options | |
# Strategy information for backups | |
backup_namespace = trove.guestagent.strategies.backup.mysql_impl | |
backup_strategy = InnoBackupEx | |
# Additional commandline options to be passed to the backup runner (by strategy). For example: | |
# backup_runner_options = InnoBackupEx:--no-lock, MySQLDump:--events --routines --triggers | |
restore_namespace = trove.guestagent.strategies.restore.mysql_impl | |
# Strategy information for replication | |
replication_strategy = MysqlBinlogReplication | |
replication_namespace = trove.guestagent.strategies.replication.mysql_binlog | |
replication_user = slave_user | |
replication_password = slave_password | |
are under the corresponding datastore configuration group. In this case, mysql (mariadb), so they should be under [mysql]. | |
Otherwise, IT WON'T WORK. | |
Image creation process | |
====================== | |
A working Trove compatible image can be created using the script located in https://github.com/vkmc/trove-image-elements. | |
Usage instructions: | |
- Clone the repository - git clone https://github.com/vkmc/trove-image-elements | |
- cd trove-image-elements | |
- Run the script - sudo ./create_trove_image.sh -s mysql -d centos | |
- Wait for it to finish... | |
- Load the generated image to Glance - glance image-create --name centos-trove-mariadb55 --container-format ovf --disk-format qcow2 --is-public true < centos-mysql-guest-image.qcow2 | |
- Get the Glance image id (e.g. 6960beb8-611b-431a-aa0f-c2397fbae3d6) | |
- Load the datastore to the catalog - sudo ./load_trove_image.sh -s mysql -v 5.5 -i 6960beb8-611b-431a-aa0f-c2397fbae3d6 -p mariadb-galera-server | |
- Launch a Trove instance with the recently created image - trove create my-trove-instance 2 --size 1 --datastore mysql --datastore_version 5.5 | |
Backups | |
======= | |
Currently you can choose between two alternatives for backups | |
* MySQLDump backup | |
* InnoBackupEx backup | |
MySQLDump is probably the most popular backup method for MySQL. It is the perfect tool when migrating data between different | |
versions or storage engines of MySQL, or when you need to change something in the text file dump before restoring it. | |
Use it in conjunction with xtrabackup to give you more recovery options. | |
InnoBackupEx relies on Xtrabackup. Xtrabackup is an open-source MySQL hot backup utility from Percona. It does not lock the database during the backup process. For large databases (100+ GB), it provides much better restoration time as compared to mysqldump. | |
Change the backup_strategy configuration under [mysql] configuration group. | |
* backup_strategy = MySQLDump | |
* backup_strategy = InnoBackupEx | |
To create a new backup, simply run 'trove backup-create <instance> <name>'. E.g. get the instance id listing the current | |
available instances with 'trove list'. Create the backup with 'trove backup-create d8f4f5a6-54a8-4170-95a6-7d39166a32ed mydb-bk'. | |
To restore a backup, create a new instance using the backup id like 'trove create <name> <flavor_id> --size n --backup_of <backup_id>'. E.g | |
get the backup id listing the current available backups with 'trove backup-list'. Create a new Trove instance with | |
'trove create mydb-bk-rt 2 --size 1 --backup_of 2952d52f-99c0-413d-9384-b6ccd3d61d2f. | |
Clustering | |
========== | |
Clustering is not supported for mariadb 5.5. It will be added for mariadb 10 and other datastores (mongodb, at least). | |
Replication | |
=========== | |
mariadb 5.5 supports binlog replication only. Binlog replication works, briefly, as follows: The MySQL instance operating | |
as the master (the source of the database changes) writes updates and changes as "events" to the binary log. | |
The information in the binary log is stored in different logging formats according to the database changes being recorded. | |
Slaves are configured to read the binary log from the master and to execute the events in the binary log on the slave's | |
local database. | |
To configure this, you need to modify the following configuration options: | |
replication_strategy = MysqlBinlogReplication | |
replication_namespace = trove.guestagent.strategies.replication.mysql_binlog | |
replication_user = slave_user | |
replication_password = slave_password | |
To create a replica of an instance, create a new instance using the instance id like 'trove create <name> <flavor_id> --size n --replica_of <instance_id>'. E.g. get the instance id listing the current available instances 'trove list', and then run | |
trove create replica-of-x 2 --size 1 --replica_of 2952d52f-99c0-413d-9384-b6ccd3d61d2f. | |
IMPORTANT NOTES | |
- For replication to work, images should have Percona XtraBackup installed in the guest image | |
- Also, make sure that the version of the datastore, when you load the datastore to Trove, is 5.5. If it doesn't match | |
the version then the replication will fail (it will default to GTID replication, a feature supported in mysql 5.6) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment