Merge "Enable HAProxy consider MariaDB wsrep_local_state"
This commit is contained in:
commit
058d8606b5
@ -25,3 +25,10 @@
|
|||||||
dest: "{{ node_config_directory }}/{{ item }}/galera.cnf"
|
dest: "{{ node_config_directory }}/{{ item }}/galera.cnf"
|
||||||
with_items:
|
with_items:
|
||||||
- "mariadb"
|
- "mariadb"
|
||||||
|
|
||||||
|
- name: Copying over wsrep_notify.sh
|
||||||
|
template:
|
||||||
|
src: "{{ role_path }}/templates/wsrep_notify.sh.j2"
|
||||||
|
dest: "{{ node_config_directory }}/{{ item }}/wsrep_notify.sh"
|
||||||
|
with_items:
|
||||||
|
- "mariadb"
|
||||||
|
@ -24,6 +24,7 @@ wsrep_node_name={{ ansible_hostname }}
|
|||||||
wsrep_sst_method=xtrabackup-v2
|
wsrep_sst_method=xtrabackup-v2
|
||||||
wsrep_sst_auth={{ database_user }}:{{ database_password }}
|
wsrep_sst_auth={{ database_user }}:{{ database_password }}
|
||||||
wsrep_slave_threads=4
|
wsrep_slave_threads=4
|
||||||
|
wsrep_notify_cmd=/usr/local/bin/wsrep_notify.sh
|
||||||
|
|
||||||
max_connections=10000
|
max_connections=10000
|
||||||
|
|
||||||
|
@ -7,6 +7,12 @@
|
|||||||
"dest": "/etc/{{ mysql_dir }}/my.cnf",
|
"dest": "/etc/{{ mysql_dir }}/my.cnf",
|
||||||
"owner": "mysql",
|
"owner": "mysql",
|
||||||
"perm": "0600"
|
"perm": "0600"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/wsrep_notify.sh",
|
||||||
|
"dest": "/usr/local/bin/wsrep_notify.sh",
|
||||||
|
"owner": "mysql",
|
||||||
|
"perm": "0700"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
75
ansible/roles/mariadb/templates/wsrep_notify.sh.j2
Normal file
75
ansible/roles/mariadb/templates/wsrep_notify.sh.j2
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# Edit parameters below to specify the address and login to server.
|
||||||
|
USER={{ database_user }}
|
||||||
|
PSWD={{ database_password }}
|
||||||
|
HOST={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}
|
||||||
|
PORT={{ mariadb_port }}
|
||||||
|
LB_USER=haproxy
|
||||||
|
|
||||||
|
ENABLE_LB="UPDATE mysql.user SET User='${LB_USER}' WHERE User='${LB_USER}_blocked';"
|
||||||
|
DISABLE_LB="UPDATE mysql.user SET User='${LB_USER}_blocked' WHERE User='${LB_USER}';"
|
||||||
|
MYSQL_CMD="`type -p mysql` -B -u$USER -p$PSWD -h$HOST -P$PORT"
|
||||||
|
|
||||||
|
status_update()
|
||||||
|
{
|
||||||
|
echo "SET SESSION wsrep_on=off;"
|
||||||
|
echo "$@"
|
||||||
|
echo "FLUSH PRIVILEGES;"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_sst_method()
|
||||||
|
{
|
||||||
|
$MYSQL_CMD -s -N -e "SHOW VARIABLES LIKE 'wsrep_sst_method';" | awk '{ print $2 }'
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
case $1 in
|
||||||
|
--status)
|
||||||
|
STATUS=$2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--uuid)
|
||||||
|
CLUSTER_UUID=$2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--primary)
|
||||||
|
[ "$2" = "yes" ] && PRIMARY="1" || PRIMARY="0"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--index)
|
||||||
|
INDEX=$2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--members)
|
||||||
|
MEMBERS=$2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
case $STATUS in
|
||||||
|
Synced)
|
||||||
|
CMD=$ENABLE_LB
|
||||||
|
;;
|
||||||
|
Donor)
|
||||||
|
# enabling donor only if xtrabackup configured
|
||||||
|
SST_METHOD=`get_sst_method`
|
||||||
|
[[ $SST_METHOD =~ 'xtrabackup' ]] && CMD=$ENABLE_LB || CMD=$DISABLE_LB
|
||||||
|
;;
|
||||||
|
Undefined)
|
||||||
|
# shutting down database: do nothing
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CMD=$DISABLE_LB
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$CMD" ]
|
||||||
|
then
|
||||||
|
status_update "$CMD" | $MYSQL_CMD
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user