Mise a jour pour Debian 10

This commit is contained in:
Gregory Colpart 2019-09-24 01:34:38 +02:00
parent 2c2ea37d2e
commit 34ece8efca

View file

@ -3,9 +3,9 @@ title: Howto Varnish
categories: web HA cache
...
* Documentation : <https://www.varnish-cache.org/docs/4.0/>
* Documentation : <https://www.varnish-cache.org/docs/6.1/>
Varnish est un reverse-proxy HTTP. Il se met typiquement devant des serveurs HTTP et garde en cache les réponses autant que possible. Il gère également (un peu) le load-balancing entre les serveurs HTTP.
[Varnish](https://www.varnish-cache.org/) est un reverse-proxy HTTP. Il se met typiquement devant des serveurs HTTP et garde en cache les réponses autant que possible. Il gère également (un peu) le load-balancing entre les serveurs HTTP.
## Installation
@ -13,49 +13,59 @@ Varnish est un reverse-proxy HTTP. Il se met typiquement devant des serveurs HTT
# apt install varnish
# varnishd -V
varnishd (varnish-4.0.2 revision bfe7cd1)
varnishd (varnish-6.1.1 revision efc2f6c1536cf2272e471f5cff5f145239b19460)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2014 Varnish Software AS
Copyright (c) 2006-2015 Varnish Software AS
~~~
## Configuration de base
### varnishd
Le fichier `/etc/default/varnish` [n'est plus utilisé en Debian 8 avec Systemd](https://bugs.debian.org/749272). Malheureusement cela provoque un bug : le script `/usr/share/varnish/reload-vcl` l'utilise toujours... pour éviter toute confusion, on supprime */etc/default/varnish* et l'on remplace *ExecReload=* par un script minimal.
Le fichier `/etc/default/varnish` [n'est plus utilisé avec Systemd](https://bugs.debian.org/749272). Pour éviter toute confusion, on supprime ces fichiers :
~~~
# rm /etc/default/varnish*
~~~
Pour modifier la configuration, on copie l'unité Systemd :
~~~
# cp -a /lib/systemd/system/varnish.service /etc/systemd/system
~~~
`/etc/systemd/system/varnish.service` (ne pas oublier de `systemctl daemon-reload` à chaque modification) :
Puis l'on personnalise la configuration via `/etc/systemd/system/varnish.service` (ne pas oublier de `systemctl daemon-reload` à chaque modification) :
~~~
ExecStart=/usr/sbin/varnishd -F -a 0.0.0.0:80 -T localhost:6082 -f /etc/varnish/default.vcl \
-S /etc/varnish/secret -s malloc,2G \
-p thread_pools=<Nombre de cores CPU> -p thread_pool_add_delay=2 -p thread_pool_min=500 -p thread_pool_max=5000
ExecReload=/etc/varnish/reload-vcl.sh
~~~
`/etc/varnish/reload-vcl.sh` (à mettre en *chmod 700* bien sûr) :
~~~{.bash}
#!/bin/sh
UUID=`cat /proc/sys/kernel/random/uuid`
/usr/sbin/varnishd -C -f /etc/varnish/default.vcl >/dev/null \
&& /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.load vcl_$UUID /etc/varnish/default.vcl" \
&& /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.use vcl_$UUID"
~~~
Détails de certaines options de [varnishd](http://www.varnish-cache.org/docs/4.0/reference/varnishd.html) :
Détails de certaines options de [varnishd](http://www.varnish-cache.org/docs/6.1/reference/varnishd.html) :
* `-a` : spécifie *IP*:*port* sur lequel Varnish écoute pour les requêtes HTTP. On peut ainsi spécifier une IP secondaire pour coexister avec un autre service HTTP (Apache, Nginx) sur le port 80 (*-a 192.0.2.1:80*) ou faire écouter Varnish uniquement en local (*-a 127.0.0.1:8080*) ou alors le faire écouter de partout (*-a 0.0.0.0:80*) ou même spécifier plusieurs IP (*-a 0.0.0.0:80,127.0.0.1:81*)
* `-T` : spécifie l'interface d'admin de Varnish, accessible avec `varnishadm`
* `-f` : spécifie le fichier des règles Varnish au format VCL (*Varnish Configuration Language*)
* `-s` : spécifie où est stocké le cache. Cela peut être en mémoire (*-s malloc,2G*) et/ou dans un fichier (*-s file,varnish_storage.bin,8G*)
Note : avant Debian 8, [Varnish ne supportait pas d'être lancé avec *umask 077*, c'est corrigé en Debian Jessie](https://bugs.debian.org/696504)
> *Note* : Pour Debian 8, le script `/usr/share/varnish/reload-vcl` utilise toujours `/etc/default/varnish`... on remplace donc `ExecReload=` par un script minimal :
>
> ~~~
> ExecReload=/etc/varnish/reload-vcl.sh
> ~~~
>
> avec `/etc/varnish/reload-vcl.sh` (à mettre en *chmod 700* bien sûr) :
>
> ~~~{.bash}
> #!/bin/sh
> UUID=`cat /proc/sys/kernel/random/uuid`
> /usr/sbin/varnishd -C -f /etc/varnish/default.vcl >/dev/null \
> && /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.load vcl_$UUID /etc/varnish/default.vcl" \
> && /usr/bin/varnishadm -T localhost:6082 -S /etc/varnish/secret "vcl.use vcl_$UUID"
> ~~~
> *Note* : avant Debian 8, [Varnish ne supportait pas d'être lancé avec *umask 077*, c'est corrigé en Debian Jessie](https://bugs.debian.org/696504)
### default.vcl