[DEV] open new 1.5 development branch

This new branch is based on 1.4.6, which 1.5-dev0 is 100% equivalent to.
The roadmap has been updated.
This commit is contained in:
Willy Tarreau 2010-05-23 08:46:08 +02:00
parent 5fdd77da56
commit 21475e3215
6 changed files with 82 additions and 89 deletions

View File

@ -1,6 +1,9 @@
ChangeLog : ChangeLog :
=========== ===========
2010/05/23 : 1.5-dev0
- exact copy of 1.4.6
2010/05/16 : 1.4.6 2010/05/16 : 1.4.6
- [BUILD] ebtree: update to v6.0.1 to remove references to dprintf() - [BUILD] ebtree: update to v6.0.1 to remove references to dprintf()
- [CLEANUP] acl: make use of eb_is_empty() instead of open coding the tree's emptiness test - [CLEANUP] acl: make use of eb_is_empty() instead of open coding the tree's emptiness test

155
ROADMAP
View File

@ -1,112 +1,99 @@
'+' = done, '-' = todo, '*' = done except doc Medium-long term roadmap - 2010/04/10
1.2.12 : Legend: '+' = done, '-' = todo, '*' = done except doc
+ weighted RR/SH
1.2.13 : 1.5 (ETA 2010/12/31) :
+ maxconn - server-side HTTP keepalive
+ queueing
1.2.14 : - return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
+ HTML status page
stats enable - return-raw [ file "xxx" | text "xxx" ] if <acl>
stats uri /?stats
stats realm w.ods.org\ statistics
stats auth user1:pass1
stats auth user2:pass2
stats auth user3:pass3
stats scope <px_id> | '.'
+ allow server-less proxies (for stats) - add support for client-side and server-side unix sockets
- separate timeout controls - try to remove srv==NULL internally and assign a dummy server to each backend
for dispatch, http_proxy and transparent modes.
+ option 'abortonclose' : if the session is queued or being connecting - rename L4 acls as L6 ACLs when some content is involved
to the server, and the client sends a shutdown(), then decide to abort
the session early because in most situations, this will be caused by
a client hitting the 'Stop' button, so there's no reason to overload
the servers with unservable requests. However, this is not HTTP compliant
and might cause little trouble to some very specific clients used to
close immediately after sending the request (no support for KA, which ones?)
+ minconn : makes the server's maxconn dynamic, which will be computed as a - add new L4 ACL checks immediately after accept, before even allocating the
ratio of the proxy's sessions : buffers ("connection {accept|reject|delay|freeze} {if|unless}").
srv->effective_maxconn =
max(srv->maxconn * px->nbsess / px->maxconn, srv->minconn)
1.2.15 : - implement support for "connection freeze" after accept. A list of frozen
+ monitor-uri : specify an URI for which we will always return 'HTTP/1.0 200' connections should be maintained so that it is possible to recycle them
and never forward nor log it. when new file descriptors are required.
+ option ssl-hello-chk : send SSLv3 client hello messages to check the servers - support for time-ordered priority queues with ability to add an offset
based on request matching. Each session will have one ebtree node to be
attached to whatever queue the session is waiting in.
1.3 : - assign a nice priority based on ACLs.
- remove unused STATTIME
- reference all the include files that must be created, possibly under subdirs : - pattern extraction is needed for ACLs and stickiness. It would work like
this :
- acl.h => more general ACL work acl <name> <pattern> [-i] <values>...
- appcook.h => appsession-related cookies
- backend.h => back-end part of the PR_O_* + backend definitions All ACL fetch method currently available would be transformed into pattern
- buffers.h => buffer management relying on memory.h extraction methods. That way we could stick on hdr(x-forwarded-for) or use
- capture.h => header and cookie capture source 0.0.0.0 usesrc <pattern> (such as "hdr_ip(headername)"). Note that
- cfgparse.h => configuration parser ACLs sometimes need iterative matching/extraction.
- checks.h => health checks
- clireq.h => the client side "request" part of the current sessions. - add support for complex pattern extraction rules :
- compat.h => compatibility with other OSes (TCP_NODELAY, ...)
- config.h => config parameters, renamed CONFIG_HAP_*, includes defaults.h pattern = <pattern_term>
- controls.h => SN_CACHEABLE, ... | '{' pattern_expr '}'
- cookies.h => definitions related to cookie management + SN_SCK_*
- defaults.h => many default values, might disappear soon after cleanup pattern_expr = <pattern_term> [ <transform> ... ]
- frontend.h => front-end part of the PR_O_* + client definitions + listeners
- global.h => shared global variables - support loading data sets from files
- http.h => HTTP state definitions and transitions + present/not present (eg: netmasks)
- httperr.{hc} => HTTP return codes - pattern conversion per prefixes. Eg: convert src IP to country.
- libtask.h => task scheduler
- libtime.h => time-related definitions - make new patterns available based on stickiness matching :
- loadbal.h => load balancing algorithms - number of entries in table for the matched pattern
- log.h => log definitions - same after having increased the match counter
- memory.h => pools
- polling.h => definitions of select(), poll(), INTBITS, ... - add support for concurrency match in tables
- queue.h => queue management - just like stickiness, but counted per session (or request), increased
- regex.h => filtering on first match and decreased at end of request or connection. This
- servers.h => servers definitions (SRV_*, states, ...) requires that the session has a list of matched terms that must be
- fd.h => FD_ST* (add FD_DGRAM), RES_*, socket states, etc... released at the end.
- srvreq.h => the server side "request" part of the current sessions.
- standard.h => general purpose macros and defines (eg: MIN/MAX, ...) 1.6 (will probably change anyway) :
- startup.h => MODE_* - wait on resource (mem, socket, server's conn, server's rate, ...)
- tuning.h => platform-specific tuning parameters
- bandwidth limits
- create internal services and make stats, CLI, etc... part of that.
- use_server ... if ...
- buddy servers to build defined lists of failovers. Detect loops during
the config check.
server XXX buddy YYY
server YYY # may replace XXX when XXX fails
- spare servers : servers which are used in LB only when a minimum farm
weight threshold is not satisfied anymore. Useful for inter-site LB with
local pref by default.
Old, maybe obsolete points
- clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent. - clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
- handle half-closed connections better (cli/srv would not distinguish
DATA/SHUTR/SHUTW, it would be a session flag which would tell shutr/shutw).
Check how it got changed in httpterm.
- 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on - 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
demand) demand)
- wait queues replaced for priority-based trees - ability to assign a task priority based on L7 matching
- ability to assign a prio based on L7 matching - implement support for event-triggerred epoll()
- prio-based O(1) scheduler
- maxconn reserve for VIP/admins
- verify if it would be worth implementing an epoll_ctl_batch() for Linux - verify if it would be worth implementing an epoll_ctl_batch() for Linux
- balance LC/WLC (patch available) - option minservers XXX : activates some spare servers when active servers
- option minservers XXX : activates some backup servers when active servers
are insufficient are insufficient
- monitor minservers XXX : monitor-net and monitor-uri could report a failure
when the number of active servers is below this threshold.
- option smtp-chk : use SMTP health checks (avoid logs if possible)
- new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello - new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello

