haproxy/TODO

103 lines
3.5 KiB
Plaintext
Raw Normal View History

* x-forwarded-for
* impl<70>menter l'option "log global" au niveau proxy pour utiliser les logs
globaux.
* matching case-insensitive
* impl<70>menter outgoing addr
* loguer t_cnx, t_data, t_total
+ factoriser la fonction de log (send_log = send_syslog+warning+alert)
+ d<>sactivation du keep-alive (suppression des ^Connection: et ajout des Connection: close)
-> 4 lignes (2 del, 2 add) suffisent.
+ ne pas loguer certaines adresses IP sources
-> pour les health-checks uniquement -> pas de log pour les requ<71>tes
vides (option dontlognull)
- mesurer le tps consomm<6D> entre deux select, et fournir la conso CPU :
%cpu = 100 * (tpreselect(n+1)-tpostselect(n)) / (tpreselect(n+1)-tpreselect(n))
- impl<70>menter limitation fd dans la conf : setrlimit(RLIMIT_NOFILE, ...)
- impl<70>menter core/no-core dans la conf : setrlimit(RLIMIT_CORE, ...)
- optimiser les regex pour acc<63>l<EFBFBD>rer les matches :
- compter les matches
- si match(n) & ([n].cpt > [n-1].cpt) & ([n].action == [n-1].action), swap(n,n-1)
- r<>guli<6C>rement, diviser tous les compteurs (lors d'un d<>passement par exemple)
- filtrage sur l'adresse IP source, et stocker le pointeur sur la derni<6E>re regex
match<63>e dans la "session" pour acc<63>l<EFBFBD>rer les regex.
- gestion keep-alive
+ handle parametrable HTTP health-checks replies
- differentiate http headers and http uris
- support environment variables in config file
- support keep-alive
- support SSL
===================== demandes ==========================
ok> 1) <20>coute sur une plage de ports :
ok> listen XXX 1.2.3.4:21000-21060
ok>
ok> 2) <20>coutes multiples :
ok> listen XXX 1.2.3.4:21000
ok> bind 2.3.4.5:21001
ok> bind 2.3.4.5:21000-21060
ok>
ok> => on en arrive <20> ceci :
ok>
ok> listen XXX [ address:port ]
ok> bind addr:plage-port[,[addr:]plage-port]*
ok> bind ...
ok> ...
ok>
ok> => proxy->listen_fd et proxy->listen_addr doivent <20>tre
ok> mis dans des listes
ok> => OK pour listen, impl<70>menter le BIND.
ok>
ok> 3) reconnexion sur le m<>me port sur le serveur :
ok>
ok> server XXX 1.2.3.4[:port]
ok> si <port> n'est pas sp<73>cifi<66>, on utilise le m<>me port que celui qui a re<72>u
ok> la connexion. Dans ce cas, il faut pouvoir forcer le port du health-check
ok> par un nouveau parametre "port".
ok>
ok> => <20>a permet les forwardings de plages :
ok>
ok> listen XXX
ok> bind 1.2.3.4:10000-11000
ok> server 1.2.3.5
ok>
4) param<61>tres par d<>faut :
cr<63>er une section "defaults" qui pr<70>cise les param<61>tres par d<>faut pour les
sections suivantes, concernant les param<61>tres suivants :
ok- les logs
ok- les modes (tcp/http)
ok- le balancing (round-robin/source)
ok- les time-outs
ok- maxconn
ok- redisp
ok- les options
ok- le retry
ok- les checks
- les options des serveurs ?
- les filtres et regex ?
- les cookies/captures
5) impl<70>menter "balance source" pour faire un hash sur la source.
6) possibilit<69> d'un process s<>par<61> par listen :
listen XXX
fork [ group_id ]
le fait de sp<73>cifier group_id fera que toutes les instances utilisant le m<>me
identifiant de groupe seront g<>r<EFBFBD>es par un m<>me processus.
7) g<>rer un chroot/uid/gid diff<66>rents par process :
listen XXX
chroot /truc
uid 123
gid 456
8) beaucoup de param<61>tres pourraient <20>tre sp<73>cifiques aux serveurs et non
aux instances. Exemples :
- adresse IP source pour atteindre le serveur
- m<>thode de health-check (proto, port, ...)
- poids
- alerte en cas de disparition
- le nombre max de sessions <20> lui envoyer