Docker compose scripts for two mdbc sites 31/74631/1
authorRob Daugherty <rd472p@att.com>
Thu, 13 Dec 2018 18:58:11 +0000 (13:58 -0500)
committerRob Daugherty <rd472p@att.com>
Thu, 13 Dec 2018 19:02:57 +0000 (14:02 -0500)
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>
12 files changed:
mdbc-packages/mdbc-docker/compose/one-site/docker-compose.yml
mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server-1/config/music.properties [moved from mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server/config/music.properties with 100% similarity]
mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server-1/config/tableConfiguration.json [moved from mdbc-packages/mdbc-docker/compose/one-site/volumes/mdbc-server/config/tableConfiguration.json with 94% similarity]
mdbc-packages/mdbc-docker/compose/two-sites/.env [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/docker-compose.yml [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/cassandra/docker-entrypoint-initdb.d/01-create-music-internal-keyspace.cql [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/conf.d/mariadb1.cnf [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/mariadb/docker-entrypoint-initdb.d/01-create-test-database.sh [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/music.properties [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-1/config/tableConfiguration.json [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/music.properties [new file with mode: 0644]
mdbc-packages/mdbc-docker/compose/two-sites/volumes/mdbc-server-2/config/tableConfiguration.json [new file with mode: 0644]

index d30d3e2..ca597ad 100644 (file)
@@ -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/two-sites/.env b/mdbc-packages/mdbc-docker/compose/two-sites/.env
new file mode 100644 (file)
index 0000000..1c22d2b
--- /dev/null
@@ -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 (file)
index 0000000..b1615fc
--- /dev/null
@@ -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 (file)
index 0000000..7884dd5
--- /dev/null
@@ -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 (file)
index 0000000..39ed022
--- /dev/null
@@ -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 (file)
index 0000000..3316153
--- /dev/null
@@ -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 (file)
index 0000000..b030b62
--- /dev/null
@@ -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 (file)
index 0000000..3438210
--- /dev/null
@@ -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 (file)
index 0000000..b030b62
--- /dev/null
@@ -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 (file)
index 0000000..e4d581b
--- /dev/null
@@ -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
+}