From: Willy Tarreau Date: Thu, 19 Jun 2014 13:54:30 +0000 (+0200) Subject: DOC: remove the ultra-obsolete TODO file X-Git-Tag: v1.5.0~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4a0a8db9c68b22c963970e131dd0052e9db59381;p=thirdparty%2Fhaproxy.git DOC: remove the ultra-obsolete TODO file This one was still written in french and outdated since 1.4 or so. --- diff --git a/TODO b/TODO deleted file mode 100644 index 74b3ccefd5..0000000000 --- a/TODO +++ /dev/null @@ -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 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 -- 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 ' and 'use_backend ' - - 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 ', 'on host ' - - 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 -