Recherche de site Web

Comment installer Varnish Cache pour Apache sur CentOS/RHEL 8


Varnish Cache est un accélérateur d'applications Web open source gratuit, moderne et performant. Il s'agit d'un proxy HTTP inverse rapide qui met en cache le contenu pour accélérer les performances de votre serveur Web, en stockant le contenu Web dans la mémoire du serveur – dans un cache. Il est configuré pour s'exécuter devant un serveur d'origine tel qu'un serveur Web Apache (HTTPD).

Lorsqu'un client demande du contenu, Varnish accepte la requête HTTP, envoie la requête au serveur d'origine, met en cache les objets renvoyés et répond à la requête du client. La prochaine fois que le client demandera le même contenu, Varnish le servira à partir du cache. De cette façon, il réduit le temps de réponse et la consommation de bande passante du réseau sur les futures requêtes équivalentes.

Varnish fonctionne également comme un routeur de requêtes HTTP, un pare-feu d'application Web, un équilibreur de charge, etc. Il est configuré à l'aide du Varnish Configuration Language (VCL) flexible qui est extensible à l'aide de Varnish Modules (également appelés VMOD ), prend en charge Edge Side Include (ESL), la compression et la décompression Gzip, et bien plus encore.

Dans cet article, vous apprendrez comment installer le serveur Web Apache HTTPD et Varnish Cache 6 sur un nouveau serveur CentOS/RHEL 8, y compris la configuration Varnish à exécuter devant le serveur HTTPD.

Conditions préalables:

  • Un serveur avec installation CentOS 8
  • Un serveur avec une installation RHEL 8 avec un abonnement Red Hat activé sur votre système.

Étape 1 : Installation du serveur Web Apache sur CentOS/RHEL 8

1. Commencez par mettre à jour tous les packages logiciels installés sur le système comme suit à l'aide de la commande DNF.

dnf update

2. Ensuite, exécutez la commande suivante pour installer le serveur Web Apache HTTP à partir du référentiel AppStream.

dnf install httpd

3. Dès que l'installation est terminée, démarrez le service httpd, activez-le pour qu'il démarre automatiquement lors du démarrage du système et vérifiez son état pour confirmer qu'il est opérationnel, à l'aide de la commande systemctl.

systemctl start httpd
systemctl enable httpd
systemctl status httpd

4. Par défaut, CentOS/RHEL 8 inclut un pare-feu entièrement verrouillé (exécutez firewall-cmd –state pour confirmer). Vous devez ouvrir l'accès au service HTTP dans le pare-feu pour permettre aux utilisateurs d'accéder à des sites Web ou à des applications fonctionnant sur HTTP, et également recharger les paramètres de firewalld pour appliquer les nouvelles modifications.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

Étape 2 : Installation de Varnish Cache 6.4 sur CentOS/RHEL 8

5. Maintenant que le serveur Web Apache est en cours d'exécution, vous pouvez poursuivre l'installation du Varnish Cache sur le système à l'aide de la commande suivante.

dnf module install varnish

6. Après une installation réussie, vous pouvez vérifier la version de Varnish installée sur votre système.

varnishd -V

7. Ensuite, l'exécutable principal est installé sous le nom /usr/sbin/varnishd. De plus, les fichiers de configuration Varnish sont stockés dans le répertoire /etc/varnish, où :

  • /etc/varnish/default.vcl – est le fichier de configuration principal de Vernis écrit en VCL.
  • /etc/varnish/secret – est le fichier secret du vernis.

8. Démarrez maintenant le service de vernis. Pour l'instant, activez-le pour qu'il démarre automatiquement lors du démarrage du système en cas de redémarrage du serveur et vérifiez son état pour vous assurer qu'il est opérationnel comme suit.

systemctl start varnish
systemctl enable varnish
systemctl status varnish

Étape 3 : configurer Apache pour qu'il fonctionne avec le cache Varnish

9. Il est maintenant temps de configurer le Varnish Cache pour qu'il s'exécute devant le service Apache. Par défaut le serveur Apache est configuré pour écouter sur le port 80, ceci est défini dans le fichier de configuration principal /etc/httpd/conf/httpd.conf.

Ouvrez-le pour le modifier à l'aide de votre éditeur de texte préféré.

vi /etc/httpd/conf/httpd.conf

Recherchez le paramètre Écouter. Pour exécuter Varnish devant le serveur Apache, vous devez changer le port par défaut 80 en 8080 (ou tout autre port de votre choix) comme montré dans la capture d’écran suivante.

Ce port sera ajouté ultérieurement comme port du serveur backend dans le fichier de configuration Varnish.

De plus, la configuration de l'hôte virtuel pour chaque site Web/application qui sera servi via Varnish doit être configurée pour écouter le port ci-dessus. Voici la configuration de notre site de test (/etc/httpd/conf.d/tecmint.lan.conf).

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/tecmint.lan/"
    ServerName www.tecmint.lan
    # Other directives here
</VirtualHost>

Important : Pour éviter que la page de test du serveur HTTP Apache par défaut ne soit utilisée, commentez toutes les lignes du fichier /etc/httpd/conf.d /welcome.conf ou supprimez simplement le fichier.

rm /etc/httpd/conf.d/welcome.conf 

10. Ensuite, testez la syntaxe de configuration httpd pour détecter d'éventuelles erreurs. Si tout va bien, redémarrez le service httpd pour appliquer les nouvelles modifications.

httpd -t
systemctl restart httpd

Configuration de Varnish pour Systemd

11. Pour déployer Varnish devant HTTPD, il vous suffit de le configurer pour écouter les requêtes des clients dans le port HTTP par défaut 80 comme expliqué ci-dessous.

