v8.1.5: Update HAProxy configurations and enhance error handling

Adjusted HAProxy Ansible role for ownership and removed unused peer configurations. Added error handling to HA-related views and database queries to improve stability. Updated HAProxy Exporter dependency to a newer version for compatibility.
pull/403/merge
Aidaho 2025-01-16 14:43:52 +03:00
parent e53a7445c7
commit 5b8df16ba9
5 changed files with 21 additions and 24 deletions

View File

@ -23,6 +23,13 @@ def get_user() -> UserName:
print(str(e))
def select_user_status() -> int:
try:
return UserName.get().Status
except Exception:
return 0
def get_roxy_tools():
try:
query_res = RoxyTool.select().where(RoxyTool.is_roxy == 1).execute()

View File

@ -66,6 +66,8 @@
template:
src: haproxy.state.j2
dest: /etc/haproxy/haproxy.state
owner: haproxy
group: haproxy
mode: 0644
force: no

View File

@ -45,24 +45,9 @@ listen stats
stats admin if TRUE
# END Roxy-WI MANAGED listen stats do not edit it directly
{% if M_OR_S != 'None' %}
peers default_peers
{% if M_OR_S == 'master' %}
peer {{ ansible_hostname }} {{MASTER}}:10000
{% for slave in slaves %}
peer slave_lb {{slave}}:10000
{% endfor %}
{% else %}
peer master_lb {{MASTER}}:10000
{% for slave in slaves %}
peer {{ ansible_hostname }} {{slave}}:10000
{% endfor %}
{% endif %}
{% endif %}
backend per_ip_and_url_rates
stick-table type binary len 8 size 1m expire 24h store http_req_rate(24h) {% if M_OR_S != 'None' %} peers default_peers {% endif %}
stick-table type binary len 8 size 1m expire 24h store http_req_rate(24h)
backend per_ip_rates
stick-table type ip size 1m expire 24h store gpc0,gpc0_rate(30s) {% if M_OR_S != 'None' %} peers default_peers {% endif %}
stick-table type ip size 1m expire 24h store gpc0,gpc0_rate(30s)

View File

@ -27,4 +27,4 @@ galaxy_info:
- exporter
dependencies:
- { role: 'bdellegrazie.ansible-role-prometheus_exporter', version: 'v1.1.3' }
- { role: 'bdellegrazie.ansible-role-prometheus_exporter', version: 'v2.0.3' }

View File

@ -134,12 +134,15 @@ class HAView(MethodView):
return render_template('ha_cluster.html', **kwargs)
else:
settings = {}
clusters = ha_sql.select_cluster(cluster_id)
router_id = ha_sql.get_router_id(cluster_id, default_router=1)
slaves = ha_sql.select_cluster_slaves(cluster_id, router_id)
cluster_services = ha_sql.select_cluster_services(cluster_id)
vip = ha_sql.select_cluster_vip(cluster_id, router_id)
is_virt = ha_sql.check_ha_virt(vip.id)
try:
clusters = ha_sql.select_cluster(cluster_id)
router_id = ha_sql.get_router_id(cluster_id, default_router=1)
slaves = ha_sql.select_cluster_slaves(cluster_id, router_id)
cluster_services = ha_sql.select_cluster_services(cluster_id)
vip = ha_sql.select_cluster_vip(cluster_id, router_id)
is_virt = ha_sql.check_ha_virt(vip.id)
except Exception as e:
return roxywi_common.handler_exceptions_for_json_data(e, '')
if vip.use_src:
use_src = 1
else: