haproxy/TODO
willy tarreau a41a8b4ee6 * released 1.1.22
* 'listen' now supports optionnal address:port-range lists
* 'bind' introduced to add new listen addresses
* fixed a bug which caused a session to be kept established on a server till
  it timed out if the client closed during the DATA phase.
* the port part of each server address can now be empty to make the proxy
  connect to the server on the same port it was connected to, be an absolute
  unsigned number to reflect a single port (as in older versions), or an
  explicitly signed number (+N/-N) to indicate that this offset must be
  applied to the port the proxy was connected to, when connecting to the
  server.
* the 'port' server option allows the user to specify a different
  health-check port than the service one. It is mandatory when only relative
  ports have been specified and check is required. By default, the checks are
  sent to the service port.
* new 'defaults' section which is rather similar to 'listen' except that all
  values are only used as default values for future 'listen' sections, until
  a new 'defaults' resets them. At the moment, server options, regexes,
  cookie names and captures cannot be set in the 'defaults' section.
* Makefile now optimizes for Ultrasparc by default on Solaris/Sparc
* large documentation updates and fixes
* new 'tests' directory with some debug files
2005-12-17 14:02:24 +01:00

103 lines
3.5 KiB
Plaintext

* x-forwarded-for
* implémenter l'option "log global" au niveau proxy pour utiliser les logs
globaux.
* matching case-insensitive
* implé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êtes
vides (option dontlognull)
- mesurer le tps consommé entre deux select, et fournir la conso CPU :
%cpu = 100 * (tpreselect(n+1)-tpostselect(n)) / (tpreselect(n+1)-tpreselect(n))
- implémenter limitation fd dans la conf : setrlimit(RLIMIT_NOFILE, ...)
- implémenter core/no-core dans la conf : setrlimit(RLIMIT_CORE, ...)
- optimiser les regex pour accélé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è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ère regex
matchée dans la "session" pour accélé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) écoute sur une plage de ports :
ok> listen XXX 1.2.3.4:21000-21060
ok>
ok> 2) é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 à 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 être
ok> mis dans des listes
ok> => OK pour listen, implé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écifié, on utilise le même port que celui qui a reçu
ok> la connexion. Dans ce cas, il faut pouvoir forcer le port du health-check
ok> par un nouveau parametre "port".
ok>
ok> => ç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ètres par défaut :
créer une section "defaults" qui précise les paramètres par défaut pour les
sections suivantes, concernant les paramè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émenter "balance source" pour faire un hash sur la source.
6) possibilité d'un process séparé par listen :
listen XXX
fork [ group_id ]
le fait de spécifier group_id fera que toutes les instances utilisant le même
identifiant de groupe seront gérées par un même processus.
7) gérer un chroot/uid/gid différents par process :
listen XXX
chroot /truc
uid 123
gid 456
8) beaucoup de paramètres pourraient être spé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 à lui envoyer