Readme
Juju Charm: varnish
Author: Nathan Williams
0. INTRODUCTION
########################################################################
Varnish Cache is a "web application accelerator", or an HTTP reverse
proxy. By deploying varnish in front of an HTTP server, it can speed up
delivery by a factor of 300-1000x, depending on configuration.
What makes Varnish Cache so powerful is the Varnish Cache Language (VCL). By
using VCL to configure Varnish Cache for your site, you can see
*remarkable* performance improvements.
This varnish charm has also been set up to use a self-policing, round-
robin load-balancer (director) that distributes the load between your
HTTP backends. Any backends defined by related website relations will
be monitored, and in the event that they repeatedly fail to respond,
Varnish Cache will stop sending it requests until it is healthy.
1. REQUIREMENTS
########################################################################
Varnish Cache requires a backend that serves content with HTTP.
2. GETTING STARTED DEPLOYING VARNISH
########################################################################
Bootstrap your juju environment:
juju bootstrap
Deploy a varnish (reverse-proxy) instance:
juju deploy varnish
Expose the service:
juju expose varnish
Connect varnish and wordpress:
juju add-relation varnish wordpress
3. CONFIGURING VARNISH
########################################################################
Configuration options:
The varnish charm allows you to configure varnish's listening port in
your own config.yaml.
Tune your Varnish Cache deployment:
It also includes some common-sense tuning tweaks in data/extra.vcl.
If you wish to add extra (application-specific?) configuration, feel
free to add your VCL changes to data/extra.vcl. It shouldn't interfere
with the charm deployment, and will retain the round-robin director as
as long as you keep the following line in your vcl_receive:
set req.backend = balance;
4. MORE INFORMATION
########################################################################
To verify Varnish Cache is delivering cached content, check the HTTP
headers by running the following command twice:
curl -I -H "Host: <backend address>" http://<varnish address>/
To verify the site content is delivered from the backend:
curl -H "Host: 192.168.122.242" http://192.168.122.111/
For more information about Varnish Cache, check out their official docs:
https://www.varnish-cache.org/docs/3.0/
5. IMPROVEMENTS? BUGS?
########################################################################
If you find a bug, or know any optimization tricks that are application
agnostic, let us know!
6. THE END
########################################################################
To destroy all your services, you can run:
juju destroy-environment
Changes
| 2012/06/22 Matthew Nuzum Updating service name for varnish config to use service name but with / removed. For example graphit (revno 9) |
| 2012/06/21 Matthew Nuzum Updating varnish to make it compatible with local/VLC instances
(revno 8) |
| 2012/05/24 Nathan Williams fixing revision (revno 7) |
| 2012/05/24 Nathan Williams more detailed README (revno 6) |
| 2012/05/24 Nathan Williams * hooks/website-relation-changed: publicize hostname
* hooks/reverseproxy-relation-changed: use (revno 5) |
| 2012/05/16 Nathan Williams metadata.yaml: add maintainer (revno 4) |
| 2012/05/16 Nathan Williams moving extra.vcl data file out of hooks dir (revno 3) |
| 2012/05/13 Nathan Williams Add more detail to README (revno 2) |