mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-31 07:37:54 +00:00
DOC: remove the ultra-obsolete TODO file
This one was still written in french and outdated since 1.4 or so.
This commit is contained in:
parent
c8b27b6c68
commit
4a0a8db9c6
181
TODO
181
TODO
@ -1,181 +0,0 @@
|
||||
* 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
|
||||
ok- les cookies/captures
|
||||
- les options des serveurs ?
|
||||
- les filtres et regex ?
|
||||
|
||||
* implémenter "balance source" pour faire un hash sur la source.
|
||||
permettre de spécifier un masque sur lequel s'applique le hachage,
|
||||
ainsi qu'une option pour hacher en fonction de l'adresse dans le
|
||||
champ "x-forwarded-for". Problème pour le support des pannes: ce
|
||||
type de hash est utile là où la persistence par cookie ne peut pas
|
||||
s'appliquer, donc comment faire pour assurer un maximum de persistence
|
||||
en cas de panne ?
|
||||
|
||||
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.
|
||||
|
||||
-> plus souple et plus compréhensible de faire des sections par processus,
|
||||
ce qui résoud également le cas ci-dessous. Ex:
|
||||
process_group X
|
||||
nbproc X
|
||||
uid X
|
||||
chroot X
|
||||
listen ...
|
||||
|
||||
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, ...)
|
||||
* méthode de health-check (port)
|
||||
- poids
|
||||
- alerte en cas de disparition
|
||||
- le nombre max de sessions à lui envoyer
|
||||
|
||||
ok> 9) ajouter des paramètres optionnels à l'option "httpchk" permettant
|
||||
ok> de forcer la méthode, la version HTTP et des headers.
|
||||
ok> ex: option httpchk -> OPTIONS / HTTP/1.0
|
||||
ok> option httpchk /test -> OPTIONS /test HTTP/1.0
|
||||
ok> option httpchk HEAD / HTTP/1.0\nHost:\ www -> tel quel
|
||||
|
||||
Todo for 1.1
|
||||
============
|
||||
* "no more server" alert
|
||||
* config check
|
||||
- anti-flapping
|
||||
|
||||
Todo for 1.2
|
||||
============
|
||||
- direct <server> <regex> <match>
|
||||
- new config syntax allowing braces to be able to shorten lines
|
||||
- insert/learn/check/log unique request ID, and add the ability
|
||||
to block bad responses.
|
||||
- IPv6 :
|
||||
* listen [ip4.ip4.ip4.ip4]:port[-port]
|
||||
* listen [ip6::...ip6]/port[-port]
|
||||
- server xxx ipv4 | ipv4: | ipv4:port[-port] | ipv6/ | ipv6/port[-port]
|
||||
* appcookie
|
||||
* weighted round robin
|
||||
- option to shutdown(listen_sock) when max connections reached
|
||||
* epoll
|
||||
- replace the event scheduler with an O(log(N)) one. The timer queue will
|
||||
need a tree with a known end (to speed up queueing of latest events), and
|
||||
no entry for eternity.
|
||||
- refine memory management so that the request buffer is only allocated in
|
||||
cli_read() and response buffer during srv_read(). This would protect against
|
||||
attacks with thousands connections : 20000 connections consume 340 MB RSS and
|
||||
1.3 GB VSZ on Linux. Data should be in a separate buffer to prevent any
|
||||
activity on the buffer's pointers from touching the buffer page itself.
|
||||
- make buffer size configurable in global options
|
||||
* monitor number of simultaneous sessions in logs (per srv/inst/global)
|
||||
* ignore leading empty lines in HTTP requests
|
||||
+ limit the per-server number of sessions and queue incoming connections
|
||||
=> still needs refinement (actions at servers UP/DOWN, timeouts)
|
||||
- new 'timeout' keyword to set all timeouts (including the queue)
|
||||
- ability to intercept an URI to report statistics
|
||||
- ability to intercept an URI to return 404
|
||||
- embedded error pages loaded in memory at startup time (eg: for expired time
|
||||
in connection queue)
|
||||
|
||||
|
||||
TODO for 1.3
|
||||
============
|
||||
- check all copyrights
|
||||
- fix Makefile.bsd
|
||||
- separate inline functions to put them in files covered by GPL
|
||||
- implement HTTP status 414 - request URI too long
|
||||
- implement 'use_filters <proxy>' and 'use_backend <proxy>'
|
||||
- fix the logs. The logs might be defined from the frontend and
|
||||
augmented depending on the backends' options. Another solution
|
||||
would be to support a 'log' type entity just like the frontend,
|
||||
filters and backend, on which every entity could rely.
|
||||
- implement 'on uri <uri> <proxy>', 'on host <host> <proxy>'
|
||||
- remove the first now useless hop in hdr_idx
|
||||
- balance on URI hash (specify length or depth)
|
||||
- balance on any header hash (eg: host)
|
||||
- balance with redirections to real servers
|
||||
- multi-site LB with weighted redirections to the remote one
|
||||
|
Loading…
Reference in New Issue
Block a user