haproxy/ROADMAP
Willy Tarreau e75463d22e DOC: update the outdated ROADMAP file
At least the load load balancing was done. Other points are being carried
since 1.5 or so, they should go into the issue tracker with no version
indication.
2019-06-15 21:59:54 +02:00

77 lines
2.4 KiB
Plaintext

Medium-long term wish list - updated 2019/06/15
Legend: '+' = done, '-' = todo, '*' = done except doc
2.1 or later :
- return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
- return-raw [ file "xxx" | text "xxx" ] if <acl>
- have multi-criteria analysers which subscribe to req flags, rsp flags, and
stream interface changes. This would result in a single analyser to wait
for the end of data transfer in HTTP.
- make it possible to condition a timeout on an ACL (dynamic timeouts)
- forwardfor/originalto except with IPv6
- tcp-request session expect-proxy {L4|L5} if ...
- wait on resource (time, mem, CPU, socket, server's conn, server's rate, ...)
- bandwidth limits
- 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.
- add support for event-triggered epoll, and maybe change all events handling
to pass through an event cache to handle temporarily disabled events.
- evaluate the changes required for multi-process+shared mem or multi-thread
+thread-local+fast locking.
Old, maybe obsolete points :
- clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.
- 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
demand)
- verify if it would be worth implementing an epoll_ctl_batch() for Linux
- option minservers XXX : activates some spare servers when active servers
are insufficient
- initcwnd parameter for bind sockets : needed in kernel first
- have a callback function which would be called after a server is selected,
for header post-processing. That would be mainly used to remove then add
the server's name or cookie in a header so that the server knows it.
Unsorted :
- internal socket for "server XXX frontend:name"
- XML inspection (content-switching for SOAP requests)
- random cookie generator
- fastcgi to servers
- hot config reload
- RHI - BGP
- telnet/SSH cli
- dynamic memory allocation
- dynamic weights based on check response headers and traffic response time
- various kernel-level acceleration (multi-accept, ssplice, epoll2...)