database script refactor 49/3949/2
authorcarey.xu <carey.xuhan@huawei.com>
Fri, 4 Dec 2015 01:40:39 +0000 (09:40 +0800)
committercarey.xu <carey.xuhan@huawei.com>
Fri, 4 Dec 2015 03:17:50 +0000 (11:17 +0800)
JIRA: COMPASS-176

Change-Id: I0f87903a94a8072af274d6d5dcf4dd5041f297e6
Signed-off-by: carey.xu <carey.xuhan@huawei.com>
15 files changed:
deploy/adapters/ansible/roles/database/tasks/main.yml
deploy/adapters/ansible/roles/database/tasks/mariadb.yml [deleted file]
deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/database/tasks/mariadb_config.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/database/tasks/mongodb.yml
deploy/adapters/ansible/roles/database/tasks/mysql.yml [deleted file]
deploy/adapters/ansible/roles/database/templates/my-huge.cnf [deleted file]
deploy/adapters/ansible/roles/database/templates/my.cnf
deploy/adapters/ansible/roles/database/templates/server.cnf [deleted file]
deploy/adapters/ansible/roles/database/templates/wsrep.cnf
deploy/adapters/ansible/roles/database/vars/Debian.yml
deploy/adapters/ansible/roles/database/vars/RedHat.yml
deploy/adapters/ansible/roles/ha/templates/haproxy.cfg

index ad5c5b7..f380f60 100644 (file)
@@ -1,11 +1,11 @@
 ---
 - include_vars: "{{ ansible_os_family }}.yml"
 
-- include: mysql.yml
-  when: haproxy_hosts is not defined
+- include: mariadb_install.yml
+- include: mariadb_cluster.yml
 
-- include: mariadb.yml
-  when: haproxy_hosts is defined
+- include: mariadb_config.yml
+  when:
+    - inventory_hostname == haproxy_hosts.keys()[0]
 
 - include: mongodb.yml
