diff options
author | Rob Daugherty <rd472p@att.com> | 2018-12-13 13:58:11 -0500 |
---|---|---|
committer | Rob Daugherty <rd472p@att.com> | 2018-12-13 14:02:57 -0500 |
commit | e162ac7ac117d2a1948ec2ea6845d0e132b2967e (patch) | |
tree | 02386bdd5e7bcabac1a9821e892b842d3226838e /mdbc-packages | |
parent | ba7c4ffe49495ad0e2ce986192f65c8ae63bb2bd (diff) |
Docker compose scripts for two mdbc sites
This is a two site installation, with a single cassandra
container, two mariadb containers, and two mdbc-server
containers.
Server 1 exposes port 30001 and server 2 exposes port 30002.
To build the docker images, first build mdbc software
normally, then use the 'docker' maven profile:
mvn -P docker clean install
To bring up the environment:
cd mdbc-packages/mdbc-docker/compose/two-sites
docker-compose up
Change-Id: I10155ebf47dec4e787d44b23886ab8453ac4315f
Issue-ID: MUSIC-263
Signed-off-by: Rob Daugherty <rd472p@att.com>
Diffstat (limited to 'mdbc-packages')
12 files changed, 397 insertions, 2 deletions
diff --git a/mdbc-packages/mdbc-docker/compose/one-site/docker-compose.yml b/mdbc-packages/mdbc-docker/compose/one-site/docker-compose.yml index d30d3e2..ca597ad 100644 --- a/mdbc-packages/mdbc-docker/compose/one-site/docker-compose.yml +++ b/mdbc-packages/mdbc-docker/compose/one-site/docker-compose.yml @@ -48,7 +48,7 @@ services: ports: - "30001:30001" volumes: - - ./volumes/mdbc-server/config:/app/config + - ./volumes/mdbc-server-1/config:/app/config environment: - JVM_ARGS=-Xms64m -Xmx512m - AVATICA_PORT=30001 diff --git a/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server/config/music.properties b/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server-1/config/music.properties index b030b62..b030b62 100644 --- a/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server/config/music.properties +++ b/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server-1/config/music.properties diff --git a/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server/config/tableConfiguration.json b/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server-1/config/tableConfiguration.json index 383593a..3438210 100644 --- a/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server/config/tableConfiguration.json +++ b/mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server-1/config/tableConfiguration.json @@ -3,7 +3,7 @@ { "tables": [ { - "table": "table11" + "table": "Persons" } ], "owner": "", diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/.env b/mdbc-packages/mdbc-docker/compose/two-sites/.env new file mode 100644 index 0000000..1c22d2b --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/.env @@ -0,0 +1,2 @@ +# Default values used by docker-compose if not defined as environment variables. +MTU=1500 diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/docker-compose.yml b/mdbc-packages/mdbc-docker/compose/two-sites/docker-compose.yml new file mode 100644 index 0000000..b1615fc --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/docker-compose.yml @@ -0,0 +1,117 @@ +version: '3' +networks: + default: + driver: bridge + driver_opts: + com.docker.network.driver.mtu: ${MTU} +services: +################################################################################ + cassandra-1: + image: + onap/music/mdbc-cassandra + container_name: + cassandra-1 + hostname: + cassandra-1.music.testlab.onap.org + expose: + - 9042 + - 9160 + - 7199 + environment: + - CASSANDRA_CLUSTER_NAME=testcluster + - CASSANDRA_SEEDS=cassandra-1 + - CASSANDRA_START_RPC=true + volumes: + - ./volumes/cassandra/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d +# - ./cache/cassandra-1:/var/lib/cassandra + command: + - -s0 +################################################################################ + mariadb-1: + image: mariadb:10.1.11 + container_name: + mariadb-1 + hostname: + mariadb-1.music.testlab.onap.org + expose: + - 3306 + environment: + - MYSQL_ROOT_PASSWORD=password + volumes: + - ./volumes/mariadb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d + - ./volumes/mariadb/conf.d:/etc/mysql/conf.d +################################################################################ + mdbc-server-1: + image: onap/music/mdbc-server + container_name: + mdbc-server-1 + ports: + - "30001:30001" + volumes: + - ./volumes/mdbc-server-1/config:/app/config + environment: + - JVM_ARGS=-Xms64m -Xmx512m + - AVATICA_PORT=30001 + - JDBC_URL=jdbc:mysql://mariadb-1:3306 + - JDBC_USER=test + - JDBC_PASSWORD=password + - EXIT_DELAY=900 + hostname: + mdbc-server-1.music.testlab.onap.org + depends_on: + - cassandra-1 + - mariadb-1 + command: + - /app/wait-for.sh + - -q + - -t + - "300" + - cassandra-1:9042 + - mariadb-1:3306 + - -- + - "/app/start-mdbc-server.sh" +################################################################################ + mariadb-2: + image: mariadb:10.1.11 + container_name: + mariadb-2 + hostname: + mariadb-2.music.testlab.onap.org + expose: + - 3306 + environment: + - MYSQL_ROOT_PASSWORD=password + volumes: + - ./volumes/mariadb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d + - ./volumes/mariadb/conf.d:/etc/mysql/conf.d +################################################################################ + mdbc-server-2: + image: onap/music/mdbc-server + container_name: + mdbc-server-2 + ports: + - "30002:30002" + volumes: + - ./volumes/mdbc-server-2/config:/app/config + environment: + - JVM_ARGS=-Xms64m -Xmx512m + - AVATICA_PORT=30002 + - JDBC_URL=jdbc:mysql://mariadb-2:3306 + - JDBC_USER=test + - JDBC_PASSWORD=password + - EXIT_DELAY=900 + hostname: + mdbc-server-2.music.testlab.onap.org + depends_on: + - cassandra-1 + - mariadb-2 + command: + - /app/wait-for.sh + - -q + - -t + - "300" + - cassandra-1:9042 + - mariadb-2:3306 + - mdbc-server-1:30001 + - -- + - "/app/start-mdbc-server.sh" diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/cassandra/docker-entrypoint-initdb.d/01-create-music-internal-keyspace.cql b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/cassandra/docker-entrypoint-initdb.d/01-create-music-internal-keyspace.cql new file mode 100644 index 0000000..7884dd5 --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/cassandra/docker-entrypoint-initdb.d/01-create-music-internal-keyspace.cql @@ -0,0 +1 @@ +CREATE KEYSPACE IF NOT EXISTS music_internal WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/conf.d/mariadb1.cnf b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/conf.d/mariadb1.cnf new file mode 100644 index 0000000..39ed022 --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/conf.d/mariadb1.cnf @@ -0,0 +1,193 @@ +# Example MySQL config file for medium systems. +# +# This is for a system with memory 8G where MySQL plays +# an important part, or systems up to 128M where MySQL is used together with +# other programs (such as a web server) +# +# In this file, you can use all long options that a program supports. +# If you want to know which options a program supports, run the program +# with the "--help" option. + +# The following options will be passed to all MySQL clients +##[client] +##user = root +##port = 3306 +##socket = //opt/app/mysql/mysql.sock + +# Here follows entries for some specific programs + +# The MySQL server +[mysqld] +##performance_schema + +slow_query_log =ON +long_query_time =2 +slow_query_log_file =//var/lib/mysql/slow_query.log + +skip-external-locking +explicit_defaults_for_timestamp = true +skip-symbolic-links +local-infile = 0 +key_buffer_size = 16M +max_allowed_packet = 4M +table_open_cache = 100 +sort_buffer_size = 512K +net_buffer_length = 8K +read_buffer_size = 256K +read_rnd_buffer_size = 512K +myisam_sort_buffer_size = 8M +max_connections = 500 +lower_case_table_names = 1 +thread_stack = 256K +thread_cache_size = 25 +query_cache_size = 8M +query_cache_type = 0 +query_prealloc_size = 512K +query_cache_limit = 1M + +# Password validation +##plugin-load-add=simple_password_check.so +##simple_password_check_other_characters=0 + +# Audit Log settings +plugin-load-add=server_audit.so +server_audit=FORCE_PLUS_PERMANENT +server_audit_file_path=//var/lib/mysql/audit.log +server_audit_file_rotate_size=50M +server_audit_events=CONNECT,QUERY,TABLE +server_audit_logging=on + +# Don't listen on a TCP/IP port at all. This can be a security enhancement, +# if all processes that need to connect to mysqld run on the same host. +# All interaction with mysqld must be made via Unix sockets or named pipes. +# Note that using this option without enabling named pipes on Windows +# (via the "enable-named-pipe" option) will render mysqld useless! +# +#skip-networking + +# Replication Master Server (default) +# binary logging is required for replication +##log-bin=//var/lib/mysql/mysql-bin + +# binary logging format - mixed recommended +binlog_format=row + +# required unique id between 1 and 2^32 - 1 +# defaults to 1 if master-host is not set +# but will not function as a master if omitted + +# Replication Slave (comment out master section to use this) +# +# To configure this host as a replication slave, you can choose between +# two methods : +# +# 1) Use the CHANGE MASTER TO command (fully described in our manual) - +# the syntax is: +# +# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, +# MASTER_USER=<user>, MASTER_PASSWORD=<password> ; +# +# where you replace <host>, <user>, <password> by quoted strings and +# <port> by the master's port number (3306 by default). +# +# Example: +# +# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, +# MASTER_USER='joe', MASTER_PASSWORD='secret'; +# +# OR +# +# 2) Set the variables below. However, in case you choose this method, then +# start replication for the first time (even unsuccessfully, for example +# if you mistyped the password in master-password and the slave fails to +# connect), the slave will create a master.info file, and any later +# change in this file to the variables' values below will be ignored and +# overridden by the content of the master.info file, unless you shutdown +# the slave server, delete master.info and restart the slaver server. +# For that reason, you may want to leave the lines below untouched +# (commented) and instead use CHANGE MASTER TO (see above) +# +# required unique id between 2 and 2^32 - 1 +# (and different from the master) +# defaults to 2 if master-host is set +# but will not function as a slave if omitted +#server-id = 2 +# +# The replication master for this slave - required +#master-host = <hostname> +# +# The username the slave will use for authentication when connecting +# to the master - required +#master-user = <username> +# +# The password the slave will authenticate with when connecting to +# the master - required +#master-password = <password> +# +# The port the master is listening on. +# optional - defaults to 3306 +#master-port = <port> +# +# binary logging - not required for slaves, but recommended +#log-bin=mysql-bin + +# Uncomment the following if you are using InnoDB tables +##innodb_data_home_dir = //opt/app/mysql/data +##innodb_data_file_path = ibdata1:20M:autoextend:max:32G +##innodb_log_group_home_dir = //opt/app/mysql/iblogs +# You can set .._buffer_pool_size up to 50 - 80 % +# of RAM but beware of setting memory usage too high +#innodb_buffer_pool_size = 6380M +#innodb_additional_mem_pool_size = 2M +# Set .._log_file_size to 25 % of buffer pool size +innodb_log_file_size = 150M +innodb_log_files_in_group = 3 +innodb_log_buffer_size = 8M +#innodb_flush_log_at_trx_commit = 1 +innodb_lock_wait_timeout = 50 +innodb_autoextend_increment = 100 +expire_logs_days = 8 +open_files_limit = 2000 +transaction-isolation=READ-COMMITTED +####### Galera parameters ####### +## Galera Provider configuration +wsrep_provider=/usr/lib/galera/libgalera_smm.so +wsrep_provider_options="gcache.size=2G; gcache.page_size=1G" +## Galera Cluster configuration +wsrep_cluster_name="MSO-automated-tests-cluster" +wsrep_cluster_address="gcomm://" +#wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3" +##wsrep_cluster_address="gcomm://192.169.3.184,192.169.3.185,192.169.3.186" +## Galera Synchronization configuration +wsrep_sst_method=rsync +#wsrep_sst_method=xtrabackup-v2 +#wsrep_sst_auth="sstuser:Mon#2o!6" +## Galera Node configuration +wsrep_node_name="mariadb1" +##wsrep_node_address="192.169.3.184" +wsrep_on=ON +## Status notification +#wsrep_notify_cmd=/opt/app/mysql/bin/wsrep_notify +####### + + +[mysqldump] +quick +max_allowed_packet = 16M + +[mysql] +no-auto-rehash +# Remove the next comment character if you are not familiar with SQL +#safe-updates + +[myisamchk] +key_buffer_size = 20971520 + +##[mysqlhotcopy] +##interactive-timeout +##[mysqld_safe] +##malloc-lib=//opt/app/mysql/local/lib/libjemalloc.so.1 +##log-error=//opt/app/mysql/log/mysqld.log + +general_log_file = /var/log/mysql/mysql.log +general_log = 1 diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/docker-entrypoint-initdb.d/01-create-test-database.sh b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/docker-entrypoint-initdb.d/01-create-test-database.sh new file mode 100644 index 0000000..3316153 --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/docker-entrypoint-initdb.d/01-create-test-database.sh @@ -0,0 +1,28 @@ +#!/bin/sh +# +# ============LICENSE_START===================================================== +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +# ============================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END======================================================= +# + +echo "Creating test database and user . . ." +mysql -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1 +DROP DATABASE IF EXISTS `test`; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */; +DELETE FROM mysql.user WHERE User='test'; +CREATE USER 'test'; +GRANT ALL ON test.* TO 'test' identified by 'password' with GRANT OPTION; +FLUSH PRIVILEGES; +EOF diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/music.properties b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/music.properties new file mode 100644 index 0000000..b030b62 --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/music.properties @@ -0,0 +1,4 @@ +cassandra.host = cassandra-1 +cassandra.user = cassandra +cassandra.password = cassandra +zookeeper.host = cassandra-1 diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/tableConfiguration.json b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/tableConfiguration.json new file mode 100644 index 0000000..3438210 --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/tableConfiguration.json @@ -0,0 +1,23 @@ +{ + "partitions": [ + { + "tables": [ + { + "table": "Persons" + } + ], + "owner": "", + "mriTableName": "musicrangeinformation", + "mtxdTableName": "musictxdigest", + "partitionId": "", + "replicationFactor": 1 + } + ], + "musicNamespace": "namespace", + "tableToPartitionName": "tabletopartition", + "partitionInformationTableName": "partitioninfo", + "redoHistoryTableName": "redohistory", + "sqlDatabaseName": "test", + "internalNamespace": "music_internal", + "internalReplicationFactor": 1 +} diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/music.properties b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/music.properties new file mode 100644 index 0000000..b030b62 --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/music.properties @@ -0,0 +1,4 @@ +cassandra.host = cassandra-1 +cassandra.user = cassandra +cassandra.password = cassandra +zookeeper.host = cassandra-1 diff --git a/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/tableConfiguration.json b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/tableConfiguration.json new file mode 100644 index 0000000..e4d581b --- /dev/null +++ b/mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/tableConfiguration.json @@ -0,0 +1,23 @@ +{ + "partitions": [ + { + "tables": [ + { + "table": "Invoices" + } + ], + "owner": "", + "mriTableName": "musicrangeinformation", + "mtxdTableName": "musictxdigest", + "partitionId": "", + "replicationFactor": 1 + } + ], + "musicNamespace": "namespace", + "tableToPartitionName": "tabletopartition", + "partitionInformationTableName": "partitioninfo", + "redoHistoryTableName": "redohistory", + "sqlDatabaseName": "test", + "internalNamespace": "music_internal", + "internalReplicationFactor": 1 +} |