haproxy #14

Description

Install HAProxy suitable for charms to register for reverse proxy of services


Overview

This charm provides HAProxy. HAProxy describes itself as a free, very
fast and reliable solution offering high availability, load balancing, and
proxying for TCP and HTTP-based applications. It is particularly suited for very
high traffic web sites and powers quite a number of the world's most visited
ones. Over the years it has become the de-facto standard open source load
balancer, is now shipped with most mainstream Linux distributions, and is often
deployed by default in cloud platforms. Since it does not advertise itself, we
only know it's used when the admins report it :-)

Usage

To deploy:

juju deploy cs:~chris.sanders/haproxy

You will most likely want to use a bundle to set options during deployment. The
primary use case for this charm is to allow other charms that implement the
reverse proxy interface to automatically register for
reverse proxy. This charm will allow both http and tcp reverse proxy's to be
requested from other charms. Additionally, for http reverse proxy Letsencrypt is
provided to allow HAProxy to automatically register for a certificate and
terminate the SSL/TLS connection. Finally, this charm provides options to use
UPNP for automatically requesting ports via UPNP. Most of these features are off
by default, see the configuration options to enable them.

Known Limitations and Issues

This charm is under development, several other use cases/features are still under
consideration. Merge requests are appreciated, some examples of current limitations include.

  • No HA Failover or Scaleout usage currently implemented
  • Can not restrict the ports other charms request
  • Functional testing is minimal

Configuration

See the full list of configuration options below. This will detail some of the
options that are worth highlighting.

  • Version: This is tested at the default '1.7', it is intended to provide a way
    to specify a different repository version. In theory if new versions are
    backwards compatible changing this is all that will be needed for new
    releases.
  • To access HAProxy stats please see "stats-user", "stats-passwd", "stats-url",
    "stats-port", and "stats-local" configuration settings. Note that the stats
    port must be unique, if you want to use the default port of 9000 for other
    service you should change this setting.
  • UPNP is provided via monkey patch and should be considered a convenience.
    Running UPNP in production is not recommended practice.
  • hostname will allow you to customize the hostname of HAProxy, be aware that
    doing this can cause multiple hosts to have the same hostname if you scale
    out the number of units. Setting hostname to "$UNIT" will set the hostname to
    the juju unit id.

Contact Information

Upstream Project Information

Configuration

version
(string) Version of HAProxy to install
1.7
enable-stats
(boolean) Enable HAProxy stats page
True
enable-upnp
(boolean) Attempt to open ports via upnp on port open
letsencrypt-domains
(string) Comma delimited list of domains to register
stats-url
(string) URL for accessing stats page
/ha-stats
hostname
(string) The host name to set
stats-passwd
(string) Password for accessing stats page
admin
stats-port
(int) Port for accessing stats page
9000
stats-local
(boolean) Restrict stats to local IP ranges
True
upnp-renew-interval
(string) Cron interval to rewnew upnp, if in use
@hourly
enable-https-redirect
(boolean) Redirect http requets with no explicit backend to https
True
stats-user
(string) Username for accessing stats page
admin
destination-https-rewrite
(boolean) Rewrite 'Destination' header so WebDav servers wont fail on mismatched file paths (http vs https)
True
cert-renew-interval
(string) Cron interval for letsencrypt renew, if in use
@daily
letsencrypt-email
(string) Email to register with letsencrypt
enable-letsencrypt
(boolean) Enable use of letsencrypt