
Kolla environment currently uses haproxy to fullfill HA in mariadb. This patch is switching haproxy to proxysql if enabled. This patch is also replacing mariadb's user 'haproxy' with user 'monitor'. This replacement has two reasons: - Use better name to "monitor" galera claster as there are two services using this user (HAProxy, ProxySQL) - Set password for monitor user as it's always better to use password then not use. Previous haproxy user didn't use password as it was historically not possible with haproxy and mariadb-clustercheck wasn't implemented. Depends-On: https://review.opendev.org/c/openstack/kolla/+/769385 Depends-On: https://review.opendev.org/c/openstack/kolla/+/765781 Depends-On: https://review.opendev.org/c/openstack/kolla/+/850656 Change-Id: I0edae33d982c2e3f3b5f34b3d5ad07a431162844
123 lines
5.5 KiB
YAML
123 lines
5.5 KiB
YAML
---
|
|
mariadb_services:
|
|
mariadb:
|
|
container_name: mariadb
|
|
group: "{{ mariadb_shard_group }}"
|
|
enabled: true
|
|
image: "{{ mariadb_image_full }}"
|
|
volumes: "{{ mariadb_default_volumes + mariadb_extra_volumes }}"
|
|
dimensions: "{{ mariadb_dimensions }}"
|
|
haproxy:
|
|
mariadb:
|
|
enabled: "{{ enable_mariadb | bool and not enable_external_mariadb_load_balancer | bool }}"
|
|
mode: "tcp"
|
|
port: "{{ database_port }}"
|
|
listen_port: "{{ mariadb_port }}"
|
|
frontend_tcp_extra:
|
|
- "option clitcpka"
|
|
- "timeout client 3600s"
|
|
backend_tcp_extra:
|
|
- "option srvtcpka"
|
|
- "timeout server 3600s"
|
|
- "{% if enable_mariadb_clustercheck | bool %}option httpchk{% endif %}"
|
|
custom_member_list: "{{ internal_haproxy_members.split(';') }}"
|
|
mariadb_external_lb:
|
|
enabled: "{{ enable_external_mariadb_load_balancer | bool }}"
|
|
mode: "tcp"
|
|
port: "{{ database_port }}"
|
|
listen_port: "{{ mariadb_port }}"
|
|
frontend_tcp_extra:
|
|
- "option clitcpka"
|
|
- "timeout client 3600s"
|
|
backend_tcp_extra:
|
|
- "option srvtcpka"
|
|
- "timeout server 3600s"
|
|
custom_member_list: "{{ external_haproxy_members.split(';') }}"
|
|
mariadb-clustercheck:
|
|
container_name: mariadb_clustercheck
|
|
group: "{{ mariadb_shard_group }}"
|
|
enabled: "{{ enable_mariadb_clustercheck | bool }}"
|
|
image: "{{ mariadb_clustercheck_image_full }}"
|
|
volumes: "{{ mariadb_clustercheck_default_volumes + mariadb_clustercheck_extra_volumes }}"
|
|
dimensions: "{{ mariadb_clustercheck_dimensions }}"
|
|
environment:
|
|
MYSQL_USERNAME: "{{ mariadb_monitor_user }}"
|
|
MYSQL_PASSWORD: "{% if enable_proxysql | bool %}{{ mariadb_monitor_password }}{% endif %}"
|
|
MYSQL_HOST: "{{ api_interface_address }}"
|
|
AVAILABLE_WHEN_DONOR: "1"
|
|
|
|
####################
|
|
# Database
|
|
####################
|
|
database_cluster_name: "openstack"
|
|
database_max_timeout: 120
|
|
|
|
####################
|
|
# HAProxy
|
|
####################
|
|
internal_haproxy_members: "{% for host in mariadb_default_database_shard_hosts %} server {{ hostvars[host].ansible_facts.hostname }} {{ 'api' | kolla_address(host) }}:{{ mariadb_port }} check port {% if enable_mariadb_clustercheck | bool %}{{ mariadb_clustercheck_port }}{% else %}{{ mariadb_port }}{% endif %} inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
|
|
external_haproxy_members: "{% for host in mariadb_default_database_shard_hosts %} server {{ host }} {{ host }}:{{ mariadb_port }} check port {% if enable_mariadb_clustercheck | bool %}{{ mariadb_clustercheck_port }}{% else %}{{ mariadb_port }}{% endif %} inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
|
|
|
|
####################
|
|
# Docker
|
|
####################
|
|
mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-server"
|
|
mariadb_tag: "{{ openstack_tag }}"
|
|
mariadb_image_full: "{{ mariadb_image }}:{{ mariadb_tag }}"
|
|
|
|
mariadb_clustercheck_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-clustercheck"
|
|
mariadb_clustercheck_tag: "{{ mariadb_tag }}"
|
|
mariadb_clustercheck_image_full: "{{ mariadb_clustercheck_image }}:{{ mariadb_clustercheck_tag }}"
|
|
|
|
mariadb_dimensions: "{{ default_container_dimensions }}"
|
|
mariadb_clustercheck_dimensions: "{{ default_container_dimensions }}"
|
|
|
|
mariadb_default_volumes:
|
|
- "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "mariadb:/var/lib/mysql"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
mariadb_clustercheck_default_volumes:
|
|
- "{{ node_config_directory }}/mariadb-clustercheck/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
|
|
mariadb_extra_volumes: "{{ default_extra_volumes }}"
|
|
mariadb_clustercheck_extra_volumes: "{{ default_extra_volumes }}"
|
|
|
|
########################################
|
|
# Vars used within recover_cluster.yml
|
|
########################################
|
|
mariadb_service: "{{ mariadb_services['mariadb'] }}"
|
|
mariadb_recover_tmp_file_path: "/tmp/kolla_mariadb_recover_inventory_name_{{ mariadb_shard_name }}"
|
|
|
|
###############
|
|
# WSREP options
|
|
###############
|
|
mariadb_wsrep_extra_provider_options: []
|
|
|
|
####################
|
|
# Backups
|
|
####################
|
|
mariabackup_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-server"
|
|
mariabackup_tag: "{{ mariadb_tag }}"
|
|
mariabackup_image_full: "{{ mariabackup_image }}:{{ mariabackup_tag }}"
|
|
|
|
mariadb_backup_host: "{{ groups[mariadb_shard_group][0] }}"
|
|
mariadb_backup_database_schema: "PERCONA_SCHEMA"
|
|
mariadb_backup_database_user: "{% if mariadb_loadbalancer == 'haproxy' %}backup{% else %}{{ mariadb_shard_backup_user_prefix }}{{ mariadb_shard_id | string }}{% endif %}"
|
|
mariadb_backup_type: "full"
|
|
mariadb_backup_possible: "{{ mariadb_loadbalancer != 'haproxy' or inventory_hostname in mariadb_default_database_shard_hosts }}"
|
|
|
|
####################
|
|
# Clustercheck
|
|
####################
|
|
enable_mariadb_clustercheck: "{{ enable_haproxy }}"
|
|
|
|
####################
|
|
# Sharding
|
|
####################
|
|
mariadb_shard_database_user: "{% if mariadb_loadbalancer == 'haproxy' %}{{ database_user }}{% else %}{{ mariadb_shard_root_user_prefix }}{{ mariadb_shard_id | string }}{% endif %}"
|