haproxy/ROADMAP

79 lines
Plaintext
Raw Normal View History

Medium-long term wish list - 2017/11/24
Legend: '+' = done, '-' = todo, '*' = done except doc
1.9 or later :
- return-html code xxx [ file "xxx" | text "xxx" ] if <acl>
2010-11-24 15:21:56 +00:00
- 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.
2010-11-24 15:21:56 +00:00
- 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 :
- outgoing log load-balancing (round-robin or hash among multiple servers)
- 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...)