d34147b84b
The MariaDB role HAProxy config section exposes MariaDB on the mariadb_port which may not always be the same as database_port. The HAProxy role checks that the database_port is free, and not the mariadb_port. This could mean that the check passes, but the actual port which HAProxy will attempt to use is taken. This change configures HAProxy to talk to the MariaDB instances on the mariadb_port, and maps them to the database_port which is used by most services as part of the DB connection string. There is a small risk that it may break someones override config. Change-Id: I9507ee709cb21eb743112107770ed3170c61ef74
83 lines
3.2 KiB
YAML
83 lines
3.2 KiB
YAML
---
|
|
project_name: "mariadb"
|
|
|
|
mariadb_services:
|
|
mariadb:
|
|
container_name: mariadb
|
|
group: mariadb
|
|
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"
|
|
- "option mysql-check user haproxy post-41"
|
|
custom_member_list: "{{ internal_haproxy_members.split(';') }}"
|
|
mariadb_external_lb:
|
|
enabled: "{{ enable_mariadb|bool and 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(';') }}"
|
|
|
|
####################
|
|
# Database
|
|
####################
|
|
database_cluster_name: "openstack"
|
|
database_max_timeout: 120
|
|
|
|
####################
|
|
# HAProxy
|
|
####################
|
|
internal_haproxy_members: "{% for host in groups['mariadb'] %}server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ mariadb_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
|
|
external_haproxy_members: "{% for host in groups['mariadb'] %}server {{ host }} {{ host }}:{{ mariadb_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
|
|
|
|
####################
|
|
# Docker
|
|
####################
|
|
mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-mariadb"
|
|
mariadb_tag: "{{ openstack_release }}"
|
|
mariadb_image_full: "{{ mariadb_image }}:{{ mariadb_tag }}"
|
|
mariadb_dimensions: "{{ default_container_dimensions }}"
|
|
|
|
mariadb_default_volumes:
|
|
- "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "mariadb:/var/lib/mysql"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
mariadb_extra_volumes: "{{ default_extra_volumes }}"
|
|
|
|
########################################
|
|
# Vars used within recover_cluster.yml
|
|
########################################
|
|
mariadb_service: "{{ mariadb_services['mariadb'] }}"
|
|
|
|
####################
|
|
# Backups
|
|
####################
|
|
xtrabackup_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-xtrabackup"
|
|
xtrabackup_tag: "{{ openstack_release }}"
|
|
xtrabackup_image_full: "{{ xtrabackup_image }}:{{ xtrabackup_tag }}"
|
|
|
|
mariadb_backup_host: "{{ groups['mariadb'][0] }}"
|
|
mariadb_backup_database_schema: "PERCONA_SCHEMA"
|
|
mariadb_backup_database_user: "backup"
|
|
mariadb_backup_database_address: "{{ database_address }}"
|
|
mariadb_backup_type: "full"
|