Sådan installeres Varnish Cache til Apache på CentOS/RHEL 8


Varnish Cache er en gratis open source, moderne og højtydende webapplikationsaccelerator. Det er en hurtig omvendt HTTP-proxy, der cachelager indhold for at fremskynde din webserverydelse ved at gemme webindhold i serverhukommelsen - i en cache. Det er konfigureret til at køre foran en oprindelsesserver som f.eks. Apache (HTTPD) webserver.

Når en klient anmoder om indhold, accepterer Varnish HTTP-anmodningen, sender anmodningen til originalserveren, cacher de returnerede objekter og svarer på klientanmodningen. Næste gang klienten beder om det samme indhold, vil Varnish vise det fra cachen. På denne måde reducerer det responstiden og netværksbåndbreddeforbruget på fremtidige ækvivalente anmodninger.

Varnish fungerer også som en HTTP-anmodningsrouter, webapplikations firewall, load balancer og mere. Det er konfigureret ved hjælp af det fleksible Varnish Configuration Language (VCL), der kan udvides ved hjælp af Varnish-moduler (også kendt som VMOD'er), understøtter Edge Side Includes (ESL), Gzip-kompression og dekompression og meget mere.

I denne artikel lærer du, hvordan du installerer Apache HTTPD-webserver og Varnish Cache 6 på en frisk CentOS/RHEL 8-server, herunder konfiguration af Varnish til at køre foran HTTPD-serveren.

  • En server med CentOS 8-installation
  • En server med RHEL 8-installation med aktiveret Red Hat-abonnement på dit system.

Trin 1: Installation af Apache-webserver på CentOS/RHEL 8

1. Start med at opdatere alle installerede softwarepakker på systemet som følger ved hjælp af DNF-kommandoen.

# dnf update

2. Kør derefter følgende kommando for at installere Apache HTTP-webserveren fra AppStream-lageret.

# dnf install httpd

3. Så snart installationen er afsluttet, skal du starte httpd-tjenesten, aktivere den automatisk at starte under systemstart og kontrollere dens status for at bekræfte, at den er i gang ved hjælp af systemctl-kommandoen.

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd

4. Som standard inkluderer CentOS/RHEL 8 en fuldt låst firewall (kør firewall-cmd –stat for at bekræfte). Du skal åbne adgangen til HTTP-tjenesten i firewallen for at give brugerne adgang til websteder eller applikationer, der kører via HTTP, og også genindlæse firewalld-indstillingerne for at anvende de nye ændringer.

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

Trin 2: Installation af Varnish Cache 6.4 på CentOS/RHEL 8

5. Nu hvor Apache-webserveren kører, kan du fortsætte videre med at installere Varnish Cache på systemet ved hjælp af følgende kommando.

# dnf module install varnish

6. Efter en vellykket installation kan du kontrollere den version af Varnish, der er installeret på dit system.

# varnishd -V

7. Dernæst installeres den vigtigste eksekverbare fil som/usr/sbin/varnishd. Desuden gemmes Varnish-konfigurationsfilerne under/etc/lak-biblioteket, hvor:

  • /etc/varnish/default.vcl - er den vigtigste lakkonfigurationsfil skrevet ved hjælp af VCL.
  • /etc/lak/hemmelighed - er lakens hemmelige fil.

8. Start nu lak-tjenesten, indtil videre, gør det muligt for den automatisk at starte under systemstart i tilfælde af en serverstart, og kontroller dens status for at sikre, at den kører som følger.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

Trin 3: Konfiguration af Apache til at arbejde med Varnish Cache

9. Nu er det tid til at konfigurere Varnish Cache til at køre foran Apache-tjenesten. Apache-serveren er som standard konfigureret til at lytte på port 80, dette er defineret i hovedkonfigurationsfilen /etc/httpd/conf/httpd.conf.

Åbn den til redigering ved hjælp af din yndlings teksteditor.

# vi /etc/httpd/conf/httpd.conf

Kig efter parameteren Lyt. For at køre Varnish foran Apache-serveren skal du ændre standardport 80 til 8080 (eller en hvilken som helst anden port efter eget valg) som vist i følgende skærmbillede.

Denne port tilføjes som backend-serverens port i Varnish-konfigurationsfilen senere.

Den virtuelle værtskonfiguration for hvert websted/applikation, der fungerer via Varnish, skal også konfigureres til at lytte til ovenstående port. Her er konfigurationen til vores testwebsted (/etc/httpd/conf.d/tecmint.lan.conf).

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

Vigtigt: For at forhindre, at standard Apache HTTP-server-testside nogensinde bliver brugt, skal du kommentere alle linjerne i filen /etc/httpd/conf.d/welcome.conf eller blot slette filen.

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

10. Test derefter httpd-konfigurationens syntaks for eventuelle fejl. Hvis det er OK, skal du genstarte httpd-tjenesten for at anvende de nye ændringer.

# httpd -t
# systemctl restart httpd

11. For at implementere lak foran HTTPD skal du blot konfigurere det til at lytte til klientanmodninger i standard HTTP-port 80 som forklaret nedenfor.

Bemærk, at i Varnish Cache 6.0 og højere skal du indstille portlakkserveren, der lytter til i Varnish-servicefilen til systemd. Først skal du åbne den til redigering.

# systemctl edit --full  varnish

Se efter linjen ExecStart, og skift derefter værdien for switchen -a (som specificerer lakken lytter til adressen og porten) fra : 6081 til : 80 som angivet i det følgende skærmbillede.

Det er vigtigt, at hvis du ikke angiver en adresse, vil varnishd lytte på alle tilgængelige IPv4- og IPv6-grænseflader, der er aktive på serveren.

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

Gem ændringerne i filen, og afslut.

12. Nu skal du konfigurere originalserveren, der i Varnish-terminologi er kendt som en backend. Det er serveren, der forstår HTTP, som Varnish taler med, for at hente indhold - httpd i dette tilfælde. Det er konfigureret i hovedkonfigurationsfilen /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Der er en standardkonfigurationsdel for backend kaldet standard. Du kan ændre “standard” til server1 (eller et hvilket som helst navn efter eget valg for at opfylde dine miljøstandarder). Som standard peger værtsparameteren til localhost, forudsat at backend-serveren kører på localhost.

Indstil derefter porten til 8080 (den port, du definerede i Apache virtual host-konfigurationsfil) som vist på skærmbilledet.

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

Hvis din backend-server kører på en anden vært, for eksempel en anden server med adresse 10.42.1.10, skal værtparameteren pege på denne IP-adresse.

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

Gem filen, og luk den.

13. Når du har foretaget alle de nødvendige ændringer vedrørende Varnish, skal du genindlæse systemd manager-konfigurationen for at afspejle de nye ændringer i Varnish-servicefilen og også genstarte Varnish-tjenesten for at anvende de samlede ændringer.

# systemctl daemon-reload
# systemctl restart varnish

14. På dette tidspunkt skal Varnish og Apache nu lytte på henholdsvis port 80 og 8080. Du kan bekræfte dette ved hjælp af sokkelstatistik-kommandoen.

# ss -tpln

Trin 4: Test af Varnish Cache og Apache Setup

14. For at teste Varnish Cache-HTTPD-opsætningen skal du åbne en webbrowser og navigere ved hjælp af serverens IP eller FQDN som vist i følgende skærmbillede.

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

Kontroller derefter, om websider serveres via Varnish Cache som følger. Kontroller HTTP-overskrifterne ved at højreklikke på den viste webside, vælg Inspicer for at åbne udviklerværktøjerne, klik derefter på fanen Netværk og genindlæs siden. Vælg derefter en anmodning om at få vist HTTP-overskrifter for at bekræfte dette som vist i følgende skærmbillede.

Alternativt kan du køre følgende curl-kommando for at bekræfte den.

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

Nyttige Varnish Cache Utility-programmer

15. Lad os afslutte denne guide med at se på nogle af de nyttige programmer, som Varnish Cache-distributionen kommer med. De inkluderer hjælpeprogrammer til administration af lakcache, visning af detaljerede logposter og visning af statistikker over lakens ydeevne som beskrevet nedenfor.

Den første er varnishadm, der bruges til at administrere en kørende Varnish-forekomst. Den opretter en kommandolinjeforbindelse til lak. Det kan påvirke en kørende forekomst af Varnish ved at starte og stoppe lak, ændre konfigurationsparametre, genindlæse VCL, angive backends og mere.

# varnishadm
> backend.list

For mere information, læs mand varnishadm.

Det næste program er varnishlog, der bruges til at få adgang til anmodningsspecifikke data (dvs. oplysninger om specifikke klienter og anmodninger). Det giver store mængder information, og det er derfor normalt nødvendigt at filtrere det.

# varnishlog

For mere information, læs mandens laklog.

Vi har også lakstatistik (lakstatistik), der bruges til at få adgang til overordnede statistikker såsom antallet af samlede anmodninger, antal objekter og mere.

# varnishstat

For mere information, læs mandslakstat.

Derefter har vi varnishtop, som et værktøj, der læser Varnish-loggen og præsenterer en løbende opdateret liste over de mest almindeligt forekommende logposter.

# varnishtop 

For mere information, læs mandens lakeplade.

Et andet nyttigt værktøj er varnishhist (lakshistorie), der læser Varnish-logfiler og præsenterer et kontinuerligt opdateret histogram, der viser fordelingen af de sidste N-anmodninger ved deres behandling.

# varnishhist

For mere information, læs mandslakisten.

Der har du det! Du har med succes implementeret Varnish Cache for at fremskynde dit webapplikationsindhold, der serveres ved hjælp af Apache HTTP-server på CentOS/RHEL 8.

Hvis du har spørgsmål om dette emne eller tanker at dele, skal du bruge feedbackformularen nedenfor. Se dokumentationen til Varnish Cache 6.0 for at få flere oplysninger.

Hvis du vil aktivere HTTPS på dit websted, skal du tjekke vores næste artikel, som viser, hvordan du aktiverer SSL/TLS til Varnish Cache ved hjælp af Hitch på CentOS/RHEL 8.