bee253e337
By default ProxySQL's default value of max_replication_lag is 0 which is in fact disabling this feature [1]. If it is greater than 0, ProxySQL will regularly monitor replication lag and if it goes beyond the configured threshold it will temporary shun the host until replication catches up. This should be configurable via kolla-ansible as every openstack deployment can be different in terms of network delays, database load etc.. , so user should have option to configure when database backend will be shunned. [1] https://proxysql.com/documentation/main-runtime/ Change-Id: I66171638abc712cb84b380042f1d29f54c499e73
149 lines
6.3 KiB
YAML
149 lines
6.3 KiB
YAML
---
|
|
loadbalancer_services:
|
|
haproxy:
|
|
container_name: haproxy
|
|
group: loadbalancer
|
|
enabled: true
|
|
image: "{{ haproxy_image_full }}"
|
|
privileged: True
|
|
volumes: "{{ haproxy_default_volumes + haproxy_extra_volumes }}"
|
|
dimensions: "{{ haproxy_dimensions }}"
|
|
healthcheck: "{{ haproxy_healthcheck }}"
|
|
proxysql:
|
|
container_name: proxysql
|
|
group: loadbalancer
|
|
enabled: "{{ enable_proxysql | bool }}"
|
|
image: "{{ proxysql_image_full }}"
|
|
privileged: False
|
|
volumes: "{{ proxysql_default_volumes + proxysql_extra_volumes }}"
|
|
dimensions: "{{ proxysql_dimensions }}"
|
|
healthcheck: "{{ proxysql_healthcheck }}"
|
|
keepalived:
|
|
container_name: keepalived
|
|
group: loadbalancer
|
|
enabled: "{{ enable_keepalived | bool }}"
|
|
image: "{{ keepalived_image_full }}"
|
|
privileged: True
|
|
volumes: "{{ keepalived_default_volumes + keepalived_extra_volumes }}"
|
|
dimensions: "{{ keepalived_dimensions }}"
|
|
|
|
|
|
####################
|
|
# Docker
|
|
####################
|
|
keepalived_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/keepalived"
|
|
keepalived_tag: "{{ openstack_tag }}"
|
|
keepalived_image_full: "{{ keepalived_image }}:{{ keepalived_tag }}"
|
|
|
|
haproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/haproxy"
|
|
haproxy_tag: "{{ openstack_tag }}"
|
|
haproxy_image_full: "{{ haproxy_image }}:{{ haproxy_tag }}"
|
|
|
|
proxysql_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/proxysql"
|
|
proxysql_tag: "{{ openstack_tag }}"
|
|
proxysql_image_full: "{{ proxysql_image }}:{{ proxysql_tag }}"
|
|
|
|
syslog_server: "{{ api_interface_address }}"
|
|
syslog_haproxy_facility: "local1"
|
|
|
|
# Traffic mode. Valid options are [ multicast, unicast ]
|
|
keepalived_traffic_mode: "multicast"
|
|
|
|
# Extended global configuration, optimization options.
|
|
haproxy_max_connections: 40000
|
|
haproxy_processes: 1
|
|
haproxy_process_cpu_map: "no"
|
|
# Matches the mariadb 10000 max connections limit
|
|
haproxy_defaults_max_connections: 10000
|
|
|
|
haproxy_dimensions: "{{ default_container_dimensions }}"
|
|
proxysql_dimensions: "{{ default_container_dimensions }}"
|
|
keepalived_dimensions: "{{ default_container_dimensions }}"
|
|
|
|
haproxy_enable_healthchecks: "{{ enable_container_healthchecks }}"
|
|
haproxy_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
|
|
haproxy_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
|
|
haproxy_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
|
|
haproxy_healthcheck_test: ["CMD-SHELL", "healthcheck_curl http://{{ api_interface_address | put_address_in_context('url') }}:{{ haproxy_monitor_port }}"]
|
|
haproxy_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
|
|
haproxy_healthcheck:
|
|
interval: "{{ haproxy_healthcheck_interval }}"
|
|
retries: "{{ haproxy_healthcheck_retries }}"
|
|
start_period: "{{ haproxy_healthcheck_start_period }}"
|
|
test: "{% if haproxy_enable_healthchecks | bool %}{{ haproxy_healthcheck_test }}{% else %}NONE{% endif %}"
|
|
timeout: "{{ haproxy_healthcheck_timeout }}"
|
|
|
|
proxysql_enable_healthchecks: "{{ enable_container_healthchecks }}"
|
|
proxysql_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
|
|
proxysql_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
|
|
proxysql_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
|
|
proxysql_healthcheck_test: ["CMD-SHELL", "healthcheck_listen proxysql {{ proxysql_admin_port }}"]
|
|
proxysql_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
|
|
proxysql_healthcheck:
|
|
interval: "{{ proxysql_healthcheck_interval }}"
|
|
retries: "{{ proxysql_healthcheck_retries }}"
|
|
start_period: "{{ proxysql_healthcheck_start_period }}"
|
|
test: "{% if proxysql_enable_healthchecks | bool %}{{ proxysql_healthcheck_test }}{% else %}NONE{% endif %}"
|
|
timeout: "{{ proxysql_healthcheck_timeout }}"
|
|
|
|
haproxy_default_volumes:
|
|
- "{{ node_config_directory }}/haproxy/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "haproxy_socket:/var/lib/kolla/haproxy/"
|
|
proxysql_default_volumes:
|
|
- "{{ node_config_directory }}/proxysql/:{{ 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/"
|
|
- "proxysql:/var/lib/proxysql/"
|
|
- "proxysql_socket:/var/lib/kolla/proxysql/"
|
|
keepalived_default_volumes:
|
|
- "{{ node_config_directory }}/keepalived/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "/lib/modules:/lib/modules:ro"
|
|
- "{{ 'haproxy_socket:/var/lib/kolla/haproxy/' if enable_haproxy | bool else '' }}"
|
|
- "{{ 'proxysql_socket:/var/lib/kolla/proxysql/' if enable_proxysql | bool else '' }}"
|
|
|
|
haproxy_extra_volumes: "{{ default_extra_volumes }}"
|
|
proxysql_extra_volumes: "{{ default_extra_volumes }}"
|
|
keepalived_extra_volumes: "{{ default_extra_volumes }}"
|
|
|
|
# Default proxysql values
|
|
proxysql_workers: "{{ openstack_service_workers }}"
|
|
|
|
# The maximum number of client connections that the proxy can handle.
|
|
# After this number is reached, new connections will be rejected with
|
|
# the #HY000 error, and the error message Too many connections.
|
|
#
|
|
# As proxysql can route queries to several mariadb clusters, this
|
|
# value is set to 4x {{ proxysql_backend_max_connections }}
|
|
proxysql_max_connections: 40000
|
|
# The maximum number of connections to mariadb backends.
|
|
proxysql_backend_max_connections: 10000
|
|
proxysql_backend_max_replication_lag: "0"
|
|
proxysql_admin_user: "kolla-admin"
|
|
proxysql_stats_user: "kolla-stats"
|
|
|
|
# Default timeout values
|
|
haproxy_http_request_timeout: "10s"
|
|
haproxy_http_keep_alive_timeout: "10s"
|
|
haproxy_queue_timeout: "1m"
|
|
haproxy_connect_timeout: "10s"
|
|
haproxy_client_timeout: "1m"
|
|
haproxy_server_timeout: "1m"
|
|
haproxy_check_timeout: "10s"
|
|
|
|
# Check http://www.haproxy.org/download/1.5/doc/configuration.txt for available options
|
|
haproxy_defaults_balance: "roundrobin"
|
|
|
|
# Avoid TCP connections refusing to die after VIP switch
|
|
# https://bugs.launchpad.net/kolla-ansible/+bug/1917068
|
|
haproxy_host_ipv4_tcp_retries2: "KOLLA_UNSET"
|
|
|
|
# HAProxy socket admin permissions enable
|
|
haproxy_socket_level_admin: "no"
|
|
|
|
kolla_externally_managed_cert: False
|