Re: [ANNOUNCE] haproxy-2.0.0

2019-06-17 Thread Willy Tarreau
On Tue, Jun 18, 2019 at 12:57:58AM +0200, Cyril Bonté wrote:
> Le 16/06/2019 à 21:56, Willy Tarreau a écrit :
> > Hi,
> > 
> > HAProxy 2.0.0 was released on 2019/06/16. It added 63 new commits
> > after version 2.0-dev7.
> > [...]
> > 
> > Please find the usual URLs below :
> > Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/
> 
> And with more than 24h later, I've deployed the HTML documentation for 2.0.0
> and 2.1-dev.

Looks good, thank you Cyril!

> I really need to clean up/repair/rewrite my scripts ;)

You know how it is, everything that takes more time to rewrite than to
workaround by hand tends to last very long. After all it took something
like 15 years before I forced myself to write the release scripts ;-)

Willy



Re: [ANNOUNCE] haproxy-2.0.0

2019-06-17 Thread Cyril Bonté

Le 16/06/2019 à 21:56, Willy Tarreau a écrit :

Hi,

HAProxy 2.0.0 was released on 2019/06/16. It added 63 new commits
after version 2.0-dev7.
[...]

Please find the usual URLs below :
Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/


And with more than 24h later, I've deployed the HTML documentation for 
2.0.0 and 2.1-dev. I really need to clean up/repair/rewrite my scripts ;)



--
Cyril Bonté



Re: [ANNOUNCE] haproxy-2.0.0

2019-06-17 Thread Aleksandar Lazic
Am 16.06.2019 um 21:56 schrieb Willy Tarreau:
> Hi,
> 
> HAProxy 2.0.0 was released on 2019/06/16. It added 63 new commits
> after version 2.0-dev7.

[snipp]

> Please find the usual URLs below :
>Site index   : http://www.haproxy.org/
>Discourse: http://discourse.haproxy.org/
>Slack channel: https://slack.haproxy.org/
>Issue tracker: https://github.com/haproxy/haproxy/issues
>Sources  : http://www.haproxy.org/download/2.0/src/
>Git repository   : http://git.haproxy.org/git/haproxy-2.0.git/
>Git Web browsing : http://git.haproxy.org/?p=haproxy-2.0.git
>Changelog: http://www.haproxy.org/download/2.0/src/CHANGELOG
>Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Image with tls 1.3 openssl: https://hub.docker.com/r/me2digital/haproxy20-centos
Image with tls 1.3 boringsssl:
https://hub.docker.com/r/me2digital/haproxy20-boringssl

```
$ docker run --rm --entrypoint /usr/local/sbin/haproxy 
[MASKED]/haproxy20-centos -vv
HA-Proxy version 2.0.0 2019/06/16 - https://haproxy.org/
Build options :
  TARGET  = linux-glibc
  CPU = generic
  CC  = gcc
  CFLAGS  = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv
-Wno-unused-label -Wno-sign-compare -Wno-unused-parameter
-Wno-old-style-declaration -Wno-ignored-qualifiers -Wno-clobbered
-Wno-missing-field-initializers -Wtype-limits
  OPTIONS = USE_PCRE=1 USE_PCRE_JIT=1 USE_PTHREAD_PSHARED=1 USE_REGPARM=1
USE_OPENSSL=1 USE_LUA=1 USE_SLZ=1

Feature list : +EPOLL -KQUEUE -MY_EPOLL -MY_SPLICE +NETFILTER +PCRE +PCRE_JIT
-PCRE2 -PCRE2_JIT +POLL -PRIVATE_CACHE +THREAD +PTHREAD_PSHARED +REGPARM
-STATIC_PCRE -STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT
+CRYPT_H -VSYSCALL +GETADDRINFO +OPENSSL +LUA +FUTEX +ACCEPT4 -MY_ACCEPT4 -ZLIB
+SLZ +CPU_AFFINITY +TFO +NS +DL +RT -DEVICEATLAS -51DEGREES -WURFL -SYSTEMD
-OBSOLETE_LINKER +PRCTL +THREAD_DUMP -EVPORTS

Default settings :
  bufsize = 16384, maxrewrite = 1024, maxpollevents = 200

Built with multi-threading support (MAX_THREADS=64, default=1).
Built with OpenSSL version : OpenSSL 1.1.1c  28 May 2019
Running on OpenSSL version : OpenSSL 1.1.1c  28 May 2019
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
Built with Lua version : Lua 5.3.5
Built with network namespace support.
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT
IP_FREEBIND
Built with libslz for stateless compression.
Compression algorithms supported : identity("identity"), deflate("deflate"),
raw-deflate("deflate"), gzip("gzip")
Built with PCRE version : 8.32 2012-11-30
Running on PCRE version : 8.32 2012-11-30
PCRE library supports JIT : yes
Encrypted password support via crypt(3): yes
Built with the Prometheus exporter as a service

Available polling systems :
  epoll : pref=300,  test result OK
   poll : pref=200,  test result OK
 select : pref=150,  test result OK
Total: 3 (3 usable), will use epoll.

Available multiplexer protocols :
(protocols marked as  cannot be specified using 'proto' keyword)
  h2 : mode=HTXside=FE|BE mux=H2
  h2 : mode=HTTP   side=FEmux=H2
: mode=HTXside=FE|BE mux=H1
: mode=TCP|HTTP   side=FE|BE mux=PASS

Available services :
prometheus-exporter

Available filters :
[SPOE] spoe
[COMP] compression
[CACHE] cache
[TRACE] trace
```