View File

@ -1 +1 @@
2010/05/16 2010/05/20

View File

@ -1 +1 @@
1.4.6 1.5-dev0

View File

@ -2,9 +2,9 @@
HAProxy HAProxy
Configuration Manual Configuration Manual
---------------------- ----------------------
version 1.4.6 version 1.5
willy tarreau willy tarreau
2010/05/16 2010/05/23
This document covers the configuration language as implemented in the version This document covers the configuration language as implemented in the version

View File

@ -1,6 +1,6 @@
Summary: HA-Proxy is a TCP/HTTP reverse proxy for high availability environments Summary: HA-Proxy is a TCP/HTTP reverse proxy for high availability environments
Name: haproxy Name: haproxy
Version: 1.4.6 Version: 1.5-dev0
Release: 1 Release: 1
License: GPL License: GPL
Group: System Environment/Daemons Group: System Environment/Daemons
@ -76,6 +76,9 @@ fi
%attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name} %attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name}
%changelog %changelog
* Sun May 23 2010 Willy Tarreau <w@1wt.eu>
- updated to 1.5-dev0
* Sun May 16 2010 Willy Tarreau <w@1wt.eu> * Sun May 16 2010 Willy Tarreau <w@1wt.eu>
- updated to 1.4.6 - updated to 1.4.6