[Rdo-list] How to know which galera server haproxy is pointing in an overcloud HA env

Raoul Scarazzini rasca at redhat.com
Thu Oct 8 14:15:59 UTC 2015


Il giorno 7/10/2015 17:21:11, Marius Cornea ha scritto:
> I was just suggesting a way to see to which of the backend nodes
haproxy is directing the traffic. Please see the attachment.

Thanks again Marius,
from your point of view, does this script make sense?

#!/bin/bash

# haproxy bind address
VIP=$1

# Associative array for controller -> bytes list
declare -A controllers

function get_stats {
 # 2nd field -> controller name | 10th field -> bytes in | 11th field ->
bytes out
 stats=$(echo "show stat" | socat /var/run/haproxy stdio | grep
mysql,overcloud | cut -f2,10 -d,)
}

get_stats

# Put the first byte values in the array
for line in $stats
do
 controller=$(echo $line | cut -f1 -d,)
 controllers[$controller]=$(echo $line|cut -f2 -d,)
done

# Do something (nothing) on the VIP's db
mysql -u nonexistant -h $VIP &> /dev/null

get_stats

# Compare the stats the one different is the master
for controller in ${!controllers[@]}
do
 value2=$(echo "$stats"|grep $controller|cut -f2 -d,)
 [ ${controllers[$controller]} -ne $value2 ] && echo "$controller is
MASTER" || echo "$controller is slave"
done

I know it's ugly, but since we don't have any other method to get those
informations I don't see any other solution. Of course it can be adapted
to get values from http instead of the socket (that by default is not
enabled).

What do you think?

Thanks a lot,

--
Raoul Scarazzini
rasca at redhat.com




More information about the dev mailing list