> Willy

Best regards
Aleks

> ---
> Complete changelog from 2.0-dev7 :
[snipp]




[ANNOUNCE] haproxy-2.0.0

2019-06-16 Thread Willy Tarreau
Hi,

HAProxy 2.0.0 was released on 2019/06/16. It added 63 new commits
after version 2.0-dev7.

There were a few last-minute bug reports that started to make me worry
a bit but in the end these were nothing dramatic and quickly addressed.
Aside the usual bug fixes, this version mostly contains some documentation
and build updates. The most visible change will concern Linux users (most
users in fact), do to the removal of the totally obsolete "linux22",
"linux24", "linux24e" and "linux2628" targets in the Makefile. Now there
is a single "linux-glibc" one provided for environments running a recent
(read "still supported") Linux kernel with a similarly recent glibc. No
more worries about what was still enabled in 2.6.28 or for your libc! As
a side effect of this, namespaces, TCP Fast Open and getaddrinfo() are now
enabled by default on this combination. The very few remaining improvements
were in any order :
  - a small change on the state file to use server name only and not a
more-or-less random combination of the server ID and name anymore,
as clearly people were confused by this in the past and we now have
everything to rely solely on names across a cluster now ;

  - some HTX updates to pass the H2 scheme between the two sides so that
applications that expect to be called as "http:" will receive it ;

  - a new "http-request replace-uri" directive to more easily get rid of
any remaining reqrep users may still have in their configurations and
which will be removed from 2.1 ;

  - report of each process' version in "show proc" on the master process
command line (nice to detect failed upgrades) ;

  - 51degrees now supports HTX and provided a dummy library so that there
is no more code that we cannot build in travis, and I hope we can now
continue to enforce such a rule ;

I must say I am very happy with this release, especially with how smooth
it went when approaching the release over the last few weeks. Contributors
were reasonable in general, avoiding to send risky patches, and testers
did a great coverage, being able to report interesting issues. Seeing the
type of issues we've had last is very encouraging and is what makes me
want to release now without waiting more. Thanks to all these improvements,
I think we now have the cleanest version ever issued at the dot-zero release.
I sincerely hope new versions will continue on this trend that benefits a
lot from the new development cycle.

For those who haven't followed the development cycle closely, I'll try to
quickly summarize the changes since the previous LTS version (1.8). As
most of you know, 1.9 will not be maintained for a long time and should
mostly be seen as a technological preview or technical foundation for 2.0.

Thus what was added since 1.8 :
  - new internal native HTTP representation called HTX, was already in 1.9
and is now enabled by default in 2.0 ;

  - end-to-end HTTP/2 support including trailers and continuation frames,
as needed for gRPC ; HTTP/2 may also be upgraded from HTTP/1.1 using
the H2 preface;

  - server connection pooling and more advanced reuse, with ALPN protocol
negotiation (already in 1.9) ;

  - layer 7 retries, allowing to use 0-RTT and TCP Fast Open to the servers
as well as on the frontend ;

  - much more scalable multi-threading, which is even enabled by default on
platforms where it was successfully tested ; by default, as many threads
are started as the number of CPUs haproxy is allowed to run on. This
removes a lot of configuration burden in VMs and containers ;

  - automatic maxconn setting for the process and the frontends, directly
based on the number of available FDs (easier configuration in containers
and with systemd) ;

  - logging to stdout for use in containers and systemd (already in 1.9).
Logs can now provide micro-second resolution for some events ;

  - peers now support SSL, declaration of multiple stick-tables directly in
the peers section, and synchronization of server names, not just IDs ;

  - In master-worker mode, the master process now exposes its own CLI and
can communicate with all other processes (including the stopping ones),
even allowing to connect to their CLI and check their state. It is also
possible to start some sidecar programs and monitor them from the master,
and the master can automatically kill old processes that survived too
many reloads ;

  - the incoming connections are load-balanced between all threads depending
on their load to minimize the processing time and maximize the capacity
(already in 1.9) ;

  - the SPOE connection load-balancing was significantly improved in order
to reduce high percentiles of SPOA response time (already in 1.9) ;

  - the "random" load balancing algorithm and a power-of-two-choices variant
were introduced ;

  - statistics improvements with per-thread counters for certain things, and
a prometheus exporter for all o