-
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb.yml
deleted file mode 100644 (file)
index 9a9ebda..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
----
-#- name: delete default maridb-libs
-#  action: "{{ ansible_pkg_mgr }} name=mariadb-libs state=absent"
-#  when: ansible_os_family == "RedHat"
-#  ignore_errors: True
-
-- name: install python-mysqldb
-  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
-  with_items: maridb_packages | union(packages_noarch)
-
-- name: create mysql log directy
-  file: path=/var/log/mysql state=directory owner=mysql group=mysql mode=0755
-
-- name: update mariadb config file
-  template: src={{ item }} dest={{ mysql_config_file_path }}/{{ item }} backup=yes
-  with_items: mysql_config_file_name
-
-- name: update galera wsrep.cnf
-  template: src=wsrep.cnf dest={{ wsrep_config_file_path }}/wsrep.cnf backup=yes
-
-- name: update wsrep_sst_rsync uid
-  lineinfile: dest=/usr/bin/wsrep_sst_rsync state=absent regexp="\s*uid = \$MYUID$"  backup=yes
-
-- name: update wsrep_sst_rsync gid
-  lineinfile: dest=/usr/bin/wsrep_sst_rsync state=absent regexp="\s*gid = \$MYGID$"  backup=yes
-
-- stat: path=/opt/mysql_init_complete
-  register: mysql_init_complete
-
-- name: restart first mysql server
-  shell: service mysql restart --wsrep-cluster-address="gcomm://" && touch /opt/mysql_init_complete
-  when: inventory_hostname == haproxy_hosts.keys()[0] and mysql_init_complete.stat.exists == False
-  tags:
-    - mysql_restart
-  #register: result
-  #until: result|success
-  #retries: 5
-  #delay: 5
-
-- name: restart other mysql server
-  shell: service mysql restart && touch /opt/mysql_init_complete
-  tags:
-    - mysql_restart
-  when: inventory_hostname != haproxy_hosts.keys()[0] and mysql_init_complete.stat.exists == False
-  #register: result
-  #until: result|success
-  #retries: 5
-  #delay: 5
-
-- name: generate mysql service list
-  shell: echo {{ item }} >> /opt/service
-  with_items: services_noarch
-
-- name: create all needed db
-  run_once: yes
-  mysql_db: name={{ item.db }} state=present
-  with_items: "{{ credentials }}"
-
-- name: create service db user
-  run_once: yes
-  mysql_user:
-    name={{ item[0].user }}
-    password={{ item[0].password }}
-    priv=*.*:ALL,GRANT
-    host={{ item[1] }}
-    state=present
-  with_nested:
-    - "{{ credentials }}"
-    - ['%', 'localhost', inventory_hostname]
-
-- name: create wsrep db user
-  run_once: yes
-  mysql_user:
-    name={{ WSREP_SST_USER }}
-    password={{ WSREP_SST_PASS }}
-    priv=*.*:ALL,GRANT
-    host={{ item }}
-    state=present
-  with_items: ['%', 'localhost', inventory_hostname]
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml
new file mode 100644 (file)
index 0000000..69c8997
--- /dev/null
@@ -0,0 +1,3 @@
+---
+- include: mariadb_cluster_debian.yml
+  when: ansible_os_family == "Debian"
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml
new file mode 100644 (file)
index 0000000..96df442
--- /dev/null
@@ -0,0 +1,32 @@
+---
+- name: start first node to create new cluster
+  service:
+    name: mysql
+    state: restarted
+    args: "--wsrep-new-cluster"
+  when:
+    - inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: wait for cluster ready
+  command: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'
+  register: cluster_status
+  until: cluster_status|success
+  failed_when: not cluster_status.stdout | search("OPERATIONAL")
+  retries: 10
+  delay: 3
+  when:
+    - inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: restart other nodes and join cluster
+  service:
+    name: mysql
+    state: restarted
+  when:
+    - inventory_hostname != haproxy_hosts.keys()[0]
+
+- name: restart first nodes
+  service:
+    name: mysql
+    state: restarted
+  when:
+    - inventory_hostname == haproxy_hosts.keys()[0]
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_config.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_config.yml
new file mode 100644 (file)
index 0000000..16783ed
--- /dev/null
@@ -0,0 +1,24 @@
+---
+- name: create all needed db
+  mysql_db: name={{ item.db }} state=present
+  with_items: "{{ credentials }}"
+
+- name: create service db user
+  mysql_user:
+    name={{ item[0].user }}
+    password={{ item[0].password }}
+    priv=*.*:ALL,GRANT
+    host={{ item[1] }}
+    state=present
+  with_nested:
+    - "{{ credentials }}"
+    - ['%', 'localhost', inventory_hostname]
+
+- name: create wsrep db user
+  mysql_user:
+    name={{ WSREP_SST_USER }}
+    password={{ WSREP_SST_PASS }}
+    priv=*.*:ALL,GRANT
+    host={{ item }}
+    state=present
+  with_items: ['%', 'localhost', inventory_hostname]
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml
new file mode 100644 (file)
index 0000000..41ee5ff
--- /dev/null
@@ -0,0 +1,49 @@
+---
+- name: disable auto start
+  copy:
+    content: "#!/bin/sh\nexit 101"
+    dest: "/usr/sbin/policy-rc.d"
+    mode: 0755
+  when: ansible_os_family == "Debian"
+
+- name: install python-mysqldb
+  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+  with_items: maridb_packages | union(packages_noarch)
+
+- name: change open file limit
+  copy:
+    content: "* - nofile 65536 }}"
+    dest: "/etc/security/limits.conf"
+    mode: 0755
+
+- name: update mariadb config file
+  template:
+    src: '{{ item.src }}'
+    dest: '{{ item.dest }}'
+    backup: yes
+    mode: 0644
+  with_items: mysql_config
+
+- name: bugfix for rsync version 3.1
+  lineinfile:
+    dest: /usr/bin/wsrep_sst_rsync
+    state: absent
+    regexp: '{{ item }}'
+  with_items:
+    - "\\s*uid = \\$MYUID$"
+    - "\\s*gid = \\$MYGID$"
+
+- stat: path=/opt/mysql_init_complete
+  register: mysql_init_complete
+
+- name: enable auto start
+  file:
+    path=/usr/sbin/policy-rc.d
+    state=absent
+  when: ansible_os_family == "Debian"
+
+- name: rm old datafiles
+  shell: rm -rf /var/lib/mysql/ib_logfile*
+
+- name: set owner
+  file: path=/var/lib owner=mysql group=mysql recurse=yes state=directory
index c46a293..c5e1d6d 100644 (file)
@@ -21,7 +21,7 @@
     - /var/lib/mongodb/journal/*
 
 - name: manually restart mongodb server
-  service: name={{ mongodb_serveice }} state=restarted
+  service: name={{ mongodb_service }} state=restarted
 
 - wait_for: port=27017 delay=3 timeout=60 host={{ internal_vip.ip }}
 
diff --git a/deploy/adapters/ansible/roles/database/tasks/mysql.yml b/deploy/adapters/ansible/roles/database/tasks/mysql.yml
deleted file mode 100644 (file)
index 9e272d1..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- name: install mysql client and server packages
-  apt: name={{ item }} state=present
-  with_items: mysql_packages
-
-- name: create mysql log directy
-  file: path=/var/log/mysql state=directory owner=mysql group=mysql mode=0755
-
-- name: update mysql config file
-  copy: src={{ item }} dest={{ mysql_config_file_path }}/{{ item }} backup=yes
-  with_items: mysql_config_file_name
-
-- name: manually restart mysql server
-  shell: service mysql restart
-
-- name: create database/user
-  shell: /opt/data.sh
-  tags:
-    - mysql_user
diff --git a/deploy/adapters/ansible/roles/database/templates/my-huge.cnf b/deploy/adapters/ansible/roles/database/templates/my-huge.cnf
deleted file mode 100644 (file)
index c561858..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-# Example MariaDB config file for very large systems.
-#
-# This is for a large system with memory of 1G-2G where the system runs mainly
-# MariaDB.
-#
-# MariaDB programs look for option files in a set of
-# locations which depend on the deployment platform.
-# You can copy this option file to one of those
-# locations. For information about these locations, do:
-# 'my_print_defaults --help' and see what is printed under
-# Default options are read from the following files in the given order:
-# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html
-#
-# 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]
-#password = your_password
-port      = 3306
-socket    = /var/lib/mysql/mysql.sock
-
-# Here follows entries for some specific programs
-
-# The MySQL server
-[mysqld]
-port      = 3306
-socket    = /var/lib/mysql/mysql.sock
-skip-external-locking
-key_buffer_size    = 384M
-max_allowed_packet = 1M
-table_open_cache   = 512
-sort_buffer_size   = 2M
-read_buffer_size   = 2M
-read_rnd_buffer_size    = 8M
-myisam_sort_buffer_size = 64M
-thread_cache_size  = 8
-query_cache_size   = 32M
-# Try number of CPU's*2 for thread_concurrency
-thread_concurrency = 8
-
-# Point the following paths to a dedicated disk
-#tmpdir        = /tmp/
-
-# 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=mysql-bin
-
-# 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
-server-id = 1
-
-# 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
-#
-# binary logging format - mixed recommended
-#binlog_format=mixed
-
-# Uncomment the following if you are using InnoDB tables
-#innodb_data_home_dir = /var/lib/mysql
-#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
-#innodb_log_group_home_dir = /var/lib/mysql
-# You can set .._buffer_pool_size up to 50 - 80 %
-# of RAM but beware of setting memory usage too high
-#innodb_buffer_pool_size = 384M
-#innodb_additional_mem_pool_size = 20M
-# Set .._log_file_size to 25 % of buffer pool size
-#innodb_log_file_size = 100M
-#innodb_log_buffer_size = 8M
-#innodb_flush_log_at_trx_commit = 1
-#innodb_lock_wait_timeout = 50
-
-[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  = 256M
-sort_buffer_size = 256M
-read_buffer      = 2M
-write_buffer     = 2M
-
-[mysqlhotcopy]
-interactive-timeout
index 2023185..b801684 100644 (file)
-#
-# The MySQL database server configuration file.
-#
-# You can copy this to one of:
-# - "/etc/mysql/my.cnf" to set global options,
-# - "~/.my.cnf" to set user-specific options.
-#
-# One can use all long options that the program supports.
-# Run program with --help to get a list of available options and with
-# --print-defaults to see which it would actually understand and use.
-#
-# For explanations see
-# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
-
-# This will be passed to all mysql clients
-# It has been reported that passwords should be enclosed with ticks/quotes
-# escpecially if they contain "#" chars...
-# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
 [client]
-port        = 3306
-socket        = /var/run/mysqld/mysqld.sock
+port = 3306
+socket = /var/run/mysqld/mysqld.sock
 
-# Here is entries for some specific programs
-# The following values assume you have at least 32M ram
 
-# This was formally known as [safe_mysqld]. Both versions are currently parsed.
 [mysqld_safe]
-socket        = /var/run/mysqld/mysqld.sock
-nice        = 0
+socket = /var/run/mysqld/mysqld.sock
+nice = 0
+
+
+[mysql]
+default-character-set = utf8
 
 [mysqld]
-#
-# * Basic Settings
-#
-user        = mysql
-pid-file    = /var/run/mysqld/mysqld.pid
-socket        = /var/run/mysqld/mysqld.sock
-port        = 3306
-basedir        = /usr
-datadir        = /var/lib/mysql
-tmpdir        = /tmp
-lc-messages-dir    = /usr/share/mysql
-skip-external-locking
-skip-name-resolve
-#
-# Instead of skip-networking the default is now to listen only on
-# localhost which is more compatible and is not less secure.
-bind-address        = {{ internal_vip.ip }}
-#
-# * Fine Tuning
-#
-key_buffer        = 16M
-max_allowed_packet    = 16M
-thread_stack        = 192K
-thread_cache_size       = 8
-# This replaces the startup script and checks MyISAM tables if needed
-# the first time they are touched
-myisam-recover         = BACKUP
-max_connections        = 2000
-max_connect_errors     = 8000
-#table_cache            = 64
-#thread_concurrency     = 10
-#
-# * Query Cache Configuration
-#
-query_cache_limit    = 1M
-query_cache_size        = 16M
-#
-# * Logging and Replication
-#
-# Both location gets rotated by the cronjob.
-# Be aware that this log type is a performance killer.
-# As of 5.1 you can enable the log at runtime!
-general_log_file        = /var/log/mysql/mysql.log
-#general_log             = 1
-#
-# Error log - should be very few entries.
-#
-log_error = /var/log/mysql/error.log
-#
-# Here you can see queries with especially long duration
-#log_slow_queries    = /var/log/mysql/mysql-slow.log
-#long_query_time = 2
-#log-queries-not-using-indexes
-#
-# The following can be used as easy to replay backup logs or for replication.
-# note: if you are setting up a replication slave, see README.Debian about
-#       other settings you may need to change.
-#server-id        = 1
-#log_bin            = /var/log/mysql/mysql-bin.log
-expire_logs_days    = 10
-max_binlog_size         = 100M
-#binlog_do_db        = include_database_name
-#binlog_ignore_db    = include_database_name
-#
-# * InnoDB
-#
-# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
-# Read the manual for more InnoDB related options. There are many!
-#
-# * Security Features
-#
-# Read the manual, too, if you want chroot!
-# chroot = /var/lib/mysql/
-#
-# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
-#
-# ssl-ca=/etc/mysql/cacert.pem
-# ssl-cert=/etc/mysql/server-cert.pem
-# ssl-key=/etc/mysql/server-key.pem
-default-storage-engine = innodb
-innodb_file_per_table
-collation-server = utf8_general_ci
+user = mysql
+collation-server = utf8_unicode_ci
 init-connect = 'SET NAMES utf8'
 character-set-server = utf8
+datadir = /var/lib/mysql
+bind-address = {{ internal_ip }}
+
+max-allowed-packet = 16M
+max-connect-errors = 1000000
+
+max_connections = {{ ansible_processor_vcpus * 100 }}
+
+wait_timeout = 28800
+tmp-table-size = 32M
+max-heap-table-size = 32M
+query-cache-type = 0
+query-cache-size = 0M
+thread-cache-size = 50
+open-files-limit = 65535
+table-definition-cache = 4096
+table-open-cache = 10240
+
+innodb-flush-method = O_DIRECT
+innodb-additional-mem-pool-size = 24M
+innodb-log-file-size = 1024M
+innodb-file-per-table = 1
+innodb-buffer-pool-size = 4096M
+
+innodb-read-io-threads = 4
+innodb-write-io-threads = 4
+innodb-doublewrite = 1
+innodb-log-buffer-size = 1024M
+innodb-buffer-pool-instances = 8
+innodb-log-files-in-group = 2
+innodb-thread-concurrency = {{ ansible_processor_vcpus * 2 }}
+
+innodb_stats_on_metadata = 0
 
 [mysqldump]
 quick
 quote-names
-max_allowed_packet    = 16M
+max_allowed_packet = 16M
 
-[mysql]
-#no-auto-rehash    # faster start of mysql but no tab completition
-
-[isamchk]
-key_buffer        = 16M
 
-#
-# * IMPORTANT: Additional settings that can override those from this file!
-#   The files must end with '.cnf', otherwise they'll be ignored.
-#
 !includedir /etc/mysql/conf.d/
-
diff --git a/deploy/adapters/ansible/roles/database/templates/server.cnf b/deploy/adapters/ansible/roles/database/templates/server.cnf
deleted file mode 100644 (file)
index 57441dd..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# These groups are read by MariaDB server.
-# Use it for options that only the server (but not clients) should see
-#
-# See the examples of server my.cnf files in /usr/share/mysql/
-#
-
-# this is read by the standalone daemon and embedded servers
-[server]
-
-# this is only for the mysqld standalone daemon
-[mysqld]
-log_error = /var/log/mysql/error.log
-max_connections    = 2000
-max_connect_errors = 8000
-skip-host-cache
-skip-name-resolve
-bind-address       = {{ internal_vip.ip }}
-#
-# * Galera-related settings
-#
-[galera]
-# Mandatory settings
-#wsrep_provider=
-#wsrep_cluster_address=
-#binlog_format=row
-#default_storage_engine=InnoDB
-#innodb_autoinc_lock_mode=2
-#bind-address=0.0.0.0
-#
-# Optional setting
-#wsrep_slave_threads=1
-#innodb_flush_log_at_trx_commit=0
-
-# this is only for embedded server
-[embedded]
-
-# This group is only read by MariaDB servers, not by MySQL.
-# If you use the same .cnf file for MySQL and MariaDB,
-# you can put MariaDB-only options here
-[mariadb]
-
-# This group is only read by MariaDB-10.0 servers.
-# If you use the same .cnf file for MariaDB of different versions,
-# use this group for options that older servers don't understand
-[mariadb-10.0]
-
index 197640c..643792a 100644 (file)
@@ -1,37 +1,13 @@
-# This file contains wsrep-related mysqld options. It should be included
-# in the main MySQL configuration file.
-#
-# Options that need to be customized:
-#  - wsrep_provider
-#  - wsrep_cluster_address
-#  - wsrep_sst_auth
-# The rest of defaults should work out of the box.
-
-##
-## mysqld options _MANDATORY_ for correct opration of the cluster
-##
 [mysqld]
-
-# (This must be substituted by wsrep_format)
 binlog_format=ROW
-
-# Currently only InnoDB storage engine is supported
-default-storage-engine=innodb
-
-# to avoid issues with 'bulk mode inserts' using autoinc
 innodb_autoinc_lock_mode=2
-
-# This is a must for paralell applying
 innodb_locks_unsafe_for_binlog=1
 
 # Query Cache is not supported with wsrep
 query_cache_size=0
 query_cache_type=0
 
-# Override bind-address
-# In some systems bind-address defaults to 127.0.0.1, and with mysqldump SST
-# it will have (most likely) disastrous consequences on donor node
-bind-address={{ internal_vip.ip }}
+default_storage_engine = InnoDB
 
 ##
 ## WSREP options
@@ -41,7 +17,7 @@ bind-address={{ internal_vip.ip }}
 wsrep_provider={{ wsrep_provider_file }}
 
 # Provider specific configuration options
-#wsrep_provider_options=
+wsrep_provider_options="gcache.size=1024M"
 
 # Logical cluster name. Should be the same for all nodes.
 wsrep_cluster_name="my_wsrep_cluster"
@@ -61,7 +37,7 @@ wsrep_node_address={{ internal_ip }}
 #wsrep_node_incoming_address=
 
 # How many threads will process writesets from other nodes
-wsrep_slave_threads=1
+wsrep_slave_threads={{ ansible_processor_vcpus }}
 
 # DBUG options for wsrep provider
 #wsrep_dbug_option
@@ -83,7 +59,7 @@ wsrep_debug=1
 wsrep_convert_LOCK_to_trx=0
 
 # how many times to retry deadlocked autocommits
-wsrep_retry_autocommit=1
+wsrep_retry_autocommit=3
 
 # change auto_increment_increment and auto_increment_offset automatically
 wsrep_auto_increment_control=1
index 7035c2b..66480eb 100644 (file)
@@ -19,9 +19,11 @@ pip_packages: []
 
 services: []
 
-mongodb_serveice: mongodb
+mongodb_service: mongodb
+mysql_config:
+  - dest: /etc/mysql/my.cnf
+    src: my.cnf
+  - dest: /etc/mysql/conf.d/wsrep.cnf
+    src: wsrep.cnf
 
-mysql_config_file_path: "/etc/mysql"
-mysql_config_file_name: ["my.cnf"]
-wsrep_config_file_path: "/etc/mysql/conf.d"
 wsrep_provider_file: "/usr/lib/galera/libgalera_smm.so"
index ac2f2f2..b8a5dd2 100644 (file)
@@ -11,17 +11,20 @@ maridb_packages:
   - MySQL-python
 
 mongodb_packages:
-    - mongo-10gen-server
-    - mongo-10gen
+  - mongo-10gen-server
+  - mongo-10gen
 
 pip_packages:
-    - pymongo
+  - pymongo
 
 services: []
 
-mongodb_serveice: mongod
+mongodb_service: mongodb
+
+mysql_config:
+  - dest: /etc/mysql/my.cnf
+    src: my.cnf
+  - dest: /etc/mysql/conf.d/wsrep.cnf
+    src: wsrep.cnf
 
-mysql_config_file_path: "/etc/my.cnf.d"
-mysql_config_file_name: ["my-huge.cnf", "server.cnf"]
-wsrep_config_file_path: "/etc/my.cnf.d"
 wsrep_provider_file: "/usr/lib64/galera/libgalera_smm.so"
index c8065f0..7b40127 100644 (file)
@@ -25,6 +25,19 @@ defaults
     timeout check 10s
     retries 5
 
+listen  proxy-mysql
+    bind {{ internal_vip.ip }}:3306
+    option tcpka
+    option tcplog
+    balance source
+{% for host, ip in haproxy_hosts.items() %}
+{% if loop.index == 1 %}
+    server {{ host }} {{ ip }}:3306 weight 1 check inter 2000 rise 2 fall 5
+{% else %}
+    server {{ host }} {{ ip }}:3306 weight 1 check inter 2000 rise 2 fall 5
+{% endif %}
+{% endfor %}
+
 listen  proxy-glance_registry_cluster
     bind {{ internal_vip.ip }}:9191
     bind {{ public_vip.ip }}:9191