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.
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.
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.
participants (2)
-
Dmitriy Rabotyagov
-
Mia