Hi Cyril,

Thanks for your quick response.

I will take a look to the "option mysql-check".

The MySQL load balanced is for used as a backend storage for a radius
server with MySQL tables with MyISAM engine. All the request are
equal.


Thanks,
David

El día 8 de marzo de 2012 20:58, Cyril Bonté <[email protected]> escribió:
> Hi David,
>
> Le 08/03/2012 20:37, David Seira a écrit :
>
>> Hi list,
>>
>> I'm trying to installing HAProxy for make load balancing between
>> several MySQL Nodes in a MySQL Cluster.
>>
>> I've configured the haproxy.conf like this:
>>
>> listen mysql 0.0.0.0:3306
>>     mode tcp
>>     balance roundrobin
>>     maxconn 4096
>>     server mysqlnode1 192.168.1.1 check weight 50
>>     server mysqlnode2 192.168.1.2 check weight 50
>>
>> The problem comes when I try to make a request to the haproxy:
>>
>> mysql -uuser -ppass -h 192.168.1.3 test -e "select * from test1;"
>>
>> It works well but if I reboot the service (haproxy) the request
>> doesn't work; I obtain the next error:
>>
>> "Host is blocked because of many connection errors"
>>
>> However if I make the same request but for the mysqlnode1 directly, it
>> works well. I must reboot the mysql service in both host to be solved.
>>
>> It seems that the haproxy doesn't relay correctly the request to the
>> servers.
>
>
> No, the request is correctly sent to the servers but there's an issue in
> your configuration.
>
> MySQL requires a complete and valid handshake otherwise it's considered as
> an error. After too many errors errors (10 times is the default), MySQL
> decides to block the client host.
>
> You don't have to reboot/restart mysql to solve this, "mysqladmin
> flush-hosts" (or the request "FLUSH HOSTS") cleans up the blocked hosts.
>
> Now, why does this happen ?
> You've enabled tcp checks on each servers. This means that haproxy opens
> periodically (every 2 seconds by default) connections to the mysql servers
> and closes them immediatly : no handshake is sent, mysql will block the
> client host, which is your haproxy server.
>
>
>> Maybe I forgot another option in the haproxy.conf?
>
>
> Yes, have a look at "option mysql-check", haproxy will then send a complete
> handshake for each check and your haproxy server won't be blocked.
>
>
>> Has anyone configured haproxy for balancing several mysql servers?
>
>
> Be careful, load balancing mysql servers is not an easy thing. It depends a
> lot on the requests types, the data stored, and the DB schema itself
> sometimes.
>
> --
> Cyril Bonté

Reply via email to