Bonjour,
Avant de commencer, je voulais obtenir une opinion sur les performances que cela pourrait générer. Pour être plus clair, j’utilise un haproxy pour rediriger les requêtes de lecture vers un nœud spécifique d’un cluster géré par Patroni. Est-ce que les performances seront affectées négativement par les traitements effectués par le haproxy ? Merci.
haproxy gère que des connexions, ça m’étonnerait que ça fasse baisser les perf. J’avais fait un poc avec la stack que tu décris mais jamais fait de tests de charge.
Bonjour,
il peut gerer plus que des connexions, et dans notre cas.
on veut
- detecter la nature des requetes qui arrive dessus avec les ACL. afin de soulager le serveur maitre/leader
- mettre a jour dynamiquement la configuration du haproxy en consultant l’api de patroni pour connaitre l’inventaire
backend sql-backend
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
option tcpka
option mysql-check user haproxy_check
# Serveur de lecture
server sql-read 192.168.1.10:3306 check weight 1
acl is_select hdr_beg(host) -i SELECT
use_backend sql-read if is_select
# Serveur d'écriture
server sql-write 192.168.1.11:3306 check weight 1
default_backend sql-write
backend sql-read
mode tcp
balance roundrobin
server sql-read-1 192.168.1.10:3306 check weight 1
backend sql-write
mode tcp
balance roundrobin
server sql-write-1 192.168.1.11:3306 check weight 1
Je te garanti que HAProxy ne ferra pas baisser tes performances. Le traitement TCP est vraiment très peu consommateur de CPU et en plus, en mode forward de data, HAProxy utilise une optimisation du kernel Linux qui évite les recopie de buffer entre la socket input et la socket output.
seule la latence réseau et système impactera tes flux, ce devrait être absolument négligeable par rapport au temps de réponse d’une base de données.
j’abonde dans le même sens
HAproxy est un monstre d’efficacité et peut encaisser des débits inouis
c’est la DB derrière lui qui prendra la majorité du temps