Notez que dans Varnish Cache 6.0 et versions ultérieures, vous devez définir le port sur lequel le serveur de vernis écoute dans le fichier de service Varnish pour systemd. Tout d’abord, ouvrez-le pour le modifier.

systemctl edit --full  varnish

Recherchez la ligne ExecStart, puis modifiez la valeur du commutateur -a (qui spécifie le vernis pour écouter l'adresse et le port) de :6081 à :80 comme indiqué dans la capture d'écran suivante.

Surtout, si vous ne spécifiez pas d'adresse, varnishd écoutera sur toutes les interfaces IPv4 et IPv6 disponibles et actives sur le serveur.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Enregistrez les modifications dans le fichier et quittez.

Configuration des serveurs back-end Varnish à l'aide de VCL

12. Vous devez maintenant configurer le serveur d'origine, connu dans la terminologie Varnish sous le nom de backend. C'est le serveur qui comprend HTTP, avec qui Varnish communique pour récupérer le contenu – httpd dans ce cas. Il est configuré dans le fichier de configuration principal /etc/varnish/default.vcl.

vi /etc/varnish/default.vcl 

Il existe une section de configuration backend par défaut appelée default. Vous pouvez remplacer « default » par server1 (ou tout autre nom de votre choix pour répondre aux normes de votre environnement). Par défaut, le paramètre host pointe vers le localhost, en supposant que le serveur backend s'exécute sur le localhost.

Définissez ensuite le port sur 8080 (le port que vous avez défini dans le fichier de configuration de l'hôte virtuel Apache), comme indiqué dans la capture d'écran.

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}

Si votre serveur backend s'exécute sur un autre hôte, par exemple un autre serveur avec l'adresse 10.42.1.10, alors le paramètre host doit pointer vers cette adresse IP.

backend server1 {
    .host = "10.42.1.10";
    .port = "8080";
}

Enregistrez le fichier et fermez-le.

13. Après avoir effectué toutes les modifications nécessaires concernant Varnish, rechargez la configuration du gestionnaire systemd pour refléter les nouvelles modifications dans le fichier de service Varnish et redémarrez également le service Vernis pour appliquer les modifications globales.

systemctl daemon-reload
systemctl restart varnish

14. À ce stade, Varnish et Apache devraient maintenant écouter respectivement sur les ports 80 et 8080. Vous pouvez le confirmer à l’aide de la commande socket Statistics.

ss -tpln

Étape 4 : Test du cache Varnish et de la configuration d'Apache

14. Pour tester la configuration du Varnish Cache-HTTPD, ouvrez un navigateur Web et naviguez à l'aide de l'IP ou du FQDN du serveur. comme le montre la capture d'écran suivante.

http://10.42.0.144
OR
http://www.tecmin.lan

Vérifiez ensuite si les pages Web sont servies via le Varnish Cache comme suit. Vérifiez les en-têtes HTTP en cliquant avec le bouton droit sur la page Web affichée, sélectionnez Inspecter pour ouvrir les outils de développement, puis cliquez sur l'onglet Réseau et recharger la page. Sélectionnez ensuite une demande pour afficher les en-têtes HTTP pour le confirmer, comme indiqué dans la capture d'écran suivante.

Vous pouvez également exécuter la commande curl suivante pour le vérifier.

curl -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan

Programmes utilitaires Varnish Cache utiles

15. Terminons ce guide en examinant certains des programmes utiles fournis avec la distribution Varnish Cache. Ils incluent des utilitaires pour l'administration du cache de vernis, l'affichage des enregistrements de journaux détaillés et l'affichage des statistiques de performances du vernis comme décrit ci-dessous.

vernisadm

Le premier est varnishadm qui est utilisé pour administrer une instance Varnish en cours d'exécution. Il établit une connexion d'interface de ligne de commande à varnishd. Cela peut affecter une instance en cours d'exécution de Varnish en démarrant et en arrêtant varnishd, en modifiant les paramètres de configuration, en rechargeant la VCL, en répertoriant les backends, etc.

varnishadm
> backend.list

Pour plus d'informations, lisez man vernisadm.

journal de vernis

Le programme suivant est varnishlog qui est utilisé pour accéder aux données spécifiques à une demande (c'est-à-dire des informations sur des clients et des demandes spécifiques). Il fournit de grandes quantités d’informations, il est donc généralement nécessaire de les filtrer.

varnishlog

Pour plus d'informations, lisez le man vernislog.

vernisstat

Nous avons également varnishstat (statistiques de vernis) qui est utilisé pour accéder à des statistiques globales telles que le nombre total de requêtes, le nombre d'objets, etc.

varnishstat

Pour plus d'informations, lisez le man vernisstat.

dessus vernis

Ensuite, nous avons varnishtop, un utilitaire qui lit le journal Varnish et présente une liste continuellement mise à jour des entrées de journal les plus courantes.

varnishtop 

Pour plus d'informations, lisez le man vernistop.

vernisseur

Un autre utilitaire utile est varnishhist (varnish history). L'utilitaire lit les journaux Varnish et présente un histogramme continuellement mis à jour montrant la distribution des dernières N requêtes par leur traitement.

varnishhist

Pour plus d'informations, lisez le homme vernisseur.

Voilà! Vous avez déployé avec succès le Varnish Cache pour accélérer le contenu de votre application Web diffusé à l'aide du serveur Apache HTTP sur CentOS/RHEL 8.

Si vous avez des questions sur ce sujet ou des idées à partager, utilisez le formulaire de commentaires ci-dessous. Consultez la documentation Varnish Cache 6.0 pour plus d'informations.

Si vous souhaitez activer HTTPS sur votre site, consultez notre prochain article, qui montrera comment activer SSL/TLS pour Varnish Cache à l'aide de Hitch sur CentOS/RHEL 8.