Thank you Dmitriy for your response. The HaProxy config is something like this: ``` listen db_master bind 0.0.0.0:3306 balance first option mysql-check server server-1 server-1.with.the.fqdn check inter 5s downinter 15s fastinter 2s resolvers cluster id 1 server server-2 server-2.with.the.fqdn check inter 5s downinter 15s fastinter 2s resolvers cluster backup id 2 server server-3 server-3.with.the.fqdn check inter 5s downinter 15s fastinter 2s resolvers cluster backup id 3 listen db_slave bind 0.0.0.0:3308 balance roundrobin option mysql-check server server-1 server-1.with.the.fqdn check inter 5s downinter 15s fastinter 2s resolvers cluster id 3 backup server server-2 server-2.with.the.fqdn check inter 5s downinter 15s fastinter 2s resolvers cluster id 1 weight 10 server server-3 server-3.with.the.fqdn check inter 5s downinter 15s fastinter 2s resolvers cluster id 2 weight 10 ``` In my service's configuration file, I set slave_connection to use port 3308. As I checked, when we define slave_connection, the oslo_db handles the read request but in my test environment, it seems does not work. On Tue, Feb 18, 2025 at 6:11 PM Dmitriy Rabotyagov <noonedeadpunk@gmail.com> wrote:
Hey,
You pretty much can not do this kind of setup with HAProxy, as HAProxy can balance MySQL only on L4, while for spreading reads/writes you need more of L7 balancer.
With MariaDB specifically, I'd suggest checking on MaxScale - but keep in mind, that it has a BSL license right now. So it's not _really_ opensource project. Also, you can check on ProxySQL, which does understand Galera clustering as well, and can balance requests accordingly as well.
вт, 18 февр. 2025 г. в 15:23, Mia <mikasa.ack1618@gmail.com>:
Hi OpenStack community,
I'm currently working on read/write database splitting in my OpenStack
environment using this document: https://docs.openstack.org/large-scale/journey/configure/database.html#rever...
Here is what I've done up to this point:
- Configured HAProxy as recommended
- Added the slave_connection parameter to all service
configurations(nova.conf, cinder.conf, etc.)
To test this, I enabled MariaDB's general_log on all nodes. However,
upon checking the logs, most SELECT queries still reach the first database node instead of the other replicas.
Did I miss a configuration step somewhere?
Any guidance would be super helpful.