Skip to content
Snippets Groups Projects
  • Michal Arbet's avatar
    09b3c6ca
    Refactor mariadb to support shards · 09b3c6ca
    Michal Arbet authored
    
    Kolla-ansible is currently installing mariadb
    cluster on hosts defined in group['mariadb']
    and render haproxy configuration for this hosts.
    
    This is not enough if user want to have several
    service databases in several mariadb clusters (shards).
    
    Spread service databases to multiple clusters (shards)
    is usefull especially for databases with high load
    (neutron,nova).
    
    How it works ?
    
    It works exactly same as now, but group reference 'mariadb'
    is now used as group where all mariadb clusters (shards)
    are located, and mariadb clusters are installed to
    dynamic groups created by group_by and host variable
    'mariadb_shard_id'.
    
    It also adding special user 'shard_X' which will be used
    for creating users and databases, but only if haproxy
    is not used as load-balance solution.
    
    This patch will not affect user which has all databases
    on same db cluster on hosts in group 'mariadb', host
    variable 'mariadb_shard_id' is set to 0 if not defined.
    
    Mariadb's task in loadbalancer.yml (haproxy) is configuring
    mariadb default shard hosts as haproxy backends. If mariadb
    role is used to install several clusters (shards), only
    default one is loadbalanced via haproxy.
    
    Mariadb's backup is working only for default shard (cluster)
    when using haproxy as mariadb loadbalancer, if proxysql
    is used, all shards are backuped.
    
    After this patch will be merged, there will be way for proxysql
    patches which will implement L7 SQL balancing based on
    users and schemas.
    
    Example of inventory:
    
    [mariadb]
    server1
    server2
    server3 mariadb_shard_id=1
    server4 mariadb_shard_id=1
    server5 mariadb_shard_id=2
    server6 mariadb_shard_id=3
    
    Extra:
    wait_for_loadbalancer is removed instead of modified as its role
    is served by check already. The relevant refactor is applied as
    well.
    
    Change-Id: I933067f22ecabc03247ea42baf04f19100dffd08
    Co-Authored-By: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>
    09b3c6ca
    History
    Refactor mariadb to support shards
    Michal Arbet authored
    
    Kolla-ansible is currently installing mariadb
    cluster on hosts defined in group['mariadb']
    and render haproxy configuration for this hosts.
    
    This is not enough if user want to have several
    service databases in several mariadb clusters (shards).
    
    Spread service databases to multiple clusters (shards)
    is usefull especially for databases with high load
    (neutron,nova).
    
    How it works ?
    
    It works exactly same as now, but group reference 'mariadb'
    is now used as group where all mariadb clusters (shards)
    are located, and mariadb clusters are installed to
    dynamic groups created by group_by and host variable
    'mariadb_shard_id'.
    
    It also adding special user 'shard_X' which will be used
    for creating users and databases, but only if haproxy
    is not used as load-balance solution.
    
    This patch will not affect user which has all databases
    on same db cluster on hosts in group 'mariadb', host
    variable 'mariadb_shard_id' is set to 0 if not defined.
    
    Mariadb's task in loadbalancer.yml (haproxy) is configuring
    mariadb default shard hosts as haproxy backends. If mariadb
    role is used to install several clusters (shards), only
    default one is loadbalanced via haproxy.
    
    Mariadb's backup is working only for default shard (cluster)
    when using haproxy as mariadb loadbalancer, if proxysql
    is used, all shards are backuped.
    
    After this patch will be merged, there will be way for proxysql
    patches which will implement L7 SQL balancing based on
    users and schemas.
    
    Example of inventory:
    
    [mariadb]
    server1
    server2
    server3 mariadb_shard_id=1
    server4 mariadb_shard_id=1
    server5 mariadb_shard_id=2
    server6 mariadb_shard_id=3
    
    Extra:
    wait_for_loadbalancer is removed instead of modified as its role
    is served by check already. The relevant refactor is applied as
    well.
    
    Change-Id: I933067f22ecabc03247ea42baf04f19100dffd08
    Co-Authored-By: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>