Hi all,
here it is, the first development version for branch 1.4.
This one is the same as 1.3.19 + the following goodies :
- linux-specific optimizations to save up to 3 packets per
connection (2 on the client side, 1 on the server side).
The client-side savings can reduce bandwidth requirements
by 5-10% on sites which use a lot of small requests, and
reduce latency by about as much. See "option tcp-smart-accept"
and "tcp-smart-connect" (for the server side). This also
improves max session rate by about as much since we're already
bound by system time.
- support for TCP MSS adjustment for listeners : initially thought
a long time ago in order to help with clients running poor PPPoE
configurations, it happens to be helpful for people running on
gigabit with jumbo frames on the LAN but who want to limit their
frames to 1.5 kB to the net.
- improved the way protocol analysers are called so that we can
have as many of them as we want which are permanently attached
to the stream even during data forwarding. This will help a lot
for implementing HTTP keepalive as well as other protocols which
require step-by-step analysis (eg: POP, SMTP, FTP, ...). This is
not a user-visible change though.
- split of the HTTP analyser into multiple stages. Not user-visible
either though it will help implement the "use-server" directive.
Some more splitting is still required.
- support for the use_backend statement in TCP frontends, allowing
to switch a connection to a backend or another depending on any
criteria (protocol, IP, ...).
- ability to detect HTTP protocol in TCP ACLs and to use any HTTP-specific
matching (eg: URL, header, ...) in TCP rules. This allows you to
run HTTPS+HTTP+another protocol on the same port and switch to the
appropriate backend depending on what is detected. In order to achieve
this, the ACLs now report to the frontend what kind of information they
need.
- ability to switch to an HTTP backend from a TCP frontend. This allows
normal HTTP processing (persistence, ...) after an HTTP request has
been detected in a TCP connection.
- ACL support for matching RDP cookies. For instance you can allow some
users to connect and reject others. Or send some users to a given farm
and others to the rest.
- Persistence on RDP cookie : when an RDP cookie is detected using the ACL
above, it is possible to extract it and find the associated server, then
direct the connection to this server. Thus you don't depend on the IP
address, which is handy when users come in through proxies or are
masqueraded by their site's router.
- Balance on RDP cookie : this permits hashing of an RDP cookie (eg:
username) so that it provides poor man's persistence, but may be
useful for some scenarios.
- CLF log format : some users are heavily relying on the CLF format due
to some crappy, non-customizable, log analysers. Now, adding the "clf"
keyword after "option httplog" will switch the log output to CLF, and
will append all the non-CLF information (timers, ...) in individual
extra columns.
Note: the last 4 points (RDP and CLF) are internal developments which were
realized at Exceliance and contributed back to HAProxy. I'm saying it
because there aren't that many companies who contribute code back, and
I'd like to incite other ones to do so.
Since this version is not much different from 1.3.19 (except the new features),
it is relatively stable. It's been running fine in production for a few weeks
not on several sites (you know who you are), so those who need some of those
features can reasonably give it a try.
Oh, BTW, it's here :
http://haproxy.1wt.eu/download/1.4/src/
Have fun,
Willy
Received on 2009/07/29 23:36